更新时间:2023-06-29 GMT+08:00
PASSTHROUGH方案
方案介绍
SDK中客户端使用Interface调用目标服务时,修改原有服务发现逻辑。将原有通过Interface查找服务实例,修改为通过接口查找服务名,直接对服务名发起访问。
详细说明
对于Dubbo协议的不同版本会有不同:
- 2.7.4+版本:2.7.4以上的Cloud Native版本中重构过与Kubernetes一致的服务发现模型,直接可以从Interface关联到服务信息。
- 2.7.3及之前版本:Dubbo社区版本未提供Interface到Service的二级关系,需要SDK根据自己的实际使用方式来维护Interface到服务的映射关系。如可以使用在服务注册时通过扩展信息的方式提供服务名等信息。
客户实际使用中可以根据自己的SDK使用情况选择灵活的处理方式。对于老版本的SDK可以基于现有的服务注册和服务发现流程,做如下处理:
- 在注册信息中扩展Service的定义。在服务部署时会通过环境变量将服务的元数据信息注入到SDK中,包括appname、namespace,分别表示部署的服务名、部署的命名空间。
- 在服务启动时向注册中心注册Dubbo接口和Kubernetes服务名和命名空间的关系。
- 在客户端发起访问时,根据原有服务发现的流程根据Interface查询到服务的元数据,并用对应的服务信息组装RPC请求。建议在Dubbo请求中使用Attachment扩展字段存储appname、namespace信息。
父主题: SDK适配方式