嗡汤圆的Spring Cloud自学(综合):可以计算加减乘除的分布式计算平台~

说明

该平台唯一的功能就是提供两个数的加减乘除功能,但综合运用了该系列博客的前三篇内容:

  • 使用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号节点后,该节点又重新投入到服务中来,该过程并不需要人为干预,均是自动完成的。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/tzdwsy/article/details/52823384