Dubbo网关解决方案Kong + Dubbo Proxy

Dubbo开源分布式远程调用框架应用广泛,在局域网内高频调用效率高,它基于TCP/IP协议封装。但随着RESTFUL OPEN API接口流行,在实现Dubbo接口的同时还需要再实现一些和定义一次RESTFUL接口,开发效率比较低,能否找到一种方法直接通过HTTP协议经过Proxy代理转化直接调用Dubbo接口呢?本文主要介绍Apache开源Dubbo Proxy项目。

Dubbo Proxy

Dubbo Proxy是一个Dubbo网关,可以将Http请求转换成Dubbo的协议,调用Dubbo服务并且返回结果,后续还会集成熔断,限流,api管理等功能。

用法

http请求格式如下:

POST {application Name}/​{Interface name}?version={version}&group={group}

其中group和version是Dubbo服务对应的group和version,为可选参数

http POST body如下:

{
    "methodName" : "sayHello",
    "paramTypes" : ["org.apache.dubbo.demo.model.User"],
    "paramValues": [
        {
            "id": 23,
            "username": "testUser"
        }
    ]
}
  • 在Dubbo 2.7及后续版本中,paramTypes为可选,如果不填写,Dubbo Proxy会在元数据中心获取对应的参数类型。
  • 可以在application.yml中指定注册中心和元数据中心的地址
proxy.registry.address: zookeeper://127.0.0.1:2181   #注册中心地址,和Dubbo服务的注册中心相同
proxy.metadata-report.address: zookeeper://127.0.0.1:2181  #元数据中心的地址,未指定paramTypes时查找使用,支持Dubbo 2.7及以后版本

Kong网关结合Dubbo Proxy结合部署架构,Kong是一个高性能网关,相关资料请参阅官网或者小工蚁其他文章。

Kong作为安全验证、日志收集、频次控制统一入口。HTTP服务请求经过Kong网关,配置多个Target Dubbo Proxy服务器,服务事先可以定义在Kong网关中。

Dubbo Proxy监听Dubbo服务注册中心,DUBBO服务发生相应变化时,Dubbo Proxy可以随时将不工作的服务剔除掉。

当Dubbo Proxy发生故障不工作时,通过Kong Health检查功能,将不正常工作的或无法工作的Dubbo Proxy剔除掉。

当Dubbo服务接口发生变化时:

  1. 接口业务逻辑修改,接口名称不修改,Kong网关服务配置不需要修改;
  2. 接口业务接口名称修改,新增接口和删除接口时,需要更新Kong网关相关服务的配置。

此架构也可以部署于Kubernetes原生云环境中,通过监控Dubbo服务处理能力是否饱和进行水平扩展响应的应用对应的服务。

推荐文章

沪公网安备 31010702002009号