嘉宾演讲视频回放: 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 采用开源的方式和社区协作用户可以就任何的角色参与到社区开发, 无论是 DeveloperWriterTester 还是 User, 都是非常欢迎的目前社区的工作承载在 github(https://github.com/ServiceComb) 官网 (https://www.servicecomb.io) 和 JIRA(https://servicecomb.atlassian.net) 上, 开发者和用户可以再上面查阅到项目的所有信息 ServiceComb 期待社区人员的参与, 用户可以将使用过程中发现的问题提到 issue 列表或 JIRA 上或者发起讨论, 也可以认领 issue 进行贡献 PR, 任何的方式都是非常受欢迎的
来源: https://juejin.im/post/5a794f895188257a72629840