无责任畅想:云原生中间件的下一站
本文源自 2020 年 12 月 20 日作者在云原生社区 meetup 第二期北京站演讲 《Apache Dubbo-go 在云原生时代的实践与探索》的部分内容,如果对演讲完整内容感兴趣请访问:
https://www.bilibili.com/video/av245840877
微服务框架
1. 服务框架的向后兼容性
2. 多框架之间的互通性
3. 多语言框架之间的互联
4. 打通打平不同的技术体系
5. 通信代理的必要性
6. Service Mesh
-
服务框架 SDK 会变的非常轻量,甚至完全沉淀到 sidecar 中。 -
多语言、多协议和多种通信方式之间的差异将被磨平。 -
统一流量控制,提升系统的弹性。 -
统一监控设施,提高可观测性。 -
统一安全可信认证,提升安全性。 -
升级过程业务无感,做到平滑升级,提升可靠性。 -
提升业务版本迭代速度。 -
快速打通不同技术治理体系之间的差异。 -
在 Mesh 和 非 Mesh 模式之间快速切换。
Sidecar 与中间件
1. Sidecar 的能力
-
流量控制 -
序列化协议转换 -
通信协议转换 -
数据路由控制
2. 协议下沉
3. 有状态的应用
4. 复杂性守恒
-
不同序列化协议转换 -
不同通信协议之间的转换 -
同一序列化协议多版本之间的转换 -
私有和公开通用的序列化协议之间的转换 -
对单体时代或者微服务时代的业务进行改造升级 -
业务应用和 sidecar 同时升级带来的额外运营维护 -
有状态的 Sidecar 的开发测试与维护 -
应用和代理的优雅退出和平滑升级 -
不同技术体系之间的互通 -
Mesh 模式和非 Mesh 模式之间的切换
另一种 Mesh
1. 协议标准化
2. Service Proxy
-
RPC,其代表是 Dubbo/Spring Cloud/gRPC 等。 -
限流熔断等流控,如 hystrix/sentinel 等。 -
Cache,其代表是 Redis。 -
MQ,其代表有 kafka/rocketmq 等。 -
服务跟踪,如兼容 Opentracing 标准的各种框架。 -
日志收集,如 Flume/Logtail 等。 -
指标收集,如 prometheus。 -
事务框架,如阿里的 seata。 -
配置下发,如 apollo/nacos。 -
服务注册,如 zookeeper/etcd 等。 -
流量控制,如 hystrix/sentinel 等。 -
搜索,如 ElasticSearch。 -
流式计算,如 spark/flink。
-
统一定义各服务的标准模型 -
定义这些标准模型的可适配多种语言的 API -
一个具备通信和中间件标准模型 API 的 Proxy -
适配这些 API 的业务
3. Application Mesh
-
仍然以现有的以劫持网络流量的 sidecar 形式存在的 Local Proxy。 -
另一个专门提供各个 Service API 的 Application Proxy。
-
更好的扩展性与向后兼容性
-
与语言无关
-
与云平台无关
-
应用与中间件更彻底地解耦
-
应用开发更简单
-
更快的启动速度
未来的收益