11|案例:如何基于Dubbo进行网关设计?
丁威
你好,我是丁威。
这节课我们通过一个真实的业务场景来看看 Dubbo 网关(开放平台)的设计要领。
设计背景
要设计一个网关,我们首先要知道它的设计背景。
2017 年,我从传统行业脱身,正式进入物流行业。说来也非常巧,我当时加入的是公司的网关项目组,主要解决泛化调用与协议转换代码的开发问题。刚进公司不久,网关项目组就遇到了技术难题。快递物流行业的业务量可以比肩互联网,从那时候开始,我的传统技术思维开始向互联网技术思维转变。
当时网关项目组的核心任务就是确保能够快速接入各个电商平台。我来简单说明一下具体的场景。
解释一下上面这个图。
物流公司内部已经基于 Dubbo 构建了订单中心微服务域,其中创建订单接口的定义如下:
外部电商平台众多,每一家电商平台内部都有自己的标准,并不会遵循统一的标准。例如在淘宝中,当用户购买商品后,淘宝内部会定义一个统一的订单外派接口。它的请求包可能是这样的:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了基于Dubbo进行网关设计的案例。作者通过自身经历,阐述了在物流行业中,网关项目组面临的技术难题和设计背景。主要围绕物流公司内部基于Dubbo构建的订单中心微服务域,以及外部电商平台的不同标准和接口定义展开讨论。作者指出,电商平台的话语权高于快递公司,因此物流公司需要适配不同电商平台的订单派发接口,而不能为每个电商平台开发一套下单服务。文章强调了网关设计的重要性,以及如何利用Dubbo网关来解决电商平台接入的问题,提高系统的可维护性和降低复杂度。整体而言,文章通过实际案例展示了基于Dubbo进行网关设计的技术特点和解决方案,对于想要了解该领域的读者具有一定的参考价值。文章详细介绍了网关设计的需求背景,并给出了设计方案,包括签名验证、服务配置和限流等方面。作者还通过关键代码的解读,深入讲解了Dubbo泛化调用的逻辑,使读者能够理论与实际相结合。此外,文章还提到了转换协议的普适性,以及对读者的课后题建议,鼓励读者通过实现一个demo级的网关设计来检测对知识的掌握程度。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《中间件核心技术与实战》,新⼈⾸单¥59
《中间件核心技术与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 放不下荣华富贵数字签名部分: 计算完sign再追加时间戳,时间戳就可能篡改,那还是避免不了重放攻击吧?
作者回复: 对的,数字签名主要还是进行身份验证与防止数据被篡改,重放攻击通常在服务端结合redis等缓存组件,进行处理。
2022-08-26归属地:上海32 - 雨落~紫竹其实这种配置话实体 用起来很灵活 比如我们对接第三方云厂商 就是将 接口传参 请求路径 返回结构 解析结构 鉴权 全部做成了配置话 之后接入其他云厂商 也就只是 配置和联调的工作2022-07-091
- 赤红热血根据这些元信息动态构建一个个消费者(服务调用者),进而通过创建的服务调用客户端发起 RPC 远程调用,最终实现网关应用的 Dubbo 服务调用。 1.这句话里面,消费者为啥是服务调用者? 2.啥叫“创建的服务调用客户端发起rpc远程调用”?这句话读的通吗2022-07-0921
- 🐝如何进行协议转换呢,有什么方案2023-03-28归属地:北京
- fantasyer老师,关于网关这块有三个问题想咨询一下 1、验证签名这块提到,时间戳不参与签名验证,为什么时间戳不参与签名验证,我理解时间戳参与签名可以防止时间戳被恶意篡改,进而可以防止交易恶意重复提交 2、代码invokerPams.put("class", "net.codingw.oms.vo.OrderItemVo");中这里的对象是不是应该是net.codingw.oms.vo.OrderVo,整个报文映射的类? 3、网关这部分设计重点讲了网关内部如何通过泛化调用后端的dubbo服务,想咨询下老师,这个案例中网关对外的接口部分是如何设计的?即给不同的电商是如何暴露接口服务的,从而灵活做到基本不用修改、快速扩展支持?2022-07-203
- 公号-技术夜未眠如果已经存在对应的 Invoker 对象,为了不影响现有调用,应该先用新的 Invoker 对象去更新缓存,然后再销毁旧的 Invoker 对象。 其中,不影响现有调用,请问如何理解?2022-07-121
收起评论