• 优化方案


    脱离场景谈架构,都是耍流氓! --出自:孙玄老师的名言(前58集团技术委员会主席)
    其中SOA框架和微服务框架区别

    https://www.springcloud.cc/

    一、概要

    1. 计划进行服务化改造的背景、前景
    我们目前虽然也是按照不同维度来拆分多个不同的服务,来实现微服务,我们经常
    会出现服务与服务之间调用卡壳,或者是其中一个服务出现问题,
    那么依赖的服务直接被拖垮了,导致服务不可用。
    基于以上问题(使用HTTPClient调用相关服务),我们引入SpringCloud 成熟的组件来应对以上的这些问题。
    
    Spring Cloud 是 Java 领域最适合做微服务的框架。相比于其它框架,Spring Cloud 
    对微服务周边环境的支持力度最大。对于中小企业来讲,使用门槛较低。
    Spring Cloud 是微服务架构的最佳落地方案。
    处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。
    解决冗余问题 – 冗余问题经常发生在分布式系统中。
    负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。
    减少性能问题 – 减少因各种操作开销导致的性能问题。
    
    1. 当前系统开发、维护、排障遇到的困难/弊端/工时成本
    目前系统开发过程中风格不统一,结构也有所不统一,这样一旦有人离职,接手别人手里
    的代码,要从头开始找,如果出了问题,需要紧急修复,那必然要花费大量的时间是花在
    找代码等问题上,可能改问题只需要短短的几分钟时间,如果说引入Cloud组件中链路追
    踪,那么可以通过监控UI 来查看请求的链路(服务之间的调用、依赖关系等)
    
    另外我们选择使用目前国内市场上比较主流的服务治理架构(dubbo)来作为每个微服务之间
    通讯的组件,替代Spring Cloud 原生的Feign,因为Feign的底层协议是(HTTP),而dubbo 
    底层走的是TCP协议.
    
    Dubbo Spring Cloud 完全地保留了原生 Spring Cloud 服务调用特性,不过 
    Dubbo 服务治理的能力是 Spring Cloud Open Feign 
    所不及的,如高性能、高可用以及负载均衡稳定性等方面。因此,建议开发人员将 
    Spring Cloud Open Feign 或者 @LoadBalanced RestTemplate 迁移为 Dubbo 
    服务。考虑到迁移过程并非一蹴而就,因此,Dubbo Spring Cloud 提供了方案,即 
    @DubboTransported 注解。该注解能够帮助服务消费端的 Spring Cloud Open Feign 
    接口以及 @LoadBalanced RestTemplate Bean 底层走 Dubbo 调用(可切换 Dubbo 
    支持的协议),而服务提供方则只需在原有 @RestController 类上追加 Dubbo @Servce 注解(需要抽取接口)即可,换言之,在不调整 Feign 接口以及 RestTemplate URL 
    的前提下,实现无缝迁移。如果迁移时间充分的话,建议使用 Dubbo 
    服务重构系统中的原生 Spring Cloud 服务的定义。
    

    Spring Cloud Alibaba
    参考duubbo官网

    1. 预期服务化改造完成后的优点
    便于排查问题,能够快速锁定问题.
    服务之间的调用更清晰,维护成本降低。
    
    1. CAP在微服务中的应用
    在一个分布式系统中(指互相连接并共享数据的节点集合)中,当涉及到读写操作时,只能保证一致性(Consistence)、
    可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。
    
    在微服务的构建中,永远都逃离不了CAP理论,因为网络永远不稳定,硬件总会老化,软
    件可能出现Bug,所以分区容错性在微服务中是躲不过的命题。
    
    可以这么说,只要是分布式,只要是集群都面临着 AP 或者 CP 
    的选择,但你很贪心的时候,既要一致性又要可用性,那只能对一致性作出一点妥协,
    也就是引入了 BASE 理论,在业务允许的情况下实现最终一致性。
    
    究竟是选 AP 还是选 CP,真的在于对业务的了解,例如金钱,库存相关会优先考虑 CP 
    模型,例如社区发帖相关可以优先选择 AP 
    模型,这个说白了基于对业务的了解是一个选择和妥协的过程。
    

    CAP原理在微服务中的应用

    BASE、CAP

    我们改造的目标是能够使我们每个微服务职责相对独立,服务的监控和维护更加清晰明了,服务之间的调用链路能够很直观的查看.并且引入服务的流控、熔断、降级,来保证服务的高可用.引入网关来实现服务的统一管理.(具体看针对Spring Cloud Gateway文章)

    Spring Cloud Alibaba我们改造的方向

    本次项目使用(Spring Cloud + Spring Cloud Alibaba)来实现服务改造(Spring Cloud Gateway + Nacos + Dubbo + Sentinel + Spring Cloud Sleuth)

    本次改造计划,打算将日志存储在ES中,也为公司剩下一笔阿里的日志服务Money. O(∩_∩)O哈哈~

    Other

    技术选型对比

    二、实施计划

    1. 架构重构?
    2. 初期改造方向?
    3. 制定实施计划方案?
  • 相关阅读:
    图文描述Vs2005制作WEB应用程序安装包的方法[E8.Net正式用户可以找我们获取全部代码参考]
    20080517 ITIL本地化实施沙龙活动记录
    制作 类似 google 下拉框的用户自定义控件的实现思路
    SQL SERVER 2005 Reporting Services 部署报表管理站点在 有主机头的站点上时的处理方法
    五月 我们都是四川人
    通过VML技术 及 XSLT技术实现WEB图形化处理界面.
    工作流技术杂谈 2008
    Visual Studio 2005 通过静态变量及可系列化的HASHTABLE变量优化工厂模式(Factory)的效率,提升性能(E8.Net工作流应用系统优化系列四)
    2008年4月21日 QQ群关于服务级别管理的聊天记录,欢迎加入ITIL与服务管理新QQ群:58342347
    Tapestry5之Application Module
  • 原文地址:https://www.cnblogs.com/joinlemon/p/14341093.html
Copyright © 2020-2023  润新知