V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Joker123456789
V2EX  ›  Java

Martian 框架发布了 第一个网关组件

  •  
  •   Joker123456789 · 2020-09-26 23:15:11 +08:00 · 1197 次点击
    这是一个创建于 1525 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Martian 框架的第一个网关组件( Martian-gateway 1.0.0 ),功能较少,目前只实现了以下功能:

    1. 可以从 zookeeper 获取微服务接口,进行请求的转发
    2. 请求转发是负载均衡的方式进行

    具体的使用方法

    一、引入以下 maven 坐标

    <dependency>
        <groupId>com.github.yuyenews</groupId>
        <artifactId>mars-gateway-starter</artifactId>
        <version>最新版,具体看《组件介绍》</version>
    </dependency>
    

    二、创建一个配置类,继承 MarsGateWayConfig

    重写里面的方法,可以实现定制化配置,具体看下面的注释

    public class GateWayConfig extends MarsGateWayConfig {
    
        public CloudConfig getGateWayConfig() {
            CloudConfig cloudConfig = new CloudConfig();
            // 服务名称
            cloudConfig.setName("");
            // 尽量长一点,防止接口过多来不及发布
            cloudConfig.setSessionTimeout(10000L);
            // 请求 Mars-Cloud 接口超时时间
            cloudConfig.setTimeOut(10000L);
            // zookeeper 地址,多个地址用英文逗号分割
            cloudConfig.setRegister("");
            // 负载均衡策略(暂时只支持轮询,随机两种)
            cloudConfig.setStrategy(Strategy.POLLING);
            return cloudConfig;
        }
    
        /******** 以下方法均有默认值,如果采用默认值的话,可以不重写 ********
    
        /**
        * 端口号
        * @return
        */
        public int port(){
            return 8080;
        }
    
        /**
        * 线程池配置
        * @return 线程池配置
        */
        public ThreadPoolConfig getThreadPoolConfig(){
            return new ThreadPoolConfig();
        }
    
        /**
        * 跨域配置
        * @return 跨域配置
        */
        public CrossDomainConfig crossDomainConfig(){
            return new CrossDomainConfig();
        }
    
    }
    

    三、创建一个启动类

    这里调用的是 StartGateWay 里面的 start 方法,千万别看错了

    public class ExpStart {
    
        public static void main(String[] args) {
            StartGateWay.start(ExpStart.class, new GateWayConfig());
        }
    }
    

    完成以上三步,一个网关就搭建完成了

    接下来如何使用呢

    很简单,一般发起一个请求,分两种场景:

    1. 希望服务器返回 JSON 格式数据(大部分场景)
    2. 希望服务器返回一个文件流(文件下载,excel 导出,等场景)

    返回 JSON 格式数据

    请求方式如下

    http://IP:端口号,或者域名 /router/要请求的微服务 name/微服务上的 MarsApi 方法名
    

    返回一个文件流

    请求方式如下

    http://IP:端口号,或者域名 /download/要请求的微服务 name/微服务上的 MarsApi 方法名
    

    注意事项

    因为目前只是第一版,所以功能还不是很完善,所以造成了以下缺陷:

    1. 返回的文件流,没有文件名的后缀,所以需要前端重命名一下
    2. 目前只实现了请求转发功能,但是这个转发是带负载均衡的

    项目官网

    http://mars-framework.com/

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2649 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.