Dubbo插件

    • 插件是将 http协议 转换成 dubbo协议 的插件,也是网关实现dubbo泛化调用的关键。
    • dubbo插件需要配合元数据才能实现dubbo的调用。
    • apache dubboalibaba dubbo,都是使用该一插件。

    客户端接入Apache ShenYu网关后,会自动注册选择器和规则信息,关于选择器和规则配置,请参考: 。

    选择器处理

    选择器处理,即handle字段,是网关匹配到流量以后,可以进行处理的操作。更多信息请参考插件管理中的 。

    灰度路由

    • 灰度发布可以在发布新版本应用时,自定义控制新版本应用流量比重,渐进式完成新版本应用的全量上线,最大限度地控制新版本发布带来的业务风险,降低故障带来的影响面,同时支持快速回滚。

    当开启灰度是,网关的负载平衡算法将从当前节点列表中选择一个节点进行路由,并且您可以通过修改节点权重以更改负载平衡算法中节点的权重。

    需要注意的是,如果您的业务实例没有使用’shenyu-client-apache-dubbo’或者’shenyu-client-alibaba-dubbo’的客户端进行业务注册发现,您应该在当前选择器页面上手动添加节点信息进行灰度路由。

    规则处理

    Dubbo插件 - 图2

    规则处理,即handle字段,是网关对流量完成最终匹配后,可以进行处理的操作。更多信息请参考插件管理中的 。

    • 处理配置详解:

    • Apache ShenYu将获得相应服务的真实IP,并从dubbo注册中心发起rpc代理调用。

    每一个dubbo接口方法,都会对应一条元数据,当dubbo应用客户端接入到Apache ShenYu网关时,会自动注册,可以在 后台管理系统的基础配置 --> 元数据管理中查看。

    • 方法名称:需要调用的方法名。

    • 路径:http请路径。

    • 路径描述:对该路径的说明,方便查看。

    • 参数类型:dubbo接口的参数类型列表,此处有两种声明方式。例如一个接口为 update(Integer id, String name, Integer age)

      方式一、类型列表

      • 按照接口的参数类型顺序,通过半角逗号分隔。
      • 请求传参时需严格按照参数类型顺序传参,没有值的用 null占位 。请求体示例:{"id":1,"name": null,"age":18}

      方式二、名称映射

      • 使用 "参数名":"参数类型"表示一个参数,按接口参数类型顺序设置,半角逗号分隔。
      • 请求时无需关注顺序,也无需使用null占位。请求体示例: {"name":"Mike","id":1}
    • Rpc扩展参数:dubbo接口的其他配置,支持json格式,字段如下:
    • 服务接口:dubbo接口的全限定类名