说明
该平台唯一的功能就是提供两个数的加减乘除功能,但综合运用了该系列博客的前三篇内容:
- 使用spring-config记录加减乘除的标志位定义:plus,minus,times,div。
- 使用eureka管理服务
- 建立一个计算服务项目,提供加减乘除的计算功能
- 建立一个API代理进行负载均衡处理和API熔断处理
- 建立一个hystrix-dashboard提供接口熔断监控
平台建立的方式和代码实现不再详细描述。本文仅用于记录与展示该平台的运行效果。
平台架构如下:
测试说明
接口调用说明
输入三个参数分别微:a,b,calFlag[plus, minus, times, div],接口会根据标志的不同分别给出两个数的相应计算结果。
平台启动
- 按顺序启动config-server, eureka-server, cal-node-1, cal-node-2, api-proxy, hystrix-dashboard这几个项目。
- 启动客户端模拟负载,按照一定的频率发起随机计算请求。
模拟负载的代码如下:
public static void main(String[] args) {
String[] flags = new String[]{"plus", "minus", "times", "div"};
while(true){
try {
System.out.println("TIME:"+new Date()+" -> "+HTTP.get("http://localhost:8080/calgate/cal?a="+new Random().nextDouble()+"&b="+new Random().nextDouble()+"&calFlag="+flags[new Random().nextInt(4)]));
Thread.sleep(50);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行效果
首先先说明一下演示屏幕中各窗口的对应应用
以下截图均是GIF动图,考虑到CSDN博客的2M图片大小限制,做了压缩和剪切。
正常运行中
可以看到两个计算服务均有参与计算,同时客户端请求也没有出现异常。
手动关掉一个服务
手动关闭计算节点-2时,API网关对于2节点的请求出现timeout错误,但是客户端由于熔断保护的关系,并未出现异常,仅返回了服务不可用的提示,此时对于1节点的调用仍然正常。再短暂出现部分无服务提示后,eureka自动踢出了无响应的服务,API代理将所有请求全部发往计算节点1,此时应用API调用恢复正常。
重新启动计算节点
重新开启2号节点,eureka发现并自动注册2号节点后,该节点又重新投入到服务中来,该过程并不需要人为干预,均是自动完成的。