https://github.com/dubbogo/dubbo-go-proxy
dubbo-go 已经作为了 golang 服务与原有 dubbo 集群打通的首选 RPC 框架。其中比较有代表性的 open-gateway 网关系统(下文统一称 gateway,开源版本见 https://github.com/dubbogo/dubbo-go-proxy)。该 gateway 动态加载内部 dubbo 接口信息,以 HTTP API 的形式对外暴露。该网关意在解决上一代网关的以下痛点。
通过页面配置 dubbo 接口开放规则,步骤繁琐,权限难以把控。
接口非 RESTful 风格,对外部开发者不友好。
依赖繁重,升级风险大。
并发性能问题。
架构设计
针对如上痛点,随即着手准备设计新的 gateway 架构。首先就是语言选型,golang 的协程调用模型使得 golang 非常适合构建 IO 密集型的应用,且应用部署上也较 java 简单。经过调研后我们敲定使用 golang 作为 proxy 的编码语言,并使用 dubbo-go 用于连接 dubbo provider 集群。provider 端的业务应用通过使用 java 的插件,以注解形式配置 API 配置信息,该插件会将配置信息和 dubbo 接口元数据更新到元数据注册中心(下图中的 redis )。这样一来,配置从管理后台页面转移到了程序代码中。开发人员在编码时,非常方便地看到 dubbo 接口对外的 API 描述,无需从另外一个管理后台配置 API 的使用方式。
https://github.com/dubbogo/dubbo-go-proxy
https://gocn.vip/topics/10527