初识华为开源项目 ServiceComb

摘要

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

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

阅读字数: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/ 阅读开发者指南。

我今天的分享就到这里,谢谢大家!


Apache ServiceComb Java Chassis 是一个开箱即用Java语言微服务SDK,含服务契约、编程模型、运行模型与通信模型四个部分,具备负载均衡、容错熔断、限流降级、调用链追踪等全面微服务治理能力,服务治理能力与业务逻辑隔离。 它包含如下特性: 多种开发风格,REST(JAX-RS、Spring MVC)和RPC; 多种通信协议, HTTP over Vert.x、Http Over Servlet、Highway等; 统一一致的服务提供者、服务消费者处理链,以及基于契约的开箱即用的服务治理能力。 软件特点: 高性能 Java Chassis 网络层基于 Vert.x 实现, 支持开发者使用响应式编程, 开发者在使用熟悉的REST风格设计业务接口的时候,也能够获取到非常高性能的吞吐量。同时还提供了Highway协议,满足更高性能场景的要求。 原生支持OpenAPI Java Chassis 的接口开发、服务治理都基于 Swagger ,并通过接口语义检查,使得接口定义符合 OpenAPI 规范。 灵活的开发方式 开发者可以使用 SpringMVC/JAX-RS/transparent RPC 任意一种方式定义服务端接口, 并使用RPC/RestTemplate 等方式访问这些接口. 得益于Java Chassis的通信层与开发方式分离的设计,开发者可以在 Rest over Vertx/Rest over Servlet/Highway等通信模式下自由切换。 开箱即用的服务治理能力 Java Chassis 提供了大量开箱即用的服务治理能力,包括服务发现、熔断容错、负载均衡、流量控制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值