初识华为开源项目 ServiceComb

摘要

本文将向介绍ServiceComb开源项目的总体架构及特色、ServiceComb Release 0.3.0的加强功能、基于ServiceComb介绍参与软件开源开发的途径和方法。git

内容来源:2017年10月26日,华为PaaS开源领域专家姜宁在“ServiceComb在线直播”进行《ServiceComb 开源项目介绍》演讲分享。IT 大咖说做为独家视频合做方,经主办方和讲者审阅受权发布。
github

阅读字数:1822 | 4分钟阅读编程

嘉宾演讲视频回放: suo.im/3ISGit

企业应用微服务开发面临的问题

企业业务逻辑复杂,如何进行跨团队协同开发?网络

大量老旧系统代码,如何支持其快速服务化改造?架构

云化应用复杂,面临的监控分布调用追踪问题?并发

ServiceComb做为一个功能完善的微服务框架,包括应用框架代码生成,服务注册发现、服务配置管理、服务监控、服务调用追踪、多通讯协议支持等功能,为开发者提供端到端的应用开发体验。此外,ServiceComb具有服务化契约加强、事件驱动等优点特性,并提供了分布式事务追踪能力,可以比较好的解决上述企业应用微服务开发所遇到的问题。ServiceComb采用开放架构设计理念,兼容多种业界流行微服务框架,开发者亦可根据自身业务需求定制业务插件。负载均衡

同时,与ServiecComb同源的华为微服务引擎也将在11月中上旬独立上线公测。框架


上图是ServiceComb的架构图,ServiceComb运行时包含了两部分核心模块。一部分是服务契约,这是基于Open API实现的针对Restful服务的标准描述信息,这些信息是独立与具体语言的。服务契约是ServiceComb很重要的一个核心特色。异步

还有一块是在运行时经过插件方式提供的多种服务扩展能力,好比服务发现、熔断、负载均衡、配置以及跟踪等。因为为微服务是以独立进程的方式存在,微服务框架首先须要保证服务间的网络调用问题,同时因为云上这些网络调用是不可靠的,须要微服务框架经过容错、负载均衡来保证服务之间调用的可靠性。在编程模型上ServiceComb支持同步、异步、Reactive等编程模式。这里的通讯模型主要负责消息的序列化以及传输协议。分布式

为何须要服务契约

做为服务消费者:

须要明确知道如何调用服务?

须要知道服务调用参数有哪些?

须要知道传输的内容是什么?

做为服务提供方:

提供详细描述的文档很难?

提供和维护标准的SDK也很难?

提供用户支持也不太方便。

服务契约能够看做生产者和消费者双方进行交易或沟通的合同。经过服务契约可以保证服务消费者和服务提供方可以按照相互约定好的方式来进行交互。这样带来最大的好处就是代码和文档能够一致化,同时这些契约能够对每一个服务都作一个比较明确的能力限定,能够更好地帮助咱们来协调和管理服务之间的调用。

服务契约定义


ServiceCombJava SDK同时支持API First & Code First两种开发模式,用户能够根据本身的须要灵活选择。

面向接口契约而不是逻辑,经过工具能够根据契约生成相关的桩代码或者服务调用程序;

经过服务契约能够明确服务调用的参数已经相关的服务,这样服务消费者不用等服务提供者开发完毕才能进行相关的开发,极大提高应用开发的效率;

契约定义为语言中立,能够经过相关的工具生成不一样语言的服务桩代码或者是调用代码;

借助相关接口工具,能够根据服务接口代码自动生成API描述文档,让实现代码与文档的同步;


ServiceCombJava SDK经过直接分析服务接口的Class文件,直接从代码层面获取Restful接口描述信息,生产成契约描述信息。目前ServiceComb Java SDK支持Spring MVC 以及JAXRS 等Restful服务定义方式。

经过异步事件操做保证系统性能


整个框架以事件驱动为基础,用Event-Loop这种方式进行处理,这样带来最大的好处就是不会有太多的线程切换。经过异步操做能够极大提高应用处理效率。目前为ServiceCombJavaSDK事件处理框架不但支持Restful协议并且还支持RPC协议。

分布式调用追踪

ServiceComb Java SDK支持基于Zipkin的标准追踪协议,同时也支持@span来扩展事务的追踪能力。

在具体实现的过程当中咱们也提供了调用链,基于这种调用链你们能够很方便地查询本身定义的处理器,对接本身所需的协议,而后进行对应的一些追踪。

ServiceComb代码库信息

Java-chassis:Java版的微服务框架;

service-center:基于go语言的服务中心;

ServiceComb-Saga:长时间运行事务处理框架。

ServiceComb组件的新特性

Service-Center0.2.0:

提供了管理控制台,对注册的服务实例提供管理功能。

Java-Chassis0.3.0:

支持经过@Span注释的方式定义事务;统一了Http请求处理,支持对Rest调用进行定制处理。

Saga0.1.0:

提供了初步的Saga调用服务,支持顺序以及并发的调用处理。

社区贡献

经过社区反馈可以及时获取到用户的需求并在社区快速透明地改进。因此但愿你们踊跃参与到社区。

ServiceComb项目彻底融入开源,从诞生之日起就坚持开放、标准和生态三大理念。ServiceComb采用开源的方式和社区协做、用户能够就职何的角色参与到社区开发,不管是Developer、Writer、Tester仍是User,都是很是欢迎的。目前社区的工做承载在github(https://github.com/ServiceComb)、官网(https://www.servicecomb.io)和JIRA(https://servicecomb.atlassian.net)上,开发者和用户能够再上面查阅到项目的全部信息。ServiceComb 期待社区人员的参与,用户能够将使用过程当中发现的问题提到issue列表或JIRA上或者发起讨论,也能够认领issue进行贡献PR,任何的方式都是很是受欢迎的。

开发者可经过http://servicecomb.io/cn/developers/ 阅读开发者指南。

我今天的分享就到这里,谢谢你们!

相关文章
相关标签/搜索