一、概述
Apache ShenYu (incubating)是一个异步的,高性能的,跨语言的,高性能,多协议,易扩展,响应式的API网关。 兼容各种主流框架体系,支持热插拔,用户可以定制化开发,满足用户各种场景的现状和未来需求,经历过大规模场景的锤炼。 支持丰富的协议:Http
、Spring Cloud
、gRPC
、Dubbo
、SOFARPC
、Motan
、Tars
等等。
2022年7月28日Apache软件基金会宣布Apache ShenYu正式毕业,成为Apache顶级项目(TLP)
ShenYu(神禹)是中国古代君主夏禹(后世亦称大禹)的尊称,他留下了三渡黄河造福人民并成功治理黄河洪水的感人故事。他和尧、舜一起被认为是中国古代三大帝王之一。
- 首先,ShenYu这个名字是为了弘扬我们中华文明的传统美德。
- 其次,对于网关来说最重要的是流量管理。
- 最后,社区将以公平、公正、公开、择优的方式做事,在向神禹致敬的同时,也符合 Apache Way。
Apache ShenYu特点
- 代理:支持Apache Dubbo,Spring Cloud,gRPC,Motan,SOFA,TARS,WebSocket,MQTT
- 安全性:签名,OAuth 2.0,JSON Web令牌,WAF插件
- API治理:请求、响应、参数映射、Hystrix、RateLimiter插件
- 可观测性:跟踪、指标、日志记录插件
- 仪表板:动态流量控制,用户菜单权限的可视化后端
- 扩展:插件热插拔,动态加载
- 集群:NGINX、Docker、Kubernetes
- 语言:提供.NET,Python,Go,Java客户端用于API注册
官方文档:Apache ShenYu 介绍 | Apache ShenYu
二、架构
2.1、Apache ShenYu Admin
Apache ShenYu Admin
是网关的后台管理系统,能够可视化管理所有插件、选择器和规则,设置用户、角色,控制资源。
2.1.1 插件、选择器和规则
- 插件:
Apache ShenYu
使用插件化设计思想,实现插件的热插拔,极易扩展。内置丰富的插件,包括RPC
代理、熔断和限流、权限认证、监控等等。 - 选择器:每个插件可设置多个选择器,对流量进行初步筛选。
- 规则:每个选择器可设置多个规则,对流量进行更细粒度的控制。
- 数据库
UML
类图:
-
设计详解:
-
一个插件对应多个选择器,一个选择器对应多个规则。
-
一个选择器对应多个匹配条件,一个规则对应多个匹配条件。
-
每个规则在对应插件下,有不同的处理能力。
-
2.1.2 资源权限
-
资源代表的是
shenyu-admin
用户后台中的菜单或者按钮。 -
资源权限数据表用来存储用户名称、角色、资源数据以及对应关系。
-
数据库
UML
类图:
- 设计详解:
- 一个用户对应多个角色,一个角色对应多个资源。
2.1.3 数据权限
- 数据权限表用来存储用户,选择器、规则对应关系。
- 数据库
UML
类图:
- 设计详解:
- 数据权限的表为:
data_permission
,一个用户对应多条数据权限。 - 数据权限表中字段
data_type
区分不同的类型数据, 具体对应关系如下:0 -> 选择器, 1 -> 规则
。 - 数据权限表中字段
data_id
存放相应类型的主键id
。
- 数据权限的表为:
2.1.4 元数据
- 元数据主要是用于网关的泛化调用。
- 每个接口方法,对应一条元数据。
- 数据库
UML
类图:
-
设计详解:
-
path
:在请求网关的时候,会根据path
来匹配到一条数据,然后进行后续的流程。 -
rpc_ext
:用于保存RPC
代理中的扩展信息。
-
2.1.5 字典管理
- 字典管理主要用来维护和管理公用数据字典。
- 数据库
UML
类图:
2、Apache ShenYu Bootstrap
Apache ShenYu Bootstrap是Apache ShenYu网关的核心模块之一,主要用于启动项目并提供负载均衡、熔断、限流和路由等逻辑处理,
Apache ShenYu Bootstrap是Apache ShenYu网关的一个关键组件,主要负责启动网关服务并加载其他模块的代码。它包含了启动类ShenyuBootstrapApplication
,通过运行这个启动类,可以启动整个网关服务。此外,Apache ShenYu Bootstrap还提供了负载均衡、熔断、限流和路由等核心功能,确保网关能够高效地处理请求并优化系统性能。
三、部署(Docker)
1、ShenYu Admin
docker pull apache/shenyu-admin
docker network create shenyu
docker run -d -p 9095:9095 --net shenyu apache/shenyu-admin
浏览器输入:http://hadoop100:9095/
默认账号: admin
默认密码: 123456
登录后重新设置密码为 SehnYu@123
2、ShenYu Bootstrap
docker pull apache/shenyu-bootstrap
docker run -d -p 9195:9195 -e "shenyu.local.enabled=true" --net shenyu apache/shenyu-bootstrap
标签:插件,ShenYu,部署,网关,Apache,shenyu,选择器
From: https://blog.csdn.net/taogumo/article/details/143221194