《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——四、服务网格(4) https://developer.aliyun.com/article/1223945
3. 基于Istio & xDS Proxyless的Mesh示例
Proxyless模式是指Dubbo直接与Istiod通信,通过xDS协议实现服务发现和服务治理等能力。
本示例中将通过一个简单的示例来演示如何使用Proxyless模式。
1) 代码架构
本小节中主要介绍本文所使用的示例的代码架构,通过模仿本示例中的相关配置改造已有的项目代码可以使已有的项目快速跑在Proxyless Mesh模式下。
a) 接口定义
为了示例足够简单,这里使用了一个简单的接口定义,仅对参数做拼接进行返回。
b) 接口实现
c) 客户端订阅方式
由于原生xDS协议无法支持获取从接口到应用名的映射,因此需要配置providedBy参数来标记此服务来自哪个应用。
未来我们将基于Dubbo Mesh的控制面实现自动的“服务映射关系”获取,届时将不需要独立配置参数即可将Dubbo运行在Mesh体系下,敬请期待。
d) 服务端配置
服务端配置注册中心为istio的地址,协议为xds。
我们建议将protocol配置为tri协议(全面兼容grpc协议),以获得在istio体系下更好的体验。
为了使Kubernetes感知到应用的状态,需要配置qosAcceptForeignIp参数,以便Kubernetes可以获得正确的应用状态对齐生命周期。
e) 客户端配置
客户端配置注册中心为istio的地址,协议为xds。
快速开始
Step 1:搭建Kubernetes环境
目前Dubbo仅支持在Kubernetes环境下的Mesh部署,所以在运行启动本示例前需要先搭建Kubernetes环境。
搭建参考文档:
• minikube
• kubeadm
• k3s
Step 2:搭建Istio环境
搭建Istio环境参考文档:Istio安装文档
注:
安装Istio的时候需要开启first-party-jwt支持。(使用istioctl工具安装的时候加上--set values.global.jwtPolicy=first-party-jwt参数),否则将导致客户端认证失败的问题。
附安装命令参考:
Step 3:拉取代码并构建
Step 4:构建镜像
由于Kubernetes采用容器化部署,需要将代码打包在镜像中再进行部署。
Step 5:创建namespace
Step 6:部署容器
查看consumer的日志可以观察到如下的日志:
《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——四、服务网格(6) https://developer.aliyun.com/article/1223940