首先,先说下服务治理的边界,本质上任何能提升服务可用性,性能,让服务更稳定等等,只要是能让服务运行的更好,都属于服务治理的范畴。服务治理比较常见的话题:服务发现,服务变更管理,服务监控,服务扩容缩容,服务自我保护,服务降级,服务授权防攻击,服务上线验证和灰度发布,服务问题定位和跟踪,服务负载,服务实例的调度等等。

微服务是最近几年才兴起的概念。简单点讲,就是把复杂的大应用,解耦拆分成几个小的应用。这样做的好处有很多。比如,这样有利于团队组织架构的拆分,毕竟团队越大协作的难度越大;再比如,每个应用都可以独立运维,独立扩容,独立上线,各个应用之间互不影响。不用像原来那样,一个小功能上线,整个大应用都要重新发布。

不过,有利就有弊。大应用拆分成微服务之后,服务之间的调用关系变得更复杂,平台的整体复杂熵升高,出错的概率、debug 问题的难度都高了好几个数量级。所以,为了解决这些问题,服务治理便成了微服务的一个技术重点。

所谓服务治理,简单点讲,就是管理微服务,保证平台整体正常、平稳地运行。服务治理涉及的内容比较多,比如鉴权、限流、降级、熔断、监控告警等等。这些服务治理功能的实现,底层依赖大量的数据结构和算法。

关于微服务框架,目前国内常见的是SpringCloud技术栈Dubbo技术栈,前者多为rest服务(http),后者多为RPC服务,一般来说REST 服务调用性能会比 RPC 低一些,注意本质上来讲rest也可以认为是一种RPC。技术栈支持上来说,SpringCloud由于引入了很多依赖组件,特别是netflix的那一套组件,上手简单,但是随着最近几年阿里对于Dubbo社区的投入增加,Dubbo相关组件也慢慢活跃起来,比如nacos、sentinel、rocketmq、seata这些,最近两年也搞了一个Spring Cloud Alibaba,其中就集成了上述所说的几个组件。

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。

啥 啥 啥,服务治理是个啥-LMLPHP

关于限流熔断降级,目前开源框架有hystrix和sentinel。比如Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。关于下流,一般会根据不同场景进行不同的限流操作,常见的有令牌桶和漏斗限流算法。

啥 啥 啥,服务治理是个啥-LMLPHP

关于Sentinel可以参考如下文章:

关于配置中心,目前常见的有Apollo、Disconf、Nacos,其中Apollo是目前国内使用较多的,Nacos目前也是阿里主推的,其发展潜力也不容小觑。关于注册中心,大都是基于AP或者CP来实现,比如常见的Eureka、Nacos、Etcd等等。

对于分布式事务来说,目前比较火的是阿里开源的Seata-其致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案,github地址:https://github.com/seata/seata。关于seata这块,可以参考以下文章:

服务治理内容涉及较多,在这里就不一一展开赘述了,感兴趣的小伙伴可以根据文章开头的内容自行google即可。

 推荐阅读 

02-02 10:40