Java原生API网关ShenYu

微服务网关

Java原生API网关ShenYu

文章插图
【Java原生API网关ShenYu】 
数据交互示意图
Java原生API网关ShenYu

文章插图
 
数据同步
Java原生API网关ShenYu

文章插图
 
admin与网关进行数据同步 。
数据同步是指在 shenyu-admin 后台操作数据以后,使用何种策略将数据同步到 Apache ShenYu 网关 。Apache ShenYu 网关当前支持ZooKeeper、WebSocket、Http长轮询、Nacos 、Etcd 和 Consul 进行数据同步 。
admin配置文件shenyu:register:registerType: nacos #http #zookeeper #etcd #nacos #consulserverLists: xxx.xxx.xxx.xxx:8848 #localhost:2181 #http://localhost:2379 #localhost:8848props:sessionTimeout: 5000connectionTimeout: 2000checked: truezombieCheckTimes: 5scheduledTime: 10nacosNameSpace: ShenyuRegisterCentersync:nacos:url: xxx.xxx.xxx.xxx:8848namespace: ShenyuRegisterCenter网关配置spring:cloud:discovery:enabled: truenacos:discovery:server-addr: 10.21.2.101:8848 # Spring Cloud Alibaba Dubbo use this.enabled: truenamespace: ShenyuRegisterCentershenyu:sync:nacos:url: xxx.xxx.xxx.xxx:8848namespace: ShenyuRegisterCenteregisterCenter客户端配置spring:cloud:discovery:enabled: truenacos:discovery:server-addr: 10.21.2.101:8848 # Spring Cloud Alibaba Dubbo use this.enabled: truenamespace: ShenyuRegisterCentershenyu:register:registerType: nacos #http #zookeeper #etcd #nacos #consulserverLists: 10.21.2.101:8848 #localhost:2181 #http://localhost:2379 #localhost:8848props:username: adminpassword: 123456nacosNameSpace: ShenyuRegisterCenterclient:springCloud:props:contextPath: /springcloud应用客户端接入是指将微服务应用的接口信息同步到shenyu-admin,当前支持Http、 Dubbo、 Spring Cloud、 gRPC、 Motan、 Sofa、 Tars等微服务协议的接入 。
应用客户端可以通过Http与admin直接注册;也支持已中间件过渡数据如Zookeeper、Etcd、Consul和Nacos,应用客户端和shenyu-admin通过中间件的数据监听实现数据的同步 。
功能清单 
Java原生API网关ShenYu

文章插图
 
插件集合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属性




    推荐阅读