当前位置: 首页 > news >正文

dubbo http流量接入dubbo后端服务

简介

dubbo协议是基于TCP的二进制私有协议,更适合作为后端微服务间的高效RPC通信协议,也导致dubbo协议对于前端流量接入不是很友好。在dubo框架中,有两种方式可以解决这个问题:

  • 多协议发布【推荐】,为dubbo协议服务暴露rest风格的http协议访问方式。
  • 通过网关实现 http->dubbo协议转换,这种方式需要将http协议转换为后端服务能识别的dubbo协议,要求网关必须支持dubbo协议。

同时发布http、dubbo协议

dubbo框架支持为同一个服务发布多个协议,并且支持客户端通过同一个端口以不同的协议访问服务。

发布方式一

dubbo协议的基础上增加tri协议

dubbo:
  protocol:
    name: dubbo
    port: 20080
    ext-protocol: tri
public interface DemoService01 {
    String buyApple(Apple apple);
    String sayHello(String name);
}

public class Apple implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String name;
    
    public Apple(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Apple{" +
                "name='" + name + '\'' +
                '}';
    }
}

访问

curl --header "Content-Type:application/json"  --data '{"name":"apple"}' http://localhost:20880/com.doudou.rpc.api.DemoService01/buyApple 

curl --header "Content-Type:text/html"  --data "name" http://localhost:20880/com.doudou.rpc.api.DemoService01/sayHello 
发布方式二

只使用tri协议

dubbo:
  protocol:
    name: tri
    port: 50053

访问

curl --header "Content-Type:application/json"  --data '{"name":"apple"}' http://localhost:50053/com.doudou.rpc.api.DemoService01/buyApple 

curl --header "Content-Type:text/html"  --data "name" http://localhost:50053/com.doudou.rpc.api.DemoService01/sayHello 

使用网关转http协议为dubbo协议

网关需要实现的关键点:

  • 协议转换,支持http到dubbo协议的转换,包括参数映射。
  • 自动地址发现,支持Nacos、Zookeeper、Kubernetes等主流注册中心,动态感知后端dubbo实例变化。
  • 结合dubbo协议的路由,如在发起 dubbo 协议调用时,支持按照特定规则地址筛选、传递附加参数到 dubbo 后端服务。

支持的开源网关

  • Higress
  • Apache APISIX
  • Apache Shenyu

参考HTTP网关接入->dubbo协议

相关文章:

  • GRS认证是什么?GRS认证有什么意义?对企业发展的好处
  • 剑指Offer49 -- DP_贪心
  • 高中数学联赛模拟试题第9套几何题
  • 使用YOLOv5训练自定义数据集
  • 阿里云云效 Maven
  • 前端技术有哪些
  • Canvas渲染管线解析:从API调用到像素落地的全过程
  • 蓝桥杯省模拟赛 阶乘求值
  • QEMU源码全解析 —— 块设备虚拟化(12)
  • 线性回归 + 基础优化算法
  • docker - compose up - d`命令解释,重复运行会覆盖原有容器吗
  • 滚珠花键的预压调整怎么做?
  • 附录C SLAC匹配过程命令定义与实际抓包
  • Go 语言标准库中math模块详细功能介绍与示例
  • GRS认证的主要步骤是什么?
  • Go 语言标准库中strings和strconv详细功能介绍与示例
  • Java基础 3.28
  • K8s Calico网络介绍
  • Z字形变换
  • UI产品经理基础(六):如何解决用户的质疑?
  • 营销做网站公司/软文营销的概念
  • 帮别人做网站的公司/宁波seo优化费用
  • 共和网站建设公司/好看的web网页
  • 商丘网站建设.com/网站策划报告
  • 工程施工合同协议书范本/seo监控
  • eclipse可以做网站吗/网站搜索排名优化