鲸技术:微服务之服务治理
Posted 中航鲸技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鲸技术:微服务之服务治理相关的知识,希望对你有一定的参考价值。
引言:
未来的企业必将成为数字化企业,每个公司都将会成为软件公司!在企业数字化转型过程中,我们的传统应用,由对内服务向互联网服务转换。企业数字化转型需要业务拆分和系统解耦,原来由大而全的系统独立完成的业务需要多个系统协作才能完成。需要理清楚系统边界、系统间有哪些服务?众多的服务被识别出来后需要有效的管理起来。
目录:
一、服务治理是什么
二、为什么需要服务治理
三、服务治理的目标
四、服务治理需要做什么
五、服务治理如何做
六、总结
什么是服务治理?要想说清楚它,要从什么是服务,以及为什么叫治理而不是管理说起。
1.1 服务是什么
服务是分布式架构下的基础单元,作为基础架构单元具有 平台独立,低耦合,自包含、可编程的特点。一个服务包括接口(Interface)、契约(Contract)和实现(Implementaition)三个部分,服务模型如下图:
1.2 治理与管理的区别
治理和管理这两个词大家并不陌生,在日常新闻中高频出现,类似“全球治理”、“社会治理”、“项目管理”。那治理和管理有哪些不同呢?我认为主要由以下几点:
治理目标是协调多方利益,管理更偏向于管理者的利益
治理需要多方共同参与,管理主体相对单一
治理关心的是政策和控制规则,而管理的含义则是政策执行和控制。管理需要治理,否则就无从知道如何运行,执行以及保护。
1.3 服务治理的本质
服务化的过程,对于大部分企业来说,更多的是边污染边治理,污染指的是因为各种因素导致妥协而欠下的技术债,治理意味着建立和执行符合计算机工程并被团队一致同意的工作指南,通过组织协调来消化这些技术债务。
服务治理的本质还是为了帮助企业在商业上获得成功而服务的。本质上任何能提升服务可用性、性能,让服务更稳定等等,只要能让服务运行的更好,都属于服务治理的范畴。服务治理比较常见的话题:服务发现、服务变更管理、服务监控、服务扩容缩容,服务自我保护、服务降级、服务授权防攻击、服务上线验证、灰度发布、服务问题定位和跟踪、服务负载等等。
2.1 企业视角
当下IT正在变得越来越重要,作为公司运作链条上的一环,公司治理框架要将自己的业务目标、业务框架向IT传递,IT不再与基础建设和业务发展关联脱节,而是要紧密联系在一起的。IT治理与服务治理随着业务发展被提上日程
2.2 技术视角
系统间的交互缺少标准、耦合严重,随着业务量的上升,故障频发,短时间无法快速定位问题,导致运营成本升高。当服务越来越多,如何协调线上允许的各个服务,保障服务的SLA,对IT建设是一个很大的挑战:
1、服务资源配置困难。服务URL配置管理变的非常困难,需要一套动态的注册和发现服务机制,使服务的配置变的透明。
2、服务间依赖关系变得错综复杂。业务需求上线依赖哪些系统,需要架构师组织全员参与分析,才能理清楚,服务下线谁来确认,生产是否有调用,哪些关联系统需要跟进修改?需要一个平台可以自动统计、分析系统和服务间的依赖关系。
3、生产容量估算困难。因为缺少调用数据统计,生产服务是否满足当前并发要求,什么时候需要扩容,扩展多少个部署节点合适?都无法评估,需要一个平台统计调用量、响应时间、成功率等,作为容量规划的参考指标。
4、级联故障,故障识别成本高。服务之间不再是扁平的对应关系,导致交易链过于复杂,一旦哪一层的某环节出了问题,会出现一片症状。这时候如何控制故障的影响面?服务是否可以功能降级?需要在注册中心定义架构体系,列明有哪些层、服务间的依赖关系明确标注(哪些是强依赖、哪些是弱依赖),避免从低层像高层依赖(以避免循环依赖),需要通过监控平台进行交易链分析对故障进行预警并辅助进行故障溯源分析。
5、沟通成本高。服务多了,沟通成本也开始上升。服务调用失败,消费方需要找服务提供者进行问题定位和联调,由于服务太多且跨团队,如何快速找到服务提供者,需要到处问人,沟通成本高。当前系统提供了哪些服务,服务接口定义和参数是什么,服务使用示例,注意事项和约束是什么,消费者很难搞清楚,需要找服务提供者咨询,服务提供者不胜其烦。所以需要登记每个服务都是谁负责的,并建立一个服务的文档库,方便检索。
6、服务部署困难。服务更新需要更新哪些台服务器,如何避免因误操作,修改了其他的服务。需要实现自动部署,所有的部署都无需人工干扰,最好是一键式部署。 为了解决以上问题,需要搭建服务治理配套设施来解决服务发现、服务部署、服务调度、服务资源管理、服务质量、服务监控、服务降级等问题。
第一代服务治理 SOA Governance:以IBM 为首的SOA解决方案提供商推出的针对企业IT系统的服务治理框架,它主要聚焦在对企业IT系统中异构服务的质量管理、服务发布审批流程的管理和服务建模、开发、测试以及运行的全生命周期管理。
第二代以分布式服务框架为中心的服务治理:基于同一分布式服务框架的全新服务治理理念,它主要聚焦于对内部同构服务的线上治理,保障线上服务的运行质量。服务治理重点也从线下转移到线上。主要目标如下:
防止业务服务架构腐化:通过服务注册中心对服务强弱依赖进行分析,结合运行时服务调用链关系分析,梳理不合理的依赖和调用路径,优化服务化架构,防止代码腐化。
快速故障定位:通过各种分布式日志采集框架,实时收集服务调用链日志、服务性能KPI数据、服务接口日志、运行日志等,实时汇总和在线分析,集中存储和展示,实现故障的自动发现、自动分析和在线条件检索,方便运维人员、研发人员进行实时故障诊断。
服务微管控:细粒度的运行期服务治理,包括限流降级、服务迁入迁出、服务超时控制、智能路由、统一配置、优先级调度和流量迁移等,提供方法级别的治理,通过一系列细粒度的治理策略,在故障发生时可以多管齐下,在线调整,快速恢复业务。
服务生命周期管理:包括服务的上线审批、下线通知,服务的在线升级,以及线上和线下服务文档库的建设。
微服务架构+云端服务治理:随着云计算和微服务架构的发展,基于微服务架构+云服务化的云端服务治理体系诞生,它的核心理念是服务自治,利用云调度的弹性和敏捷,逐渐消除人工治理。微服务架构可以实现服务一定程度自治,如: 服务独立打包、独立部署、独立升级、独立扩容。通过云计算的弹性伸缩、单点故障迁移、服务健康度管理和自动容量规划等措施,结合微服务治理,逐步实现微服务的自治。
服务治理的实施过程中最主要的目标就是风险归避和提升减轻风险的运营可预测性(operational predictability)。在制定服务治理目标时建议做到以下几点:
要明确治理路线,识别每一阶段需要的技术和组织变更
有可量度里程碑,清晰地标出并记录在每一阶段可应用的业务价值。
要做好服务治理需要围绕以4个主题展开:需要做什么、如何做、由谁做、如何度量。
四、服务治理需要做什么
这里我们围绕服务治理的目标逐个展开:
首先建立服务治理规范:《安全规范》、《服务架构设计规范》、《开发规范》、《中间件规范》、《日志规范》、《API规范》等
服务质量评估标准和指标:标准是控制服务生命周期的规则或需求。受治理的服务必须符合标准。标准很少发生变化,违反标准是不允许的,或者需要通过显示的异常情况来处理。
实现服务资产的集中管理:推动以能力为中心的服务化建设和持续优化
推动平台化建设:实现厚平台薄应用,推动业务敏捷。
五、服务治理如何做
5.1 推动的策略
在推动推动服务治理过程中,要综合考虑提升可用性与成本、研发效率的关系,避免过度治理:
上面这个图有点像力学,一方使劲,会造成另一方的倒退,如何寻找平衡,获得最高的回报率:
可用性的追求会降低研发效率
可用性的追求会增加研发和技术成本
通过流程规范的建设可以提升可用性,但是会极大降低研发效率
通过工具化和智能化实现可用性,对效率提升有帮助,也对成本节省有帮助。
随着Dubbo、Spring cloud 等开源框架的流行,在推动服务治理时要充分考虑新技术发展带来的红利。因此在选择服务治理实施路线时,优先推动工具化和自动化会是一个不错的选择。在执行服务治理过程中要通过培训或知识库更新不断引导,通过工具对服务成果进行度量和反馈。
5.2 服务治理的关键活动:
制定服务化战略和路线,在实施过程中总结最佳实践
推进服务化基础设施建设:提供支持和促进服务使用的工具和产品,这个涉及部署和运行时策略
制定所有服务都要遵从的规则(如:流程、策略,工具及管控基础设施),确保服务的一致性
服务资产管理:服务分析/识别、服务分类、服务目录等。
服务生命周期管理:开发生命周期、运维生命周期。
5.2 服务治理谁来做
在一些互联网公司都会设置站点可靠性工程师(SRE)刚,服务治理和基础治理相关工作一般由他们来负责。传统一点的公司多需要设置一个具备
核业务能力、技术能力、管理能力的服务治理领导小组。
5.3 服务治理如何度量
总结:服务治理只有起点没有终点。
服务治理涵盖的范围非常广,很多治理手段也需要在实际开发中积累和沉淀,服务治理并没有统一的标准,需要持续的改进服务的水平。
- END -
以上是关于鲸技术:微服务之服务治理的主要内容,如果未能解决你的问题,请参考以下文章