请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

网关转发到Dubbo服务的实现机制是什么

  1. 目前支持http请求转Dubbo协议调用后端服务的网关有哪些开源项目or方案?
  2. 这些支持Dubbo的网关底层是否都是使用GenericService泛化调用实现的?

我想找个支持Dubbo的网关的开源项目研究一下底层的实现方式, 有什么好的推荐吗?

正在回答

1回答

目前没有什么特别好的可以借鉴,我们也是自主开发的一套内容。  简单点讲你可以理解为有一层Controller接收HTTP请求, 然后Controller后面集成了Dubbo的consumer,之后讲数据封装转发至provider。

GenericService目前我们已经几乎不用了,问题会比较多,如果要实现网关,建议直接使用泛型就可以了

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_慕丝0528892 #1
    GenericService有哪些问题? 能举例说说吗
    我们目前的网关是强依赖后端的API包, 每次改接口就要重启网关. 不知道你说直接使用的 泛型 是什么意思?
    对于网关的设计你们的实现思路能分享吗?
    回复 有任何疑惑可以回复我~ 2022-01-04 15:04:34
  • Allen 回复 提问者 qq_慕丝0528892 #2
    GenericService在Dubbo后期版本中已经属于过时的API了。 另外就是GenericService其实就是相当于Map, 网络传输使用Map传递有什么缺点,GenericService就有什么缺点。泛型就很简单,比如你定义一个Result的顶级对象, 然后里面用一个泛型的Data存储数据,这样你的所有传输都是Result,需要转成什么类型就用泛型解决就可以了
    回复 有任何疑惑可以回复我~ 2022-01-05 22:18:13
  • 提问者 qq_慕丝0528892 回复 Allen #3
    问题1:
    GenericService类在3.x版本有2个:
    com.alibaba.dubbo.rpc.service.GenericService 和 org.apache.dubbo.rpc.service.GenericService
    其中alibaba包下的有@Deprecated这个过时注解, 但是apache包下的并没有标明过时.
    不知道老师是在哪里了解的GenericService过时了呢?
    -
    问题2:
    我去了解了一下Soul网关的Dubbo插件实现代码, 实际上也是使用GenericService泛化调用, 是否这个插件的也有你说的同样的问题?
    -
    问题3:
    然后就是这个Result的顶级对象, 我们目前也是这样设计, 但没用泛型, 里边封装的是json格式的String, 然后在提供者接口入口处用工具类再把这个json字符串返序列化成对象.
    主要还是因为接收的对象网关没有引入, 网关是直接把http的body作为字符串直接给到后端服务.
    你们怎么解决这个问题? 
    如果泛型引入后端服务的接收对象, 那不还是会出现后端服务加一个接收对象, 网关就要重新打包发布吗?
    -
    问题4:
    你们网关是不是使用接口名"*"监控后端服务的上下线, 来完成前端http接口名和后端对应接口的映射关系? 还是通过什么设计完成http请求转到对应的dubbo接口呢?
    回复 有任何疑惑可以回复我~ 2022-01-06 00:59:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信