- ShenYu Cluster
- ShenYu Admin,管理 ShenYu gateway
- Plugin
ShenYu 中的一些概念插件、选择器、规则,这些元素都可以在 ShenYu Admin UI 后台进行配置管理 。
- 插件:Apache ShenYu 使用插件化设计思想,可以实现插件的热插拔,易扩展 。内置了丰富的插件,包括 RPC 代理、熔断和限流、权限认证、监控等等 。
- 选择器:每个插件可以设置多个选择器,对流量进行初步筛选 。
- 规则:每个选择器可以设置多个规则,对流量进行更细粒度的控制 。
插件、选择器和规则执行规则:他们之间的数据关系,数据库 UML 图:
当流量进入到 Apache ShenYu 网关之后,会先判断是否有对应的插件,该插件是否开启;
然后判断流量是否匹配该插件的选择器 。
然后再判断流量是否匹配该选择器的规则 。
如果请求流量能满足匹配条件才会执行该插件,否则插件不会被执行,处理下一个 。
文章插图
?(来自:https://shenyu.apache.org/zh/docs/design/database-design)
说明:一个插件可以对应多个选择器,一个选择器可以对应多个规则,一个规则可以对应多个匹配条件 。
3.3 ShenYu Admin 后台管理Apache ShenYu Admin 是网关的后台管理系统,能够可视化管理所有插件、选择器和规则,设置用户、角色、控制资源 。
这些更改通过数据同步到网关的 JVM 内存里 。
Admin 使用文档:https://shenyu.apache.org/zh/docs/user-guide/admin-usage/data-permission
后台界面:
文章插图
3.3 插件内置插件ShenYu 内置了很多插件 。在 ShenYu Admin 后台可以设置这些插件 。
比如设置 hystrix 熔断保护服务的插件 。添加插件、设置插进的步骤详情请查看文档 。
内置插件的文档:https://shenyu.apache.org/zh/docs/plugin-center/http-process/contextpath-plugin 。
ShenYu 网关内置了很多插件,详情看文档 。
自定义插件文档:https://shenyu.apache.org/zh/docs/developer/custom-plugin
3.4 扩展功能SPI 扩展比如自定义负载均衡策略,可以对
org.apache.shenyu.loadbalancer.spi.LoadBalancer
进行自定义扩展 。详情文档:https://shenyu.apache.org/zh/docs/developer/spi/custom-load-balance
插件扩展也就是自定义插件功能,上文有讲到过 。
自定义插件文档
自定义 Filter这里有一个示例,对
org.springframework.web.server.WebFliter
进行扩展 。文档地址 -> filter 扩展3.5 集群第一种:
利用 Nginx 负载均衡能力实现集群功能,文档地址->集群 。
第二种:
Apache Shenyu-nginx 模块实现集群,https://github.com/apache/shenyu-nginx,在 github 上的 README 看到这个功能模块还是一个实验性质的(到目前2022.10.21) 。
四、参考
- https://github.com/Netflix/zuul/wiki/Getting-Started zuul1 wiki
- https://github.com/Netflix/zuul/wiki/Getting-Started-2.0 zuul2 wiki
- https://netflixtechblog.com/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
- https://github.com/Netflix/zuul/wiki/Filters zuul2 filter doc
- https://spring.io/projects/spring-cloud-gateway
- https://shenyu.apache.org/ShenYu site
- https://shenyu.apache.org/zh/docs/plugin-center/http-process/contextpath-plugin ShenYu 插件文档
- https://shenyu.apache.org/zh/docs/developer/custom-filter ShenYu Filter 扩展
经验总结扩展阅读
- 微信如何一键转发(朋友圈一键转发功能)
- 怎么把别人的微信转发给别人(微信怎么转发别人的朋友圈)
- 天涯明月刀9月28日微信每日一题答案是什么
- 黑色沙漠手游9月28日微信每日一题答案是什么
- 新剑侠情缘9月28日微信每日一题答案分享
- 火影忍者9月28日微信每日一题答案是什么
- TCL电视安装注意事项 TCL电视售后服务
- 微信公众号怎么转发(微信上面的公众号如何转发)
- 怎样转发微信内容到朋友圈(如何将微信中的内容转发到朋友圈)
- 微信如何转发(微信朋友圈一键转发)