微服务 18:总览(上)

2021-04-18  本文已影响0人  _River_

至此:一个正常微服务项目的主体功能已经完成

1:项目略做优化
1:把Feign服务启动类去掉
2:把Feign服务的配置文件去掉
3:在Feign服务新增@Configuration 配置Feign的负载均衡策略
2:服务启动并调用接口测试
http://127.0.0.1:9000/nacos-consumer/seataTest/purchase/commit
注意观察数据库数据 可见已经实现了正常情况下的 分布式事务
3:调用流程
1:配置VM启动参数
    -Xms256M (设置JVM堆的初始大小)
    -Xmx256M(设置JVM堆的最大大小)
    -Dcsp.sentinel.dashboard.server=localhost:10001  (设置sentinel  限流熔断 可视化界面)
    -Dcsp.sentinel.app.type=1   (设置为网关sentinel类型   除了网关其他服务不用填 )
    -javaagent:A:\Instrument\apache-skywalking-apm-6.5.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar(设置skywalking 链路追踪界面)
    -Dskywalking.agent.service_name=gateway (设置该服务再skywalking界面的服务名称)
2:服务启动
    Gateway服务          9000     服务名称:gateway  
    Consumer服务        9991     服务名称:nacos-consumer
    Provider服务          9992     服务名称:nacos-provider(同名)
    ProviderOther服务   9993    服务名称:nacos-provider(同名)
    Storage服务           9995    服务名称:nacos-storage(同名)

3:服务注册到到Nacos
4:启动Sentinel (限流熔断功能)图形化界面
5:启动SkyWalking  (链路追踪功能)图形化界面
4:进行请求
1:外部接口请求网关
     http://127.0.0.1:9000/nacos-consumer/seataTest/purchase/commit

2:网关的Sentinel 进行限流  其可视化界面 sentinel-Dashboard可以查询

3:网关经过Nacos服务注册发现中心功能 查找到nacos-consumer的地址
    请求先经过网关服务的负载均衡处理  然后转发到nacos-consumer服务

4:在进入nacos-consumer(微服务)之后
    微服务的Sentinel 会先进行限流以及熔断的判断

5:nacos-consumer   以Jar包的方式使用Feign功能
    
6:在使用Feign请求其他服务的时候
    Feign经过Nacos服务注册发现中心功能选择调用的微服务 
    
    请求先经过Feign的负载均衡处理  然后转发到对应的服务服务
    如:服务名称nacos-provider 
        可能转发到   Provider服务  
        也可能 ProviderOther服务
    这两个服务实现了流量压力的分摊
 
    Storage服务 
    Provider服务         (服务名称nacos-provider)
    ProviderOther服务 (服务名称nacos-provider)

7:测试分布式事务seata的AT模式
    
    测试情况 1
         Consumer 先请求  Storage服务 成功 
         Consumer 后请求 Provider服务 成功

         Storage服务中Storage 库的storage表 数量减1
         Provider服务中Order   库的order表   新增1条数据
         Provider服务后续逻辑成功

      测试情况 2
        Consumer 先请求  Storage服务 成功 
        Consumer 后请求 ProviderOther服务 失败

        Storage服务中Storage 库的storage表 数量减1
        Provider服务中Order   库的order表   新增1条数据
       Provider服务后续逻辑成功(写死抛异常) 失败

        然后根据 storage表的undo_log 进行storage表 的回滚
        然后根据 order表的undo_log 进行order表 的回滚

8:可以查看数据库确认上述情况

9:结果响应到对应的界面
5:查看Sentinel 与 SkyWalking 图形界面
Sentinel 两次成功 两次失败
SkyWalking
    列表:
        快速查看响应时间(可以点击去对应的Mysql解释  有一整个Mysql的执行顺序)

    树型图
        快速理清楚调用关系:
     表格:
        快速总览整体调用的   效率与关系

项目连接

请配合项目代码食用效果更佳:
项目地址:
https://github.com/hesuijin/spring-cloud-alibaba-project
Git下载地址:
https://github.com.cnpmjs.org/hesuijin/spring-cloud-alibaba-project.git

https://github.com/hesuijin/spring-cloud-alibaba-project
Git下载地址:
https://github.com.cnpmjs.org/hesuijin/spring-cloud-alibaba-project.git
上一篇 下一篇

猜你喜欢

热点阅读