初识华为开源项目 ServiceComb

摘要

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

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

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

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

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

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

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

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2017-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android群英传

沪江学习Android端重构实践

873
来自专栏腾讯云数据库团队的专栏

用分布式技术轻松化解数据库容量和性能瓶颈

我们的目标是您的业务仅需要 2 个数据库就够了,一个用来部署正式业务,不增加存储成本基础上,能涵盖 OLTP&OLAP 场景,且可以覆盖多种数据类型;另一个,一...

2K0
来自专栏Linyb极客之路

分布式系统常见的事务处理机制

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副...

793
来自专栏重庆的技术分享区

聊聊用于构建微服务的工具和技术

原文地址:https://dzone.com/articles/tools-and-techniques-to-build-microservices

2386
来自专栏JAVA烂猪皮

大型分布式网站架构实战项目分析

distributed system is one in which components located at networked computers com...

1922
来自专栏北京马哥教育

性能调优概述,这是一篇最通俗易懂性能调优的总结!

精彩早知道 作者概述 什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) ...

5085
来自专栏mac的专栏

HLS 视频点播初探

视频精简下减少时长?创意不同意,要不把视频压缩下,挖槽那么模糊,创意不同意,好吧,还有其他的优化方案吗? HTTP Live Streaming(HLS)是苹果...

1.2K7
来自专栏Java呓语

架构·微服务架构(一)

微服务架构模式作为替代单体应用和面向服务架构的一个可行的选择,在业内迅速取得进展。由于这个架构模式仍然在不断的发展中,在业界存在很多困惑——这种模式关乎什么?它...

5082
来自专栏EAWorld

分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择

背景 这是一个开撕的话题,我经历过太多的关于分布式事务的需求:“有没有简便的方案,像使用数据库事务那样,解决分布式数据一致性的问题”。特别是微服务架构流行的今天...

3414
来自专栏BeJavaGod

Shiro系列(2) - 权限模型以及权限分配的两种方式

顶级账户分配权限 用户需要被分配相应的权限才可访问相应的资源。权限是对于资源的操作一张许可证。给用户分配资源权限需要将权限的相关信息保存到数据库。 这些相关内容...

3284

扫码关注云+社区

领取腾讯云代金券