Apache/Dubbo-go 2022 最新形态
如果无法正常显示,请先停止浏览器的去广告插件。
1. Apache/Dubbo-go 2022 最新形态
dubbogo社区 于雨
2. Content
§ 1 K8s master 注册中心
§ 2 Service Mesh
§ 3 Apache/dubbo-go-pixiu
§ 4 跨域通信
§ 5 服务优雅下线
§ 6 社区
3. 个人介绍
于雨 (@AlexStocks)
• dubbogo 社区负责人、阿里开源大使
https://github.com/dubbogo
• 基础系统从业者
IM/NoSQL/RPC/ServiceMesh
• 开源项目贡献者
kv: Redis/Pika/Pika-Port/etcd
rpc : Muduo/Dubbo/Dubbo-go/Sentinel-golang
4. 1. K8s master 注册中心
5. Kubernetes VS dubbo-go
k8s service :一套完全独立的服务管理体系
dubbo interface :
key: interface/version/group
value: ip:port/revision/ service/method/role
K8s service ≈ Dubbo Directory + Router + Load Balance + Filter
6. endpoint 维度
• 服务注册:将每个 pod 提供
的 interface 信息放到
endpoint 的 metadata 的
annotation 中注册
• 监听 k8s 的 api server 中的
对应的 endpoint 的变化,利
用 k8s 健康检查,有效剔除
无用的节点
缺点:一个 endpoint 代表一个
服务发现的监控单元,需要根
据 每 个 service 的 group 和
version 组 合 , 生 成 多 个
endpoint
Metadata :
annotation:com.apache.xx?
group=xx&version=1.0
7. Operator 维度
目前k8s 提供operator的方式来发布应用,
operator可以定制化 。
dubbo-go operator:
• 支持服务注册,通过 k8s api server 以 crd
的形式写入 k8s etcd
• 支持服务的健康检查,及时的剔除不健康
的服务
dubbo-go:
• 通过 k8s api server 对 crd 资源进行查询
• crd 资源的监听,及时变更 crd 资源的变化
优点:主流方案,高度定制化
挑战:单独维护 operator 的运维成本
8. Dubbogo v1.x 方案
9. 2. Service Mesh
10. What’s service mesh
The term service mesh is used to describe the network of
microservices that make up such applications and the interactions
between them.
https://istio.io/latest/docs/concepts/what-is-istio/
For all the hype, the service mesh is architecturally pretty straightforward. It’s
nothing more than a bunch of userspace proxies, stuck “next” to your services
(we’ll talk about what “next” means in a bit), plus a set of management
processes.
https://buoyant.io/service-mesh-manifesto/
11. Istiod based Service Discovery
https://github.com/dubbogo/tools
12. Dubbogo Proxyless Service Mesh
Control Plane
- 业务改造成本低
- 迁移成本低
- 无 proxy 性能损失
Router Rule
com.alibaba.dubbo.hello
192.168.1.1
192.168.1.2
192.168.1.3
13. Dubbogo Proxy Service Mesh
Control Plane
- 解决 dubbo 多语言问题
Router Rule
com.alibaba.dubbo.hello
192.168.1.1
192.168.1.2
dubbo-go-pixiu
192.168.1.3
14. 3. Apache/dubbo-go-pixiu
15. 泛化调用
泛化引用
16. Pixiu gateway
https://github.com/apache/dubbo-go-pixiu
17. Pixiu gateway
18. Pixiu gateway
Pixiu 不足:
1 扩展性不足,后续支持 wasm 技术
2 稳定性需要更多场景验证
3 性能需要向 envoy 看齐
互联互通:
请求: HTTP \ gRPC \ Dubbo
后台服务: HTTP \ gRPC \ Dubbo \ Dubbogo \ Spring Cloud
19. 4. 跨域通信
20. 跨域服务调用面临的问题
VPC2
VPC1
WAF防护
证书管理
App1(单体应用)
Ingress
云原生网关
认证登录 统一接入
三方认证 流量调度
App2(微服务)
1、网络不通
2、业务边缘部署
3、协议不同
4、安全域不同
5、跨region
App3(服务网格)
com.alibaba.dubbo.hello
云原生网关
Nacos(业务域1)
Ingress
云原生网关
云原生网关
192.168.1.3
K8s(API-Server)
限流熔断
风险预警
Function(Serverless)
21. 基于 RocketMQ 的跨域服务调用
VPC2
VPC1
WAF防护
证书管理
Ingress
云原生网关
认证登录 统一接入
三方认证 流量调度
Ingress
云原生网关
限流熔断
风险预警
-
App1(单体应用)
App2(微服务)
消息
App3(服务网格)
Single Tunnel
com.alibaba.dubbo.hello
Nacos(业务域1)
192.168.1.3
K8s(API-Server)
Function(Serverless)
-
RocketMQ 天然可
做到网络隔离
请求消息固化在
Broker ,便于
tracing 与日志分
析
22. RocketMQ 的 Request-Reply
同步 RPC 流程
Broker 处理 RPC 消息流程
23. 5. 服务优雅下线
24. 负载均衡
25. 反注册
26. 拒绝新请求
27. 服务端处理现有请求
28. 客户端等待现有请求
29. 效果
30. 6. 社区
31. dubbo-go-boot v1
32. dubbo-go-boot v2
https://github.com/dubbogo/dubbo-go-boot
33. Arana
github.com/arana-db/arana
34. 2022 dubbogo
4067
STARS
8588
725
COMMITS FORKS
截止 20220109
35. 2022 dubbogo
dubbogo 社区公众号
36. Thank you !