如何正确的使用微服务——服务治理篇

Posted 聊聊金融

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何正确的使用微服务——服务治理篇相关的知识,希望对你有一定的参考价值。

《工程思维》中有这样一段描述“要成为一个成功的工程师,必须拥有技术、理论和实践能力,还必须善于组织、沟通和写作。工程基础中3个最主要的技能包括:知识、经验和直觉。”,作为一个从业十余年,一直奋斗在第一线的工程师,笔者借本文总结一下服务治理的相关知识、经验以及与当下热门的微服务之间的关系。

本文共分五部分,分别从服务治理是什么、为什么、做什么、怎么做、度量标准等几个维度来总结笔者多年金融服务化经验,如果你我为同道中人,或许在这篇文章可以看到你曾经的点滴,如果你刚接触分布式和服务化相关工作,希望这里的一些观点可以增强你对手上工作的理解。


1服务治理是什么

工程师所掌握的知识,主要体现在对事物如何工作的深刻理解,所以,要想说弄清什么是服务治理,首先要清楚什么是服务,以及为什么叫治理而不是管理。

1.1 服务是什么

服务是分布式架构下的基础单元,作为基础技术架构单元具有平台独立,低耦合,自包含、可编程的特点。一个服务包括接口(Interface)、契约(Contract)和实现(Implementation)三个部分,服务模型如下图所示:

如何正确的使用微服务——服务治理篇

1.2 治理与管理的区别

  • 治理目标是协调多方利益,管理更偏向于管理者的利益。

  • 治理需要多方共同参与,管理主体相对单一。

  • 治理关心的是政策和控制规则,而管理的含义则是政策执行和控制。管理需要治理,否则就无从知道如何运行,执行以及保护。

1.3 服务治理的本质

服务化的过程,对于大部分金融业IT来说,更多的是边污染边治理,污染指的因各种因素导致的妥协而欠下的技术债,治理意味着建立和执行符合计算机工程并被组织一致同意的工作指南,通过组织协调来消化这些技术债务。 

服务治理的本质还是为了帮助企业在商业上获得成功而服务的。服务治理用于管理和指导系统服务化的过程包括:最佳实践、架构原则、治理规程、规律以及其他决定性的因素。


2为什么需要服务治理

2.1 企业视角

当下IT正在变得越来越重要,作为公司运作链条上的一环,公司治理框架要将自己的业务目标、业务框架向IT传递,IT治理与服务治理随着业务发展被提上日程。

企业是有生命的个体,所以企业和人一样,人在什么时候能够自我驱动?就是痛苦的时候。只有感到痛苦,才会有改变。当然改变有两种结果,一种是彻底放弃沉沦,另外就是一想办法规范化、工具化、自动化、智能化,跃升至下一个台阶。

2.2 IT视角

系统间交互缺少标准、耦合严重,随着业务量上升故障频发,短时间无法快速定位问题,导致运营成本升高。当服务越来越多,IT建设遇到了前所未有的挑战:

如何正确的使用微服务——服务治理篇

1、服务资源配置困难。服务URL配置管理变得非常困难,需要一套动态的注册和发现服务机制,使服务的配置变得透明 。

2、服务间依赖关系变得错踪复杂,业务需求上线依赖哪些系统,需要架构师组织全员参与分析,才能理清,服务下线谁来确认,生产是否有调用,哪些关联系统需要跟进修改?需要一个平台可以自动统计、分析系统和服务间的依赖关系。

3、生产容量估算困难,因为缺少调用数据统计,生产服务是否满足当前并发要求,什么时候需要扩容,扩展多少个部署节点合适?都无法评估,需要一个平台统计调用量、响应时间、成功率等,作为容量规划的参考指标。

4、强依赖F5/或者DNS。F5做一些结点切换的时候没办法做到实时修改,比如域名,涉及DNS的过期问题;内部DNS更明显,遇到DNS过期的问题,不能实时处理一些由于链路导致的具体问题,而且很多抖动问题都是瞬间发生,但很快又恢复,根本没有时间让运维去识别故障并做节点移除。

