APP下载

微服务顶级开源项目的创立和成长Apache ServiceComb

2019-06-20ZenLin刘云华马彬

软件和集成电路 2019年4期
关键词:服务化云化开源

Zen Lin 刘云华 马彬

近3年,微服务在国内得到广泛传播,尝试转型微服务架构的企业日益增多,微服务也更多地暴露在国内技术圈的聚光灯下,成为技术社交、媒体和大会演讲的热点。华为公司于2017年5月开源了ServiceComb微服务项目,并于同年11月捐赠给Apache软件基金会。2018年10月,Apache软件基金会宣布Apache ServiceComb成为Apache顶级项目。

产业发展驱动微服务技术革新

Gartner预测微服务成为主流

2016年开始,微服务成为仅次于物联网和认知计算的第三热门软件架构,在Gartner的Hype Cycle技术成熟度曲线上排名非常靠前,Gartner认为微服务在未来2~5年内成为主流。

事实上,从2011年开始,NetFlix、Amazon、Twitter等大家熟知的国际互联网巨头已经在探索微服务,并尝试在项目中予以实践,这些企业的努力为后来微服务理论的确立提供了宝贵的经验。在国内,华为、阿里是较早一批开始接触和探索微服务的企业,并在实践中孵化了优秀的微服务开发框架,帮助用户快速地实现微服务。

互联网爆炸式发展促使微服务诞生

微服务和传统SOA同属于服务化架构体系,服务化架构需要追溯到50年前至今还发挥重要作用的著名康威定律,而后,2000—2007年,电子商务大发展促进了SOA流行,互联网的爆炸式发展和普及引发了人们探索新一代服务化架构的热潮,促使了微服务的萌芽,产业发展是驱动技术革新的原动力。

微服务从萌芽伊始,至今已发展8个年头,它是产业发展到一定阶段的产物,是SOA的一种进化,随着众多国内外创新型企业对微服务的持续探索、实践,以及世界级软件架构大师系统化地丰富、阐释概念,理论、实践相结合,共同勾勒出微服务的轮廓。

云计算和企业数字化转型为微服务提供成长的土壤

如今,世界已迈进“互联网+”时代,云计算、大数据、物联网、AI等IT助力产业向智能化、万物互联和敏捷创新的数字化转型,各行各业将迎来一波革新潮。云计算成为产业转型的沃土,根据Gartner预测,到2025年85%的企业应用将运行在云上,越来越多的企业逐渐从资源云化向应用云化演进、以应用为中心提供业务能力服务,利用云能力使企业回归聚焦自身业务,节省现金流投入和运维基础设施消耗的时间成本。

在产业发展趋势下,云原生、容器化技术日臻完善,基础设施自动化、持续交付、按需虚拟化、小型自治团队、大型集群系统等实践纷纷流行,为微服务的落地提供了良好的土壤,微服务在协同云化应用快速创新、按需弹性伸缩、短平快持续交付等方面将发挥越来越积极的作用,微服务成为企业云化、全面解耦的基石。

以产品化的思维做开源项目

ServiceComb应运而生

随着云化和互联网技术的发展,企业IT部门从原来的成本中心转变成生产中心,如何将客户需求和软件价值更快的交付到客户手中,成为企业的核心竞争力之一,以前是“大鱼吃小鱼”,现在是“快鱼吃慢鱼”。

现代软件应用的领域越来越广,无论是工作、生活还是娱乐,应用(特别是消费类应用)流量会出现明显的波峰波谷,例如,游戏一般在工作日和白天玩得少,而在休息日和晚上玩得多。还有些无法预期流量的应用,可能大部分时间流量一直稳定,而一个意外事件就会导致流量产生指数级增长,无论是哪一种场景,都要求应用架构能具备更好的弹性能力来保证业务的可用性。

经过这一波互联网技术洗礼之后,行业边界正变得越来越模糊,很多企业特别是传统行业都希望通过业务创新获取新的增长点,而业务创新九死一生,从IT部门视角来看,基于团队已有的技能,重用企业已有的技术资产(比如投资了很贵的技术平台软件),这就是节省成本。

从程序员的角度切入,不同行业不同领域都有不同技术栈,例如,开发语言没有绝对的好坏,Java、C++、Python、Golang等都有适合的场景,多数企业的技术决策者会希望能用合适的技术去匹配业务,所以在选择能支撑未来业务持续发展的基础性框架和平台产品时,对技术本身开放性的考量也是至关重要的。

从企业用户的视角来看,他们的诉求往往是:高可用性、容錯性、可管理性、可替代性、可测试性、组织扩张、架构弹性等。其实从这些反馈不难看出,业界对微服务的诉求不仅仅是需要某个单点问题或一个工具套件,而更多的是希望通过微服务这种新的研发理念来改变整个研发活动的方方面面,包括技术、组织和流程的变革。

