16
1 ServiceComb 的前世今生 华为CloudBU PaaS 微服务引擎开发团队

ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

1

ServiceComb 的前世今生 华为CloudBU PaaS 微服务引擎开发团队

Page 2: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

我们一直在很认真地做微服务

华为CloudBU PaaS 微服务引擎开发团队

Page 3: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

议题

• 企业应用微服务化的趋势和动机

• 面临的问题

• 解决思路和设计方案

• 从软件到服务

3

Page 4: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

企业IT技术应用曲线

• 微服务在2016年成为仅次于

物联网和认知计算的第三热门技术

• 2014年被很多人认为是企业上云元年

• 2014年几乎企业应用都没有考虑的Docker在2015年就已经被所有人纳入应用计划

2009 2014

MSA

By Simon Wardley http://enterpriseitadoption.com/

Page 5: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

传统企业应用开发模式

开发

产品发布计划

开发

集成开发 运维人员替换部 署 旧 版 本

开发

开发

测试/发布

• 技术实现单一,需要想办法用一种技术解决所有问题

• 只能按大颗粒系统发布版本,响应周期长

(小特性版本3-6个月,每年1个大版本)

• 无法做到永远在线,大版本升级时,要停机中断服务

Page 6: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

微服务化的应用构建和发布

产品发布计划

产品发布计划

产品发布计划

产品发布计划

开发

部署到生成环境

部署到生成环境

开发

开发

部署到生成环境

部署到生成环境

部署到生成环境

开发

开发

bugs

旧版本持续运行

Page 7: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

Speed & Safety

Page 8: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

面临的问题

• 企业应用和互联网应用的不同?

• 如何做到不同ISV的应用互联互通统一管理?

• 怎么才能加快微服务的开发?

• 微服务化后如何保证性能?

• 如何进行统一的路由控制?

Page 9: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

企业应用和集成

Java

注册中心、治理中心

Go 服务契约

生成工具 框架代码 框架代码 框架代码

接口文档 接口文档 接口文档

生成

生成

• 面向契约而不是逻辑

• 解耦服务提供者和消费者的开发顺序

• 契约定义为语言中立

• 规范化系统接口,让实现与文档的同

步成为必须

• 通过工具简化整个过程

API First

Page 10: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

增速微服务开发 --- 工具支持

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插件)

Page 11: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

增速微服务开发 --- 降低学习门槛

SpringMVC JAXRS

Page 12: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

性能保证

Process

Event-Loop

Process

R R W W

线程池

•异步 • 标准、开放、协议健壮性 • 开发框架的性能在于细节,而不仅仅是协议。

Page 13: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

更细致的服务路由管控

ETCD集群

服务中心实例

服务中心实例

服务中心实例

• 统一的路由策略管控 • 缓存以提升性能 •支持pull/push两种模式监控实例变化 • 实例动态扩容,海量的长连接或者短连接 • 支持灰度发布、服务分组等高级管理特性

微服务

Page 14: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

ServiceComb 开发框架

通信模型

(序列化、传输协

议)

编程模型

(同步、异步、Reactive…)

服务契约 (OpenAPI)

服务发现 熔断 负载均衡 配置 跟踪 …

运行模型

Page 15: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

还远远不止这些…

部署/启

日志/监

告警

诊断

治理/配

置 扩容

缩容

回滚

停止/卸

微服务运维生命周期管理

创建

编码

编译

构建

部署 测试

验收

发布

删除

微服务开发生命周期管理

Page 16: ServiceComb 的前世今生servicecomb.apache.org/assets/slides/20171102/...• 解决思路和设计方案 ... Java protobuf对象 Go protobuf对象 编辑 生成 ... 池 •异步

从软件到服务

微服务治理

微服务部署平台(PaaS)

微服务开发

微服务基础治理 微服务高级治理

服务发现

服务配置

服务路由

多通信访问

调用链跟踪

多事务管理

多运行时管理

ServiceMesh

容错 &

熔断

限流降级

服务隔离

容量预测

微服务安全

工具链生态

契约开发 工具

代码自动 生成

文档自动 生成

自动测试 工具

本地远程 调试

微服务 流水线

资源管理 容器编排 & 调

度 应用管理 弹性伸缩 灰度发布 监控运维APM

Go语言

XXX语言

Java语言

服务契约 & OpenAPI

SpringMVC

JAX-RS

RPC编程

REST通讯

XX通讯插件

RPC通讯

TCC

XX事务

强事务

多语言 多编程框架 多通信协议 多事务一致性

Java 微服务

Go 微服务

XX语言 微服务

Spring微服务

遗留 应用

微服务云服务: https://servicestage.huaweicloud.com/ 微服务引擎交流论坛: http://forum.huaweicloud.com/forum.php?mod=forumdisplay&fid=622

公众号

扫码入群