5、级联故障,故障识别成本高。服务之间不再是扁平的对应关系,导致交易链过于复杂,一旦哪一层的某环节的出了问题,会出现一片的症状。这时如何控制故障的影响面?服务是否可以功能降级?需要在注册中心定义架构体系,列明有哪些层、服务间的依赖关系明确标注(哪些是强依赖、哪些是若依赖,以增强关键路径上的服务的优化和容错),避免从低层向高层依赖(以避免循环依赖),需要通过监控平台进行交易链分析对故障进行预警并辅助进行故障溯源分析。

6、沟通成本高。服务多了,沟通成本也开始上升,调某个服务失败该找谁?服务的参数都有什么约定?需要登记每个服务都是谁负责的,并建立一个服务的文档库,方便检索 。

7、服务部署困难。服务更新需要更新哪些台服务器,如何避免因误操作,修改了其它的服务。需要实现自动部署,所有的部署都无需人工干扰,最好是一键式部署。

为了解决以上问题,需要搭建服务治理配套设施来解决服务发现、服务部署、服务调度、服务资源管理、服务质量、服务监控、服务降级等问题。


3服务治理的目标

3.1 基于IT治理的目标

  • 建立服务治理规范,并在服务化过程中遵循

  • 建议服务质量评估标准,推动服务的持续优化

  • 实现服务资产的集中管理,推动能力为中心的服务化建设和持续优化

  • 推动平台化建设,实现厚平台薄应用,实现业务敏捷

3.2 基于服务生命周期的目标

服务治理是对服务全生命周期的管理过程,可分为服务设计期治理、服务运行期治理和持续治理三种类型。

  • 服务设计期目标和原则:1、信息管理方面包括:架构解决方案审查、服务设计审查、开发到测试的审查、测试到交付用户的审查、对服务签发认证、确保共享、提供生命周期管理、确保服务是可发现的;2、策略管理方面包括:策略定义、策略关联应用、策略执行;3、合约管理包括:合约定义、商谈、合约合法性;4、质量管理包括:标准化的服务质量协议。

  • 服务运行期目标和原则:1、系统记录:确保和记录在运行期间不同应用或组件之间的信息交换;2、服务管理系统:控管和配置服务以及运行阶段的各种组件、根据异常状况重新配置环境;3、服务监控系统:采集运行阶段的指标、在环境中提供可视化的图表显示;4、服务质量保证系统:增强通讯中的消息和运行阶段的策略、安全性、可靠性、事务性、稽核等。

  • 持续治理目标和原则:1、服务资产管理:评估和分析服务仓库、识别服务可重用的机率、协助进行资产整合、减少冗余的服务功能

3.3 观点

服务治理的实施过程中最主要的目标就是风险归避和提升减轻风险的运营可预测性(operational predictability)。在制定服务治理目标时建议做到以下几点:

  • 要明确治理路线,识别每一阶段需要的技术和组织变更

  • 有可量度里程碑,清晰地标出并记录在每一阶段可应用的业务价值。

  • 要做好服务治理需要围绕以4个主题展开:需要做什么、如何做、由谁做、如何度量。

     

4服务治理需要做什么


这里我们围绕服务治理的目标逐个展开:

  • 服务治理规范:《服务治理管理规范》、《服务架构设计规范》、《服务管理规范》、《服务交易链路及报文规范》

  • 服务质量评估标准和指标:标准是控制服务生命周期的规则或需求。受治理的服务必须符合标准。标准很少发生变化,违反标准是不允许的,或者需要通过显式的异常情况来处理。指标是服务是度量一个服务水平的是否达标的关键要素。

    如何正确的使用微服务——服务治理篇

  • 实现服务资产的集中管理:推动以能力为中心的服务化建设和持续优化

  • 推动平台化建设:实现厚平台薄应用,推动业务敏捷。

     

5服务治理如何做

5.1 推动的策略

在传统企业,但凡咨询、规划类的都是一把手工程,服务治理也是一样,如果没有获得领导的支持,仅凭几个中层或者技术负责人是很难成事的。当然,在工程师文化较好、高度自治的工作团队,只要培养服务治理的意识,那么相关工作就会自我驱动的展开,只是推动的进程不如获得领导支持系统推进得顺利。

在推动推动服务治理过程中,要综合考虑提升可用性与成本、研发效率的关系,避免过度治理

