分享

系统微服务化,始于拆分,重在治理

 莫问南北 2020-02-22

一、 微服务架构的优与劣
微服务架构最近几年发展迅猛,尤其是从2017年以来在业界异常火爆。不论是基于云原生技术的新应用,还是已有的复杂单体应用,都在朝着微服务化的方向进行构建和改造。
  微服务架构带来了很多好处,比如支持小团队快速迭代,引入的复杂度可控,支持独立的运维部署,可按照不同业务压力有针对性的扩缩应用实例,可灵活的组合各服务,支持采用不同的技术栈研发等等。
  同时,企业在进行应用微服务拆分时也出现了很多问题。例如系统部署复杂度增加,服务间调用复杂,本地数据库事务无法保证整体数据一致性,服务依赖关系不够清晰,配置管理难度增大等等。
  可见,微服务的引入有利有弊。如果不能有效的解决其带来的问题,反而会带来额外的负担。在本文中,我们一起分析下在微服务化拆分后,带来的各种问题以及相应的解决办法,同时一起来感受下微服务治理平台一站式解决方案带来的强大体验。

二、系统微服务化,始于拆分,重在治理
微服务并不是解决问题的“银弹”
如何针对原有的复杂单体应用进行合理的拆分,是应用微服务化需要考虑的第一件事。
  微服务拆分带来了一系列的问题,比如:
  1)服务间如何进行有效便捷的相互调用;
  2)分散的日志与配置文件如何管理;
  3)如何针对微服务特殊指标进行监控;
  4)调用链路查看与服务依赖计算如何进行;
  5)服务的稳定性如何控制;
  6)数据的最终一致性怎样保证;
  在这里插入图片描述
这些问题中,甚至有些问题被认为是业界公认的难点。如何完美的解决这些难题,就是微服务治理平台需要面对的任务。
微服务拆分,要有自己的理论依据
  微服务拆分,有其特殊的拆分原则和理论依据。按照这些规范拆分出的微服务应用,最终才能更加有效的组合在一起,发挥整体威力。
  在这里插入图片描述
  面对复杂的业务架构时,DDD(领域驱动设计)理论和微服务拆分很好的结合在一起。它通过分层、领域模型、上下文、事件、聚合等,对业务系统进行设计、拆分;同时,我们也有康威定律、AKF等理论的支持。再有就是一些项目上的落地的实践经验,如《微服务7步设计法》等,也可以提供很好的借鉴。
  通过这些理论依据和实践经验,可以帮助大家按照单一职责、小粒度、小团队等原则拆分服务,同时避免双向和循环依赖。但是只有这些理论基础是远远不够的,任何一个业务应用的微服务拆分,都需要和具体的业务场景相结合;其具体的拆分任务需要由系统使用者、业务架构师、技术架构师共同参与,合理的规划,避免纸上谈兵和过度设计。
拥有一套适合自己的RPC框架,才能解决微服间调用的根本问题
  大家都清楚的一个设计原则是,各服务要保持高内聚、低耦合。但无论如何,既然是微服务化拆分,那么一定会涉及到服务间的相互调用。服务拆分完成后需要考虑的,就是如何解决服务间相互通信的问题。
  RPC调用,是目前业界公认的成熟解决方案。业界较为常用的RPC框架包括Thrift、gRPC、Dubbo、SpringCloud等,同时也有一些大型互联网公司提供的服务治理平台及RPC框架,如阿里云的EDAS、百度的sofa-pbrpc、新浪的motan、京东的jsf等等。
  各大互联网公司都在努力开发适合自身业务,适配自身体系下其他技术平台的微服务治理平台。微服务治理平台不是一个独立的系统,需要和监控系统、运维系统、基础设施配套,发挥治理的能力。
  所以,拥有一套适合自身的RPC框架,将其嵌入到服务治理平台中,和其他的技术框架结合使用,是解决服务间调用的根本方法。
  用友云平台也提供了一套适合企业级服务的微服务治理平台IRIS,与技术平台的其它产品结合,共同提供一站式服务。其核心的SDK已经经历了多个版本的迭代和完善,提供丰富、实用的功能。
  在这里插入图片描述
微服务拆分后的配置管理,就上配置中心
  配置文件,是业务应用运行的关键依赖。各个应用往往通过各种配置文件来定义中间件连接地址、连接池设置、业务组件SDK的调用地址、各开关参数等等。
  在单体应用中,配置文件个数不多,且部署相对简单,通过运维和实施人员的手工维护是可以完成的。但是在微服务化拆分后,应用个数增多,且每个应用会部署多套环境、多个实例,这样配置文件会成倍的增长。如何有效的管理和维护各种配置,就成了一个难题。
  配置中心的出现,使得问题迎刃而解,通过配置中心,可以集中的可视化的管理各个微服务应用的配置文件,并以不同的环境、不同的版本来加以区分。系统部署时,根据不同环境和版本的需要,从配置中心拉取所需的配置。
  在这里插入图片描述
  用友云技术中台,提供完整的配置中心功能,并和开发者中心的DevOps结合在一起,提供配置文件自动提取,配置可视化管理,容器启动时动态拉取等功能,全生命周期的对配置进行管控,解决了开发和运维人员难于对配置进行管理的问题。
  在这里插入图片描述