综上所述,我们可以从业务视角总结出微服务的价值:更快、更稳、更经济

更快:是指业务上线的速度,使用微服务能把业务上线周期从年降到月、周,甚至是随时上线;

更稳:是指系统可用性,基于微服务构建的系统能把系统SLA从3个9提升到4个9、5个9,甚至永不断服;

更经济:是指业务的资源成本,基于微服务更细粒度的弹性,能实现业务规模扩张与资源支出的最佳平衡。

微服务的本质是化繁为简,分而治之,从而加快企业创新。这也是为什么微服务会倍受企业青睐,Apache ServiceComb为什么应运而生的原因之一。

ServiceComb瞄准企业微服务化难题

谈到Apache ServiceComb,不得不提其愿景:提供一站式的微服务开源解决方案,致力于帮助企业、用户和开发者将企业应用轻松微服务化上云,实现对微服务应用的高效运维管理。

Apache ServiceComb的愿景,有几个词令人印象深刻,“帮助”“轻松”“高效”,词的背后隐藏了ServiceComb的主要代码捐赠者华为公司背后对微服务历程的探索过程及积累。

华为公司从2012年开始在很多创新项目里应用微服务技术,在2014年随着微服务框架技术愈加成熟,工具愈加完善,各个产品线开始基于微服务框架做云化产品。2016年,华为公司为促进能力共享,将散落在各产品线的微服务相关的工具、平台、框架和团队统一整合成华为公司级华为云平台微服务的重要组成部分,专门负责微服务平台的交付和技术演进,统一支撑整个华为公司产品微服务化转型。截至当前,华为公司无线、云核心网、消费者云等基于此微服务框架都已完成云化及商用。

2017年,随着华为云成立,华为云将能力在公有云上开放出来,更开源了ServiceComb微服务项目,让业界更多的企业和开发者能更方便的使用微服务技术,少走弯路。

如何基于微服务架构高效开发和上线

传统的单体应用因为是单进程,组件A与组件B的进程内调用只需使用编程语言的语法,一行简单的代码就能搞定,但是在微服务系统里,有在服务发现、服务容错、服务限流、服务降级、分布式事务等诸多复杂的分布式技术问题,如果我们把这些问题都留给业务开发人员,显然业务开发是快不起来的,这就是微服务化之后面临的第一个问题。

如何在不可预期的流量下保证业务的高可靠运行

从一个单体应用拆分成多个独立运行的微服务应用,从理论上来说,系统的故障点是增多的,用户请求的每一跳都有可能出错,特别是在资源受限的大规模流量冲击下,这又引入微服务化后的第二个问题。

在复杂的微服务系统中如何实现问题快速定位与恢复

在微服务系统中,特别是在动辄上百个微服务和实例部署的场景下,一个业务请求很可能跨越了多个微服务多个实例多个节点,别说定位问题,就是先搞定问题定界都很难,这时候如果没有一个自动化的工具或平台来支撑,靠人力是不可能完成的任务。

传统架构下的遗留系统如何向微服务架构低成本迁移

最后是一个非常现实的问题,特别是在传统企业里面,都会有一些遗留的资产或运行中的业务系统,不可能把这些都推倒重来,不仅成本太高,而且业务风险也大。如何将传统架构下的遗留系统低成本的向微服务架构迁移也是微服务解决方案需要系统考虑的。

这些都是过去华为各产品线服务化经验沉淀的精华。Apache ServiceComb开源,一方面将经验共享出来,分享给遇到微服务化难题的企业,促进行业更快向云化转型,一方面也和同样面临数字化云化转型的企业共同探讨和继续创新解决微服务化难题。

开放、创新、标准

Apache ServiceComb从设计上,一直秉持“将简单留给用户、复杂扔给自己”的设计导向,从设计之初就形成了“全面开放,使用标准协议,架构易于拆分和扩展,对开发人员友好,可以与业界其他流行框架互通集成”的共识。

一方面,组织和开发人员的复杂性来源于技能的多样性,大家使用不同的开发语言,同一种开发语言存在多样的开发习惯。ServiceComb通过支持主流的编程风格及优化兼容不同的编程习惯来拥抱90%的开发者,使大多数开发者可以快速工作。通过契约将通信协议剥离,用户也可以通过通信协议拓展机制,自行进行其他通信协议对接,协议的切换和共存不需要修改任何一行代码即可实现。

另一方面,ServiceComb自身可以以轻量级的方式进行运行,也可以和J2EE/Tomcat/Spring等生态无缝链接,用户可以根据不同的业务需要使用不同的方式构建自己的微服务系统。

Apache ServiceComb在开源以来也获得了两大开源奖项“2018OSCAR尖峰开源技术创新奖”和“2018COSCL中国优秀开源项目一等奖”。Apache ServiceComb基于面对企业微服务化难题的技术创新在诸多领域获得收效。