如何正确的使用微服务——服务治理篇

上面这个图有点像力学,一方使劲,会造成另一方的倒退,如何寻找平衡,获得最高的回报率:

  • 可用性的追求会降低研发效率

  • 可用性的追求会增加研发和技术成本

  • 通过流程规范的建设可以提升可用性,但是会极大降低研发效率

  • 通过工具化和智能化实现可用性,对效率提升有帮助,也对成本节省有帮助。

随着dubbo、spring cloud、kubernetes、Service Mesh等开源框架的流行,在推动服务治理时要充分考虑新技术发展带来的红利。因此在选择服务治理实施路线时,优先推动工具化和自动化会是一个不错的选择。

在执行服务治理过程中要通过培训或知识库更新不断引导,通过工具对服务成果进行度量和反馈。

5.2 服务治理的关键活动

  1. 制定服务化战略和路线,在实施过程中总结最佳实践

  2. 推进服务化基础设施建设:提供支持和促进服务使用的工具和产品,这个涉及部署和运行时策略

  3. 制定所有服务都要遵从的规则(如:流程、策略,工具及管控基础设施),确保服务的一致性

  4. 服务资产管理:服务分析/识别、服务分类、服务目录等。

  5. 服务生命周期管理:开发生命周期、运维生命周期,

    如何正确的使用微服务——服务治理篇

开发生命周期包括:

  • 服务设计:服务范围、边界以及标识服务描述和服务契约的必备元素和可选元素。

  • 服务开发:服务开发流程的定义、最佳实践规则、推荐的工具和服务创建的项目管理实践细节和服务测试和发布的方向等。

  • 服务组装:服务协作或组合更改的规则

  • 代码整理:编码规则、范例、模板、代码检查

  • 技术债务:通过分析指导如何偿还技术债务

运维生命周期包括:

  • 确保升级服务不会影响目前的服务消费者

  • 监控服务的性能和可用性,当问题出现的时候能马上采取应对措施(扩容、限流、降级、熔断)

  • 确保安全:一个运行异常的服务可能会了整个系统,确保每个服务都可以赢多下有服务的错误请求。

  • 通过 trace跟踪,分析业务所有的调用服务关系结合日志进行问题溯源分析,以提高生产问题处理效率

5.3 服务治理的4个技术层次

在《》一文中,我们讲了构建微服务生态,根据业界实践可以分为四层(如下图所示),那么我们今天我们继续展开讨论这四个层次如何进行服务治理。

如何正确的使用微服务——服务治理篇

微服务层治理:

如何正确的使用微服务——服务治理篇

应用平台层治理:

如何正确的使用微服务——服务治理篇

通讯协议层治理:

如何正确的使用微服务——服务治理篇

硬件基础设施层治理:

如何正确的使用微服务——服务治理篇


6服务治理谁来做

在一线互联网公司都会设置站点可靠性工程师(SRE)刚,服务治理和基础治理相关工作一般由他们来负责。传统一点的公司多需要设置一个具备核业务能力、技术能力、管理能力的服务治理领导小组。

如何正确的使用微服务——服务治理篇


7服务治理如何度量



8总结


本文主要分享了服务治理的5W和路线建议,希望给已经在微服务道上的你,一些不一样的思考。


参考文献:

  • 服务治理过程演进

  • SOA服务治理方案

  • 《微服务设计》——Sam Newman 著


本文为《大话分布式》系列文章的第九篇,后面还会分享互联网金融服务化经验和微服务架构相关内容。前八篇为:




点击原文可以查看分布式系列文章


关于今天我们讨论的观点是否对你有帮助呢?你的朋友是不是也在准备开始微服务之旅呢?你把本文分享给好友,看看他如何看待微服务架构的。


END



以上是关于如何正确的使用微服务——服务治理篇的主要内容,如果未能解决你的问题,请参考以下文章

微服务系列 2:微服务化框架的模型和治理能力设计

干货:36页PPT详解余额宝背后的服务治理架构

土狼:36页PPT详解余额宝背后的服务治理架构

在容器云上部署微服务,如何实现微服务治理?

03. 微服务架构开发实战之服务治理

SpringCloud:如何使用Eureka进行服务治理?