servicecomb...
TRANSCRIPT
ServiceComb 的前生今世
张琦
• 企业应用微服务化的趋势和动机
• 面临的问题
• 解决思路和设计方案
• 微服务在2016年成为仅次于物联
网和认知计算的第三热门技术
• 2014年被很多人认为是企业上云
元年
• 2014年几乎企业应用都没有考虑
的Docker在2015年就已经被所
有人纳入应用计划
2009 2014
MSA
By Simon Wardley http://enterpriseitadoption.com/
• 技术实现单一,需要想办法用一种技术解决所有问题
• 只能按大颗粒系统发布版本,响应周期长
(小特性版本3-6个月,每年1个大版本)
• 无法做到永远在线,大版本升级时,要停机中断服务
产品发布计划 集成开发 测试 / 发布运维人员替换
部署旧版本
开发
开发
开发
开发
bugs
产品发布计划 旧版本持续运行开发
开发
开发
开发
开发
部署到生成环境
产品发布计划
产品发布计划
产品发布计划
部署到生成环境
部署到生成环境
部署到生成环境部署到生成环境
Speed & Safety
• 企业应用和互联网应用的不同?
• 如何做到不同ISV的应用互联互通统一管理?
• 怎么才能加快微服务的开发?
• 微服务化后如何保证性能?
• 如何进行统一的路由控制?
Java Go服务契约
生成工具
框架代码框架
代码框架代码
接口文档接口
文档接口文档
生成 生成
• 面向契约而不是逻辑
• 解耦服务提供者和消费者的开发顺序
• 契约定义为语言中立
• 规范化系统接口,让实现与文档的同步成为必须
• 通过工具简化整个过程
API First注册中心、治理中心
OpenAPI (Swagger) 定义
编辑器:在线编辑,语法提示,错误检查
文档生成器:生成HTML与符合华为规范文档
Mock生成器:生成Mock工具,用于测试微服务
现有代码提取OpenAPI工具
与RPC的IDL互转工具 protobuf3
多语言多框架代码生成器
多语言Protobuf3对象编码库
Java 微服务编程框架 Go 框架 其他 框架
Spring MVC JAX-RS
POJO
Martini
Mux
Java protobuf对象
Go protobuf对象
编辑
生成
生成 提取
转换
生成
Restful
Rpc
IDE插件支持(Maven插件)
生成
生成
SpringMVC JAXRS
Process
Event-Loop
Process
R R W W
线程池
• 异步
• 标准、开放、协议健壮性
• 开发框架的性能在于细节,而不仅仅是协议。
ETCD集群
服务中心实例
服务中心实例
服务中心实例
• 统一的路由策略管控
• 缓存以提升性能
• 支持pull/push两种模式监控实例变化
• 实例动态扩容,海量的长连接或者短连接
• 支持灰度发布、服务分组等高级管理特性
微服务
通信模型
(序列化、传输协议)
编程模型
(同步、异步、Reactive…)
服务契约(OpenAPI)
服务发现 熔断 负载均衡 配置 跟踪 …
运行模型
l Github:https://github.com/ServiceCombl 官网:https://www.servicecomb.io
Thank You