欢迎您光临本站,如有问题请及时联系我们。

初识华为开源项目 ServiceComb

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

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


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


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


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


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


  ServiecComb


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


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


  为什么需要服务契约

  作为服务消费者:


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


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


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


  作为服务提供方:


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


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


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


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


  服务契约定义


  ServiceCombJavaSDK同时支持APIFirst&CodeFirst两种开发模式,用户可以根据自己的需要灵活选择。


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


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


  契约定义为语言中立,可以通过相关的工具生成不同语言的服务桩代码或者是调用代码;


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


  代码


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


  通过异步事件操作保证系统性能

  系统性能


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


  分布式调用追踪

  ServiceCombJavaSDK支持基于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/阅读开发者指南。


来源:本文由E8运维原创撰写,欢迎分享本文,转载请保留出处和链接!