美文网首页
微服务 18:总览(上)

微服务 18:总览(上)

作者: _River_ | 来源:发表于2021-04-18 21:54 被阅读0次

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

    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

    相关文章

      网友评论

          本文标题:微服务 18:总览(上)

          本文链接:https://www.haomeiwen.com/subject/dwtblltx.html