针对性的微服务监控和链路查看,必不可少
  微服务间通过RPC框架进行调用后,使得远程服务的暴露和调用变的简单。但是,各个服务间的依赖关系也会随之变的错综复杂。在系统运行态,一旦业务报错,就难以在完整链路的各个环节中快速定位问题,系统维护人员排查问题也变得困难。
  我们希望能有一套完整的监控系统,能够实时的观察到各个业务调用链路的流量,并能快速的对报错的节点进行查看,并进行错误堆栈的分析。从微服务监控系统中,维护人员可以一目了然的看各个服务的依赖关系,可以从调用日志中,快速筛选出错误信息进行问题定位。
  用友云微服务治理平台,具有对微服务关键指标进行监控的能力,其RPC框架的SDK中,内嵌了对链路日志、监控信息的采集和上报功能,配合各个后端服务对信息的收集、存储、转换、计算,再通过可视化列表或图表的方式,呈现给开发和运维人员。
  在这里插入图片描述
  相关的人员可以在监控系统中,根据SDK上报到后台的接口元数据信息,查看微服务暴露出来的远程接口、方法,查看到具体的某个方法的权限、链路、限流、依赖等信息,全方位的分析和管理API。
  在这里插入图片描述
  同时,根据SDK上报的各种监控信息和链路日志,可以查看接口下各个方法的的实时流量,调错错误堆栈、RT等信息,管理人员根据这些信息对具体的应用和API进行管控。
  在这里插入图片描述
分布式服务调用,数据最终一致性是可靠保证
  稳定性和一致性也是大家对微服务化后讨论的最多,最为关注的问题。稳定性方面,可以通过应用的无状态化、水平扩展进行集群容错,通过对服务调用方的熔断、对服务提供方的限流等措施,保证核心链路的稳定。
  用友云服务治理平台,提供适配自身RPC框架的熔断API,通过注解的方式简便的声明fallback方法进行容错式服务降级。也可以通过动态配置的方式,使系统进行自动式降级。
  但是,上述各种稳定性的措施,并不能避免业务由于网络超时、中间件宕机等个别情况造成的业务调用报错,最终导致业务数据的不一致的情况,所以如何解决数据最终一致性问题,也是服务治理平台面对的一项重要任务。
  在这里插入图片描述
  原来的单体应用中,我们可以通过本地数据库事务的ACID特性,保证业务数据的强一致性。但是经过拆分后,通常是每个微服务对应独立的DB,各个服务间通过接口进行数据交互,原来的本地数据库事务已不能应对此种情况。
  XA协议的两阶段提交方案,尚且还能够支撑类似银行业、财务类的具体场景;但对于要求高并发、高性能的新兴互联网业务,其并非擅长。为了保证强一致性,如果采用跨库的分布式数据库事务,则会导致出现极低的性能。
  在此种情况下,衍生出了一些其他的方案。如基于MQ的最大努力通知型的方案,保证了消息的一定可达,是业务向前恢复的极佳落地方案。再如TCC方案,也提供业务回滚逻辑介入的功能,可以让业务开发人员参与,编写回滚方法达到向后恢复的目的。
  在这里插入图片描述
  用友云微服务治理平台,提供基于MQ的异步可靠消息组件EOS、也提供基于TCC理论的相关SDK,并无缝的与RPC框架结合,使得业务开发人员可以快捷的开发回滚逻辑。同时,治理平台提供对异常调用而导致的不一致数据进行监控的功能,可以可视化的查看报错环节,并在云端进行管控和重试。
  在这里插入图片描述
在这里插入图片描述
微服务,重在治理
  服务治理平台的“治”也需要针对上述的各个难点展开。业界的各种微服务治理平台,也都针对如下几个大的方面来进行的。
  在这里插入图片描述
  在微服务的复杂的调用关系网中,如果把各个微服务应用比作一个站点或者地点,那么服务间的RPC调用,就可以比作联通各个站点的交通网;相互间调用使用RPC框架之后,我们就可以说搭建好了这个交通网,但是其能否稳定高效的运行是个大问题。这个复杂的交通网如何在运行过程中不出事故、不堵塞,即使发生事故后能够快速的定位、排查等,都是需要有效的“治理”的问题。
  在这里插入图片描述
  此时的服务治理平台,就类似交通治理中的指挥中心或者监控中心。我们对微服务的RPC调用过程中,进行配置管理、调用监控、链路查看、错误排查、流量限制、一致性保证等等操作,都是类似交通管控中的服务的管控。在微服务化的大趋势下,一套适合的微服务治理平台,对系统的管控和治理,显得尤为重要。
在这里插入图片描述

三、用友云服务治理平台,正确的选择
用友云微服务治理平台技术架构
  用友云的微服务治理平台,专注于对上述的问题进行研究和解决。核心的RPC框架SDK作为基础,服务注册中心提供服务的注册和发现功能;独创的微服务元数据管理思想,有效的抓取出微服务应用中暴露的各个远程接口和方法。后续的各种统计分析、链路管理、限流权限等都是基于此。
  在这里插入图片描述
  后台有配置中心、监控系统、计算系统的辅助,前端有各种控制台门户对外展示,整体对客户提供服务。
  在这里插入图片描述
微服务治理平台的特色与亮点
  ·企业服务的API对外暴露,API Link 与 微服务更配;
  ·应用的服务拆分, DDD 与微服务更配;
  ·系统的DevOps、容器化,开发者中心与微服务更配;
  ·企业数字化、系统的微服务化,用友云微服务治理平台与您更配。

四、用友云技术中台,带给您微服务一站式解决方案
企业数字化,各个企业都在构建自己的技术中台。中台中的各个模块需要使用微服务的方式进行组织和协调。用友云致力于为企业提供完整的数字化解决方案,用友云技术中台是用友云实现目标的有力的底层技术保障。
  用友云平台下的服务治理平台,通过不断的创新和积累,形成了具有自身特色的完整解决方案。它以核心的RPC框架IRIS作为依托,以服务注册发现、限流、配置中心、链路追踪、一致性组件等作为保证,并且和API Link、PaaS平台等结合,一站式的提供全套微服务解决方案。
  微服务治理平台,让应用微服务化变的如此简单。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多