开箱即用:集服务注册、发现、通信和微服务治理能力为一体,并默认提供集中化配置,结合脚手架能力,实现微服务治理能力0编码,开发人员简单配置即可使能微服务常见功能。

ServiceComb内置覆盖了微服务下绝大多数场景的流量控制、容错熔断、限流降级、故障注入等治理和管控能力。ServiceComb内置轻量级高性能边缘服务,支持Producer端治理,结合扩展路由能力和动态配置能力能轻松实现灰度发布、A/B测试等关键特性,在业务实测中,在同等资源使用下,吞吐能力是业界常规方案的2.8倍。

第一個实现纯异步内核的微服务框架:实现超低调用时延和高吞吐能力,高性能。

ServiceComb实现纯异步内核、多线程池和隔离舱,同时支持同步和异步模式,并可在微服务、接口和方法三个维度上进行线程配置并实现不同业务之间的互相隔离。华为消费者云使用ServiceComb实现1500+集群节点规模的微服务以支持4亿手机用户在线,QPS提升2倍+,时延降低45%,从而节省大量硬件资源。

基于契约(Open API)的开发模式

微服务化不是一个单点的技术问题,而是涉及技术、组织和流程变革。在团队协作上,让微服务的开发、测试、文档等协作和管控活动标准化和自动化。ServiceComb是目前全球唯一一个基于Swagger实现通信模型与编程模型分离的微服务项目,代码自动生成契约可以实现微服务治理能力与业务代码隔离,以使应用开发人员仅需专注业务逻辑。

某省级财政厅系统一直存在烟囱架构、数据标准不统一、多ISV协同困难的问题,使用ServiceComb完成应用全面微服务化改造,基于契约实现接口标准由财政厅统一管控,ISV只需聚焦微服务交付,降低依赖性,同时基于契约统一业务模型和数据集成标准,系统无缝对接,实现财政数据统一呈现,业务全盘管控。

同时,支持框架式SDK和Service Mesh 0侵入微服务化两种方式,实现两种微服务化方式运维管控统一,降低用户运维管控成本。

分布式事务最终一致性:

ServiceComb提供了分布式事务Saga方案和集中式事务协调器,解决微服务场景下不能依靠单一数据库来实现跨服务事务一致性的难题。用户只需要通过注解方式定义事务的执行方法以及撤销方法,Saga框架会自动保证分布式事务执行的最终一致性。

ServiceComb更是中国微服务行业标准制定的核心框架参考,ServiceComb团队作为核心团队参与了此次业界首个微服务行业标准意见稿的撰写,ServiceComb也在继续参与该标准规范终稿制定,从而进一步深化微服务在行业中的应用,促进行业健康发展。

地狱不空,誓不成佛

Apache ServiceComb的目标不止步于Apache顶级项目,而是实实在在联合业界的力量为解决企业上云的难题贡献力量。

正如华为云PaaS产品部总经理廖振钦在Apache软件基金会的官方通告中说到的:“Apache ServiceComb是华为云微服务引擎CSE的核心。它广泛应用于华为消费云、华为云核、华为EI等众多主要产品,是华为微服务的事实标准。

我们非常高兴看到ServiceComb在Apache孵化器中快速发展,鼓励更多工程师通过成为Apache软件基金会志愿者社区的一员继续接受开源,并为开源做出贡献。”

ServiceComb从来没有冒进地满地迸发子项目,而是在扎实听取用户的声音。ServiceComb是坚持Apache Way的,这就意味着ServiceComb的发展方向是由业界及开源社区共同决定的。

一方面,越来越多的企业使用了ServiceComb,并反馈扎实的需求,例如,因为ServiceComb是基于契约的,那么,除了自动生成契约之外,通过契约自动生成代码模板、契约调测、远程契约调试等能力可以形成统一的工具链。通过诸如此类的企业微服务化中的痛点需求,ServiceComb可以不断演进以提供更加完善的解决方案。另一方面,部分企业CTO也针对下一代前向演进上提出了一些见解,ServiceComb社区也欢迎业界的力量可以一起来解决。随着云计算的发展,2019年各大厂商也开始发布混合云方案,那么对于微服务而言,在混合云领域微服务又会面临如何的困难?可以产出什么解决方案,诸如此类问题,都是ServiceComb将和数字化转型企业一起共同去面对的,ServiceComb不会止步,而是牢记自己的使命,借用“地狱不空,誓不成佛”,对于Apache ServiceComb,只要微服务化云化有难处,ServiceComb就会协同业界力量不断演进发展。

猜你喜欢

服务化云化开源
校园武术“学、练、赛”一体化实践探索
中国制造业服务化水平的现状
五毛钱能买多少头牛
2019(第十四届)开源中国开源世界
2019开源杰出贡献奖
制造业服务化对企业竞争力的影响
职业教育界要高度关注制造业服务化
IBM中国企业云化实践中心成立
社区教育平台运营策略研究