5 问ServiceComb
微服务 ServiceComb 是谁?
ServiceComb取名寓意蜂巢,是微服务开源项目,Apache软件基金会孵化项目,其源自ServiceComb商业版华为云微服务引擎CSE,于2017年5月开源开放。原主体代码于2017年12月由华为捐赠给Apache,是全球首个进入Apache软件基金会孵化的微服务开源项目。其提供一站式开源微服务解决方案,融合SDK框架级、0侵入ServiceMesh场景并支持多语言。
ServiceComb目前拥有三个主要的子项目,分别为:
Java chassis
https://github.com/apache/incubator-servicecomb-java-chassis
开箱即用Java语言 微服务SDK,含服务契约、编程模型、运行模型与通信模型四个部分,具备负载均衡、容错熔断、限流降级、调用链追踪等全面微服务治理能力,服务治理能力与业务逻辑隔离。
Service Center—服务注册中心
https://github.com/apache/incubator-servicecomb-service-center
基于Etcd的高性能、高可用、无状态的Golang版分布式服务注册与发现中心,可实时服务实例注册、实时服务实例推送和服务间契约测试等。
Saga—分布式事务解决方案
https://github.com/apache/incubator-servicecomb-saga
ServiceComb Saga是提供了分布式事务最终一致性解决方案,用户只需要通过注解方式定义事务的执行方法以及撤销方法,Saga框架会自动保证分布式事务执行的最终一致性。
微服务 ServiceComb 为何要开源?
不得不说,ServiceComb在开源之前,业界就已有多个流行的开源微服务/RPC框架,ServiceComb从开源之前,就一直面临华为内外部的一个挑战问题:业界已有RPC/微服务框架,为何还要开源多一个微服务项目出来?
最终大家归结到ServiceComb当前的愿景:致力于帮助企业、用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理。
ServiceComb是华为微服务的事实标准。自家的降落伞自己先跳,华为从2012年开始就已在许多创新项目里使用微服务技术,在往后的几年时间里,技术在自身的业务磨炼下愈加成熟,工具愈加完善,开始在华为的各大产品线大规模推广开。至今,华为消费者云、华为云核、华为云EI、华为云安全等都使用ServiceComb作为微服务场景的开发框架。ServiceComb在开源之前就已经商用了3年+时间,该商用版本承载了多年华为自身业务进行云化转型的技术沉淀和历史经验。
随着云化和互联网技术发展,“天下武功,唯快不破”—需求和业务快速上线交付到客户手中,成为企业的核心竞争力, 游戏等生活娱乐类应用的普及使业务流量的波峰波谷差距愈加明显,微服务架构的弹性伸缩和适合Devops等特点,使微服务化成为企业云化转型的第一步。然而,微服务也无不例外具有它的两面性,华为在自身的微服务化过程中,历经了诸多考验,总结了微服务化的系列挑战,如,服务粒度细导致团队协作困难,常规微服务化手段性能低导致整体资源利用率低,问题定位困难导致运维成本高,等等,华为将这些总结经验都沉淀到了ServiceComb。开源ServiceComb,最基础的想法是它是一个经过华为内部业务广泛验证的微服务转型利器,希望捐出来能对企业、用户和开发者贡献一点自己的力量;其次是如今的微服务生态发展较好,希望可以联合众多开源爱好者和微服务开发者一起将微服务这个生态完善得更好。
微服务 ServiceComb 有哪些技术优势?
ServiceComb基于自身的愿景,一直坚持“将复杂扔给自己,将极简留给用户”,在设计上不断追求能最简单化为用户带来价值,如下粗略地总结了几点:
开箱即用
(一)开箱即用:集服务注册、发现、通信和微服务治理能力为一体,并默认提供集中化配置,结合脚手架能力,实现微服务治理能力0编码,开发人员简单配置即可使能微服务常见功能。
ServiceComb java-chassis-dependencies集中管理了所有必须的依赖,start.servicecomb.io生成出来的项目既包含示例代码,也包含必要配置的以及微服务治理所需的配置,批量生成所有的微服务后,用户只需要专注于填充业务代码。完成开发后,部署ServiceCenter,启动微服务,一个良好的微服务业务系统就运转起来了,之后只需要专注于运维,后期也可通过动态配置,随时修改配置值调整治理能力。
ServiceComb内置覆盖了微服务下绝大多数场景的流量控制、容错熔断、限流降级、故障注入等治理和管控能力。内置支持包括RoundRobin、Random、WeightedResponseTime、SessionStickiness在内的丰富的负载均衡策略,与服务中心ServiceCenter配合,实时感知微服务实例的状态变化,灵敏调节负载。
ServiceComb内置轻量级高性能边缘服务,支持Producer端治理,结合扩展路由能力和动态配置能力能轻松实现灰度发布、A/B测试等关键特性,在业务实测中,在同等资源使用下吞吐能力是业界常规方案的2.8倍。
在奇蛙智能科技无人机业务的实践中,基于ServiceComb的开箱即用能力,团队开发效率提升1倍,节点扩展部署效率提升2倍+。
第一个实现纯异步内核
(二)第一个实现纯异步内核的微服务框架:实现超低调用时延和高吞吐能力,高性能。ServiceComb底层基于vertx,但在vertx之上进行了进一步封装,同时支持异步及同步模型。
异步模型下,业务逻辑直接在eventloop中执行,整个业务流程中没有线程切换,所有的等待逻辑都是异步的,只要有任务,则不会让线程停下来,充分、有效地利用系统资源。
同步模型下,一个微服务进程中,为transport创建了一个独立的vertx实例;Eventloop是vertx中的网络、任务线程;一个vertx实例默认的Eventloop数为:
2*Runtime.getRuntime().availableProcessors()。
此外,ServiceComb还通过不断优化,提供了多线程池和隔离仓等相关技术,可在微服务、接口和方法三个维度上进行线程配置并实现不同业务之间的互相隔离。
华为消费者云使用ServiceComb实现1500+集群节点规模的微服务以支持4亿手机用户在线,QPS提升2倍+,时延降低45%,从而节省大量硬件资源。
两种微服务化方式并存
(三)同时支持框架式SDK和Service Mesh 0侵入微服务化两种方式,实现两种微服务化方式运维管控统一,降低用户运维管控成本。
梅斯医学的业务在架构选型上选择了Java作为其新业务软件开发的语言,而其却拥有大量的PHP存量业务应用,使用ServiceComb的这种能力实现了不同业务的混合部署并协同治理,以实现其基于存量业务的快速业务创新和多语言支持。
唯一一个实现契约和代码双向自动生成
(四)基于Swagger实现契约和代码双向自动生成
ServiceComb是目前全球唯一 一个基于Swagger实现通信模型与编程模型分离的微服务项目,代码自动生成契约可以实现微服务治理能力与业务代码隔离以使能应用开发人员仅需专注业务逻辑,契约自动生成代码以更好地支持Devops实践和团队协同。
微服务化不是一个单点的技术问题,而是涉及到技术、组织和流程变革。在团队协作上,不论是代码先行还是接口先行,都使用统一标准,通过Swagger在线管理API,服务端和客户端各自基于API定义接口生成代码和模型,实现客户端和服务端松耦合,测试根据API生成测试用例,以防止开发人员绕过在线API定义私自修改接口,设计、开发和测试遵循统一在线API,保证接口、代码、文档的一致性,进而使能基于Devops的流水线团队协作开发效率大大提升。
分布式事务最终一致性联合创新
(五)分布式事务最终一致性:ServiceComb联合京东金融云和中国人保进行创新,提供分布式事务最终一致性解决方案,解决微服务场景下不能依靠单一数据库来实现跨服务事务一致性的难题。用户只需要通过注解方式定义事务的执行方法以及撤销方法,Saga框架会自动保证分布式事务执行的最终一致性。
微服务ServiceComb 开放度如何?
华为微服务沉淀代码无保留地开源到ServiceComb,ServiceComb由华为微服务ServiceComb开源已近一年半,进入Apache孵化已近10个月时间,孵化期间坚持“Apache Way”,坚持开放、中立、标准、多样化等原则,月均Release1个Apache孵化器软件版本的速度发行版本,8个月共Release 8个软件版本。
ServiceComb与业界流行生态互通:Zipkin、Skywalking、Prometheus等Tracing/APM生态,Apollo配置中心生态,Istio生态,K8S生态,Spring、SpringCloud等流行开源框架。
开源以来,ServiceComb社区在IT大咖说、Spring Summit、ArchSummit、kubecon、Qcon、LC3、开源中国源创会、Devops沙龙、OSCAR峰会等各类会议中都进行了多次宣讲,并多次举办主体Meetup,完全公开技术路线和细节。
ServiceComb更是中国微服务行业标准制定的核心框架参考,ServiceComb 团队作为核心成员深度参与了此次业界首个微服务行业标准意见稿的撰写,已由信通院于8月份发布,ServiceComb也将继续参与该标准规范终稿制定,从而进一步深化微服务在行业中的应用,促进行业健康发展。
谁在做 微服务ServiceComb?
ServiceComb始终保持初心,希望能协同开源和业界的力量,在自己的技术积累基础上继续将微服务行业发展壮大,为企业、用户、和开发者做些实事,在推广 ServiceComb 社区的过程中,不仅仅推广技术,更是坚持同时布道微服务理念、微服务方法论和Apache开源文化,希望能竭尽所能在吸取业界智慧的同时为业界尽可能地多做贡献。
ServiceComb 秉持着赤诚之心,许多企业用户陆续选择使用ServiceComb,覆盖了覆盖IOT、生物医药、金融保险、互联网、地产、教育、高校等行业,华为消费者云使用其实现1500+集群节点规模的微服务以支持4亿手机用户在线,同济大学使用其作为AI人脸识别基础框架,中国人保使用其作为数字化转型的基础框架,教育培训机构传智播客使用其作为微服务教程,新型企业奇蛙智能科技基于其实现无人机智慧控制大脑,梅斯医学使用其实现混合部署协同治理能力实现快速业务创新......
ServiceComb社区也日渐活跃,近8个月时间共接收来自各企业的贡献者们的3300+个提交。
在各开源爱好者和微服务开发者的支持下,在Apache导师们的指导和Apache社区志愿者的帮助下,ServiceComb在Apache的孵化也一步一个脚印,稳健发展,目前已启动顶级项目的毕业程序。
不可否认,ServiceComb 不是业界第一个微服务开源框架,也没有如其他RPC框架等拥有较久的开源历史,ServiceComb在开源社区的每一步发展都离不开开源爱好者和微服务开发者的支持,ServieComb社区唯一能做的是恪守原则,始终如一地保持初心。
致谢过去和现在已关注或贡献ServiceComb的你们,也期待未来有更多的你我他一起共建微服务生态和开源社区,相信只要ServiceComb坚持认真地做开源,扎实地做微服务,ServiceComb必将永不孤单。
ServiceComb Meetup - 华为全联接大会
开源爱好者和微服务开发者们福利来袭,
Apache 基金会董事 Roman Shaposhnik,
Apache 孵化器主席 Justin Mclean,
Apache 秘书长和赞助商大使 Craig Russell,
Apache 成员及 ServiceComb 负责人姜宁……
全球最大的开源软件基金会Apache的大咖们和ServiceComb社区管理委员会成员们齐聚一堂,于10月12日在2018华为全联接大会,上海世博中心416+417会议厅举行Apache ServiceComb Meetup,将从多维度带来干货满满的精彩技术和实践分享。
时间:10月12日 13:30-16:50
地点:上海世博中心 416+417会议厅
长按识别以下二维码,观看在线直播
长按以下二维码,加入ServiceComb讨论群
点击“阅读原文”,了解 Meetup 议程!