分布式服务框架的服务治理

服务治理的历史变迁:

第一代:以IBM为首的SOA解决方案提供商退出的针对企业IT系统的服务治理框架,主要聚焦在对企业IT系统中异构服务的质量管理、服务发布审批流程和服务建模、开发测试以及运行生命全周期的管理

第二代:以阿里为首的基于同一分布式框架的全新服务治理理念诞生,聚焦于对内部同构服务的线上治理,保障线上服务的运行质量

微服务架构+云端服务治理2013年至今,随着云计算和微服务架构的发展,以AWS为首的基于微服务架构+云服务化的云端服务治理体系诞生

传统的SOA主要包括:

1)服务建模:验证功能需求和业务需求,发现和评估当前服务,服务建模和性能需求,开发治理规划

2)服务组装:创建服务更新计划,创建和修改服务以满足业务需求,按照一定策略评估服务,批准组装完成

3)服务部署:确保服务的质量,措施包括性能测试,功能测试和满足度测试,批准服务部署

4)服务治理:早整个生命周期内管理和监控服务,跟踪服务注册表中的服务,根据服务治理等级协议(SLA)上报服务的性能KPI数据进行服务质量管理

缺点:

1)分布式服务框架的发展,内部服务框架需要统一,服务治理也需要适应新的架构,能够由表及里对服务进行细粒度的控制

2)微服务架构的发展和业务规模的扩大,导致服务规模量变引起质变,服务治理的特点和难度也随之发生变化

3)缺少服务运行时动态治理的能力,面对突发的流量高峰和业务冲击,传统的服务治理在响应速度,恢复故障等方面存在不足,无法敏捷的应对业务需求


分布式服务框架的服务治理:

是面对互联网业务的服务治理,聚焦在对内部采用统一服务框架进行服务化的业务运行太、细粒度的敏捷治理体系

治理对象:基于分布式服务框架开发的业务服务,与协议本身无关,治理的可以是SOA服务,也可以是基于内部服务框架私有协议开发的各种服务

治理策略:针对互联网业务的特点,eg 突发的流量高峰、网络延时、机房故障等,重点针对大规模跨机房的海量服务进行运行态治理,保障线上服务的高SLA,满足用户的体验,常用的策略包括限流降级、服务嵌入迁出、服务动态路由和灰度发布等

AWS云端微服务治理:AWS作为全球最大的云计算解决方案提供商,在微服务云化开发和治理方面提供了非常多的经验,eg:

1)全公司统一服务开发环境,统一简化服务框架(Coral Service),统一运行平台,快速高效开发

2)服务后端应用服务化,系统由多想服务化组件构成

3)服务共享、原子化、重用

4)服务由小研发团队负责服务开发测试部署和治理,运维整个生命周期支撑

5)高度自动化和Dev&Ops支持,一键部署和回退

6)超大规模支持:后台几十万个服务,成千上万个开发者同时使用,平均每秒有1~2个服务治理

7)尝试基于Docker的容器部署微服务

8)服务治理的核心是:服务性能KPI统计、告警、服务健康管理、灵活的弹性伸缩策略、故障自动迁移、服务限流和服务降级等多种治理手段,保障服务高质量运行


应用服务化之后面临的挑战:

1)跨团队协作问题:服务变多之后一般会分小组开发,涉及跨团队联调,如何快速找到开发者 ? 当前系统提供了那些服务,服务接口定义和参数是什么?服务使用示例,注意事项和约束是什么?开发完成之后调试,消费者A和服务提供者S进行联调会存在2个问题:a. 提供者S分布式部署,存在多个服务实例,路由动态分发,没办法确定会路由到哪一台服务器  b.若打断点,其它的消费者可能也正在使用,调试会被干扰,需要通知所有的开发者不要调用服务S,有点儿不太现实

2)服务的上下线管控:由于服务的发布很简单,上线会越来越随意,导致有时候架构师都不知道上线了什么服务,甚至出现重复服务,而服务下线比上线还要困难,因为业务调整,需要 结束某些服务的生命周期,服务提供者有时会直接将服务下线,导致依赖该服务的应用不能正常工作,应该是先将该服务标识为过时,然后通知调用方尽快修改调用,通过性能KPI接口和调用链分析,确认没有消费者再停用服务


服务安全:针对内部应用,服务框架常采用长连接管理客户端连接,针对非信任的第三方应用,或者而已消费者,需要具备黑白名单访问机制,防止客户端非法链路过多,占用大量的句柄,线程和缓存资源,影响服务提供者的质量

服务高SLA保障:业务高峰期,系统资源会成为瓶颈,需要对非核心服务 eg 用户评论、粉丝管理、积分管理等服务做限制,保障核心服务的正常运行,服务框架需要考虑如何关停非核心服务又不影响其它的合设服务


快速定位故障:服务化之后一个业务流程底层可能涉及成千上百的服务调用,任何一个服务发生故障都可能导致业务不可用,由于分布式部署,部署在成千上百台机器上,若仍使用原来的故障定位手段效率会非常低,服务化带来的价值也会大打折扣


服务治理非目标:

1)防止业务架构腐化:通过服务注册中心对服务强弱依赖进行分析,结合运行时服务调用链条分析,梳理不合理的依赖和调用路径,优化服务架构,防止代码腐化

2)快速故障定界:通过Flume等分布式日志采集框架,实时收集调用链日志,服务性能KPI数据,服务接口日志,运行日志等,实时汇总和在线分析,集中存储和展示,实现故障的自动发现,自动分析和在线条件检索,方便运维和开发人员进行快速问题定位

3)服务微管控:较细粒度的进行运行期服务治理,包括限流降级,服务迁入迁出、服务超时控制、智能路由,  统一配置、优先级调度和流量迁移等,提供方法级治理和动态生效功能,通过一系列的细粒度的治理策略,在故障发生时可以多管齐下,在线调整,快速回复业务

4)服务生命周期管理:包括服务的上线审批、下线通知,服务的在线升级以及上下线的服务文档库的建设


常见的服务治理:

服务降级、服务流控、服务动态扩展、超时控制、优先级调度、负载均衡策略调整、分组调整、等



你可能感兴趣的:(无事闲翻书)