Martian框架的第一个网关组件(Martian-gateway 1.0.0),功能较少,目前只实现了以下功能:
- 可以从zookeeper获取微服务接口,进行请求的转发
- 请求转发是负载均衡的方式进行
具体的使用方法
一、引入以下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());
}
}
完成以上三步,一个网关就搭建完成了
接下来如何使用呢
很简单,一般发起一个请求,分两种场景:
- 希望服务器返回JSON格式数据(大部分场景)
- 希望服务器返回一个文件流(文件下载,excel导出,等场景)
返回JSON格式数据
请求方式如下
http://IP:端口号,或者域名/router/要请求的微服务name/微服务上的MarsApi方法名
返回一个文件流
请求方式如下
http://IP:端口号,或者域名/download/要请求的微服务name/微服务上的MarsApi方法名
注意事项
因为目前只是第一版,所以功能还不是很完善,所以造成了以下缺陷:
- 返回的文件流,没有文件名的后缀,所以需要前端重命名一下
- 目前只实现了请求转发功能,但是这个转发是带负载均衡的