<返回更多

Java原生API网关ShenYu

2022-09-09  今日头条  EnvDev
加入收藏

微服务网关

 

数据交互示意图

 

数据同步

 

admin与网关进行数据同步。

数据同步是指在 shenyu-admin 后台操作数据以后,使用何种策略将数据同步到 Apache ShenYu 网关。Apache ShenYu 网关当前支持ZooKeeper、WebSocket、Http长轮询、Nacos 、Etcd 和 Consul 进行数据同步。

admin配置文件

shenyu:
  register:
    registerType: nacos #http #zookeeper #etcd #nacos #consul
    serverLists: xxx.xxx.xxx.xxx:8848 #localhost:2181 #http://localhost:2379 #localhost:8848
    props:
      sessionTimeout: 5000
      connectionTimeout: 2000
      checked: true
      zombieCheckTimes: 5
      scheduledTime: 10
      nacosNameSpace: ShenyuRegisterCenter
   sync:
     nacos:
       url: xxx.xxx.xxx.xxx:8848
       namespace: ShenyuRegisterCenter

网关配置

  spring:
		cloud:
    	discovery:
      	enabled: true
    	nacos:
      	discovery:
        	server-addr: 10.21.2.101:8848 # Spring Cloud Alibaba Dubbo use this.
        	enabled: true
        	namespace: ShenyuRegisterCenter
shenyu:
   sync:
     nacos:
       url: xxx.xxx.xxx.xxx:8848
       namespace: ShenyuRegisterCenteregisterCenter

客户端配置

spring:
  cloud:
    discovery:
      enabled: true
    nacos:
      discovery:
        server-addr: 10.21.2.101:8848 # Spring Cloud Alibaba Dubbo use this.
        enabled: true
        namespace: ShenyuRegisterCenter
shenyu:
  register:
    registerType: nacos #http #zookeeper #etcd #nacos #consul
    serverLists: 10.21.2.101:8848 #localhost:2181 #http://localhost:2379 #localhost:8848
    props:
      username: admin
      password: 123456
      nacosNameSpace: ShenyuRegisterCenter
  client:
    springCloud:
      props:
        contextPath: /springcloud

应用客户端接入是指将微服务应用的接口信息同步到shenyu-admin,当前支持Http、 Dubbo、 Spring Cloud、 gRPC、 Motan、 Sofa、 Tars等微服务协议的接入。

应用客户端可以通过Http与admin直接注册;也支持已中间件过渡数据如Zookeeper、Etcd、Consul和Nacos,应用客户端和shenyu-admin通过中间件的数据监听实现数据的同步。

功能清单

 

 

插件集合

HTTP

插件名称

功能

contextpath

设置服务的上下文路径;在接口调用的时候插件统一给服务器的接口地址加上前缀

modifyResponse

对响应进行修改

paramMApping

请求参数进行修改

redirect

重定向请求

request

请求参数、请求头以及 Cookie 来添加、修改、移除请求头

rewrite

重写请求路径

代理

插件名称

功能

divide

处理 http协议 请求

dubbo

dubbo插件是将 http协议 转换成 dubbo协议 的插件

SpringCloud插件

将http协议 转成 Spring Cloud协议

熔断限流

sentinel插件是网关用来对流量进行限流与熔断的可选选择之一

安全

插件名称

功能

cryptorRequest

插件是通过 fieldNames 去匹配 requestBody 里面的参数进行 解密 处理,替换当前 requestBody 内容

CryptorResponse

fieldNames 去匹配 responseBody 里面的参数进行 加密 处理,替换当前 fieldNames 对应内容

jwt 插件

jwt 插件,是针对 http 请求头的 token属性或者是 authorization 属性携带值进行鉴权判断,兼容 OAuth2.0

OAuth2

插件使用 Webflux OAuth2 实现,用于支持 OAuth 协议

Sign插件

用来对请求进行签名认证

可观察

  1. 请求日志记录插件
  1. Metrics插件插件是网关用来监控自身运行状态(JVM相关),请求的响应迟延,QPS、TPS等相关metrics

问题

  1. API网关缺少服务注册的信息,按理说网关应该可以观测到当前应用的服务实例数;
  2. 依赖组件较多(如果整体平台技术选型为nacos,则可以接受)
  3. 客户端需要依赖thin sdk实现客户端注册服务接口信息到注册中心
  4. 客户端调用http 头需要新增rpc_type属性
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>