ServiceComb微服务
【北京,2018年3月22日】在北京国家会议中心举办的“2018全球云计算开源大会”上,华为开源的微服务框架ServiceComb凭借良好的社区生态、独特的技术创新以及丰富的应用案例,荣获2018“OSCAR开源技术创新”奖,该项目的负责人姜宁也荣获2018“OSCAR开源人物奖”。ServiceComb是华为云于2017年6月开源的微服务框架,并于2017年12月正式进入Apache软件基金会孵
【北京,2018年3月22日】在北京国家会议中心举办的“2018全球云计算开源大会”上,华为开源的微服务框架ServiceComb凭借良好的社区生态、独特的技术创新以及丰富的应用案例,荣获2018“OSCAR开源技术创新”奖,该项目的负责人姜宁也荣获2018“OSCAR开源人物奖”。
ServiceComb是华为云于2017年6月开源的微服务框架,并于2017年12月正式进入Apache软件基金会孵化。其包括一站式的服务注册、服务治理、动态配置功能,具备服务化契约增强、多语言SDK支持、多通信协议支持等优势特性, 并提供SAGA数据最终一致性方案解决微服务架构数据一致性难题。ServiceComb 兼容Spring Cloud等业界流行微服务框架,互通业界生态。ServiceComb的项目发起人和负责人姜宁为华为开源能力中心技术专家及华为PaaS领域开源专家,拥有多年参与Apache中间件项目的经验并指导多个Apache孵化项目,熟悉开源社区开发流程,对微服务及SOA均有较深入研究。
ServiceComb源自华为云企业级微服务引擎CSE,并应用在华为云微服务云应用管理平台ServiceStage之上。ServiceComb作为华为微服务引擎CSE核心,已在华为流程IT、各产品线云化、消费者云等众多重大项目上成功稳定商用,并帮助包括软通动力、中软国际、绿城盟拓、南京奇蛙智能科技有限公司等企业完成应用微服务改造,加速其业务上云并帮助实现高效的运维管理。
作为Apache 软件基金会正式孵化项目, ServiceComb遵循Apache中立、开放、多样性原则,目前已有大量开发者参与社区贡献。希望未来有更多的企业及开发者参与ServiceComb社区,集合力量构建一个开放、高效的微服务框架,为Apache开源生态贡献力量。
ServiceComb开源项目继去年12月进入Apache软件基金会孵化器后,今天梅开二度,项目获得2018“OSCAR开源技术创新”奖,项目负责人及专家姜宁获得2018“OSCAR开源人物奖”,CSDN 特约该项目负责人进行了专访。
专访嘉宾 | 姜宁
作者 | 钱曙光
伴随着容器、云与DevOps等技术/理论的快速发展,微服务构架在今天已然成为主流,有分析称目前有70%的公司使用微服务方式开展项目。微服务架构通过将服务细粒度拆分,使系统演进的各个环节如应用与数据库、开发与治理、系统与具体开发团队之间松耦合,降低了复杂性,提高了开发与运维的效率。而微服务框架在这其中扮演了举足轻重的角色,它将实现微服务架构的过程中所涉及的服务发现、熔断容错、通信机制与监控等环节封装,使得微服务架构的构建变得简单、高效。
说起微服务框架,目前市面上除了比较知名的诸如BDF、HSF、Dubbo、Spring Boot、Spring Cloud等,还有各个公司自行研发的相关框架,数不胜数,其中开源者众多。
2017年6月,华为正式开源其微服务框架ServiceComb,为该领域再添一员悍将,这个项目很快于12月份以全票通过的方式进入Apache软件基金会孵化器。这也是华为继CarbonData之后,第二个进入Apache孵化的开源项目。
在如今开源框架林立,并且分布格局渐成的微服务市场,华为此次强势杀入的ServiceComb有什么底气,它在技术上有哪些特点与亮点?对于开发者来说,为何需要去关注这么一个新框架呢?而近期势头逐渐上来的微服务新模式Service Mesh吸足了技术人员的眼球,它号称“下一代微服务架构”,那么它在ServiceComb中是否有相应的体现?我们采访了ServiceComb项目负责人姜宁,希望借此为读者分享此项目的意义,并深挖其相关技术点。
CSDN:请介绍一下ServiceComb项目的相关情况。
姜宁:微服务作为新兴的架构方式已经被业界广泛采纳,大家在实践微服务架构的过程中,或多或少会借助一些框架或者构建基础平台方式来降低微服务架构的开发难度,实现自己的业务述求。ServiceComb是一个微服务框架,它能够帮助企业快速构建云原生应用,通过一系列解决方案帮助用户快速开发微服务应用的同时实现对这些微服务应用的高效运维管理。
当前微服务领域的开源解决方案林立,ServiceComb会尽最大努力去和这些开源解决方案融合。现在也有越来越多的中国企业拥抱开源,成为开源社区的贡献者和受益者。我觉得好的东西是需要分享的,技术一旦封闭就容易闭门造车;开源出来,可以在开源社区里打磨共建,不断演进,这也是此次我们开源ServiceComb的一些想法。
ServiceComb本身有强大的技术背景和团队,它源于华为云CSE微服务引擎(Cloud Service Engine)平台。CSE在华为公司内部商用了3年多时间,沉淀了电信行业高性能、低延时能力,历经华为VMALL商城的历练,积累了华为公司内部微服务化架构演进的经验。华为手机的超级应用智能助手拥有亿级用户体量,稳定、可靠、敏捷地运行在CSE上,CSE全天候高效支持应用市场高达6500万日活和云端相册每日新增相片4200万体量,支持日均数亿次请求。CSE自身的的开发模式门槛低、通用性强、服务接口规范统一、严格遵循微服务设计理念等特点使能智能助手业务实现快速上下线发布,化繁为简,更简单高效实现降级熔断、弹性伸缩和故障迁移等运维治理能力,缩短迭代开发周期,使能该业务SLA提升到99.96%。ServiceComb与CSE同源,越来越多的ISV、传统企业与CloudNative企业选择使用ServiceComb。
目前CSE的Java开发包和Golang开发包都已经在ServiceComb项目中开源,Java 开发包部分已进入Apache软件基金会孵化,Golang开发包部分也在不断开发完善中,不久也将启动Apache软件基金会捐赠流程。CSE在Golang开发包的基础上实现了Service Mesh以提供非侵入式的微服务方案并上线华为云,于去年12月在ArchSubmmit大会上介绍了相关工作成果,不久的将来,Service Mesh实现也会在ServiceComb项目中开源。
由于ServiceComb和华为云CSE的开发包同源,所以是同班人马在进行开源版本和商业版本的开发,成员主要分布在北京和深圳。我在来华为之前就职于红帽软件,先后参与了Apache CXF、Apache Camel与Apache ServiceMix的社区项目,对社区化开源开发模式比较熟悉,目前ServiceComb项目由我负责,而它的开源运作方式,完全按照Apache开源项目运作方式进行,除了项目代码公开在GitHub上,项目设计讨论以及相关的决策都会邮件列表中公开进行。
Apache软件基金会作为目前世界上最大的开源组织,创立20多年来除了定义了现在广泛使用ALS2.0 开源协议,同时积累了一套开源社区发展治理的成功经验,现在每天帮助6万多的开发者在300多个项目中进行相关开源开发工作。ServiceComb进入Apache孵化器的主要目的也是想向Apache学习好的社区运营方式,建立健康的开源社区生态,为广大的微服务开发者提供一套简便易用的开源解决方案,让云原生应用开发和治理更简单。
项目地址:
https://servicecomb.incubator.apache.org/
目前ServiceComb在Apache孵化的子项目有:
Java Chassis,Java底座:
http://github.com/apache/incubator-servicecomb-java-chassisService Center,服务注册中心:
http://github.com/apache/incubator-servicecomb-service-centerSaga,分布式事务最终一致性解决方案:
http://github.com/apache/incubator-servicecomb-saga
CSDN:它的整体架构是怎么样的?具体分析一下。
姜宁:目前ServiceComb主要包含的是Java底座(Chassis),整个语言开发包包含服务契约、编程模型、运行模型与通信模型四个部分。
Chassis是Chris Richardson提出一种微服务模式,它可以使用户在构建微服务的过程中,只聚焦于业务逻辑本身,而不需要去处理日志、外部配置、分布式追踪等环节,Chassis将这些环节交给专门的框架来处理。
服务契约: ServiceComb通过服务契约支持Java、Go语言底座开发的服务可以相互访问。服务契约是建立在OpenAPI基础之上的,OpenAPI规范是Linux基金会的一个项目,通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发。Open API提供了一套比较完整的开发工具链,在服务契约的基础上我们可以自动生成服务文档,服务调用开发包以及服务调用测试代码。
编程模型: Java语言底座支持多种RESTful服务的编程方式,即支持应用广泛的Spring MVC与JAXRS编程模型,也支持POJO + 服务契约的开发方式来描述RESTful服务。由于在Java Chassis先将这些编程模型转换成为服务契约Swagger对象,然后交由内部运行模型以及通信模型进行处理, 所以Java Chassis并不依赖Spring MVC以及JAXRS的底层实现。目前Go Chassis和Java Chassis支持RESTful级别的互联互通。
运行模型:大家在开发应用的过程中,会有很多服务扩展的需求,例如根据用户身份认证信息,对服务调用进行认证。Chassis架构支持在运行时通过配置处理链(handler)的方式来进行服务扩展。ServiceComb缺省提供服务发现、容错熔断以及调用链追踪等处理链。用户可以通过配置文件的方式,在应用启动的时候加载对应的处理链。
通信模型:语言底座通过通信模型对外进行交互,其中包含了消息序列化和反序列化的模块以及底层传输的模块。值得一提的 Java Chassis的通信模型是建立在Vertx基础之上了,内部已经完全异步化了,微服务在全异步工作模式下有很高的性能。
CSDN:与目前市面上已经流行的各种微服务框架,如Spring Boot、Spring Cloud、Dubbo等相比,ServiceComb与它们的差异性主要体现在哪里呢?优势又是什么?
姜宁:目前市面上的微服务框架的确很多,前面列举的这些都是基于Java语言的。ServiceComb与之对应的是Java Chassis这个子项目。ServiceComb是想做成一个更加全面、横跨多种功能与语言的框架,让用户可以有更多选择的空间。我觉得一个好的框架要保证用户在使用的过程中不丧失控制权,客户可以根据自己的实际情况对框架进行定制。这里我们即提供了侵入式的底座框架,也结合多语言以及历史遗留系统改造的需要提供非侵入的Service Mesh的实现。下面从几个部分来说明一下ServiceComb的特点:
Java Chassis——Java 底座
ServiceComb Java Chassis通过引入Vertx在内部构建异步调用内核,极大地提升了系统运行效率。同时我们针对企业应用开发的管控需要引入了服务契约这个概念,通过服务契约,我们不但可以在服务开发阶段对服务的消费方和提供方的服务进行管理,而且可以在服务运行维护阶段对服务的请求的路由、转发以及调用进行精细的控制。
ServiceComb Java Chassis并不直接依赖于Spring Boot或者 Spring Cloud,而是通过Starter的方式与Spring Boot、Spring Cloud进行集成,这样用户可以自由地选择是否使用Spring Boot或者Spring Cloud来开发ServiceComb的应用。
如果用户想在Spring Boot使用ServiceComb Java Chassis开发包的功能, 可以直接引入ServiceComb Stater并定义@EnableServiceComb的方式。在ServiceComb Java Chassis中,我们还针对Spring Cloud提供了DiscoveryClient starter,以及Configuration starter,这样用户只需在项目中加入相关的starter依赖就可以使用ServiceComb提供的服务注册中心或者CSE的商业配置中心。
Service Center——服务注册中心
ServiceComb的服务注册中心是一个采用Go语言构建的、建立在etcd存储基础上的高性能、高可用的服务注册中心。在提供服务实例注册的基础上,我们还针对服务契约进行相关的扩展,用户不但可以通过服务中心了解服务实例的运行情况,还可以通过服务中心提供的监控界面对应用服务进行调用。
Saga——分布式事务最终一致性解决方案
ServiceComb Saga是针对微服务分布式事务最终一致性问题提供的解决方案。Saga分布式事务是由多个相关联的的本地事务操作所组成。Saga协调器负责保证Saga事务的最终一致性。当本地事务执行出错时,Saga协调器会自动执行相关的恢复操作保证分布式事务的最终一致性。相比其它的分布式事务一致性方案,Saga在简化事务配置以及提供多种事务恢复机制上有很明显的优势。目前开发的ServiceComb Saga 0.1.0支持用户通过Annoation的方式定义事务操作以及撤销事务操作的服务接口, 同时Saga协调器监控追踪事务的执行情况并负责协调事务执行者,保证事务的最终一致性。
CSDN:ServiceComb目前有什么地方最亟待完善?
姜宁: ServiceComb项目开源出来时间并不长,但目前在积极完善中,今年会在Reactive支持、Saga以及Service Mesh等方面不断演进。这里也希望有越来越多的微服务志同道合者能够加入到ServiceComb社区,一起把ServiceComb项目做得更好。
CSDN:方便预告一下近期关于ServiceComb的计划吗?
姜宁:我们准备在3月底发布ServiceComb进入Apache孵化的第一个版本,其中包含了Java Chassis的自动Metric监控、面向开发者的异步调用接口,以及与开源的配置中心Apollo的集成。对于Saga,我们将发布架构调整后新一版本Pack,用户通过定义Annotation的方式就可以进行Saga事务的描述。近期会公开公布整个社区发展路线图,并举办全方位的社区线上和线下会议,在开源社区和企业及开发者共同探讨和实现微服务化演进。
ServiceComb交流
大家可以通过存档邮件查看,及时了解我们的项目进展,同时也可以给
dev-subscribe@servicecomb.incubator.apache.org发邮件,然后回复确认邮箱邮件之后就可以通过dev@servicecomb.incubator.apache.org在邮件列表中与我们交流互动了。
更多推荐
所有评论(0)