网关
网关运行分析报告
网关运行分析报告 - 2025-02-15
网关运行分析报告 - 2025-02-22
网关运行分析报告 - 2025-02-28
1.shenyu网关内外网使用
2.shenyu网关的具体使用
记一次网关线上问题之icsp访问ERP
再次思考多套ak/sk同时访问同一资源路径问题
网关接入说明
网关接入说明补充
网关分配各系统命名
网关BUG及二开
网关管理端访问地址
修改requestBody与responseBody
shenyu工程理解
获取requestBody异步问题
shenyu工程部署
排查sign插件报错500问题
shenyu数据结构设计
shenyu网关请求过程
shenyu自定义插件
记一次网关线上问题----网关无法对外提供服务
网关插件更新报错问题
网关中grayTag的使用
Exceeded limit on max bytes to buffer : 262144
网关中Divide插件中Selector中Handler中配置丢失问题
网关请求下游系统时长记录
通用测试:获取网关的sign值
网关分发主数据设想方案
铁骑主数据分发机制完善
27.GTMS&ITMS与gateway的关系
28.ZPI与gateway的关系
26.网关验签场景
29.PC端空值,服务端正常请求
30.网关requestMaxSize值
31.跨系统跨语言日志链路追踪
32.网关异步分发讨论
33.网关LoggingConsole丢失日志排查
34.网关升级shenyu-admin
35.网关异步分发插件 - 接入文档
本文档使用「觅思文档专业版」发布
-
+
首页
shenyu工程理解
## 简介 官方文档介绍得比较抽象,很多地方没有详细讲解,我这里从github上拉取源码下来,记录下自己的见解。 git地址:https://github.com/apache/shenyu 工程模块比较多,第一次拉取比较慢,约10多分钟。 拉取完后截图如下:  如下介绍工程文件及各个模块,这里主要介绍官方文档中没有说明的地方,官网中明确说明的地方,这里简介略过。 ## db文件 截图如下  该文件夹下存在init与upgrade两个子文件夹,init表示初始化sql文件,upgrade表示sql升级文件,init文件夹下有三个子文件夹mysql、oracle、pgsql,由此可见,该工程仅支持如上三种数据库。upgrade文件夹下存在各种数据库对应的升级sql,由此可见,该项目初始的版本应该是2.4.1。 ## shenyu-admin 截图如下  该模块的作用是提供网关管理平台,单独部署该模块,官网链接:https://shenyu.apache.org/zh/docs/deployment/deployment-local 部署成功后,登录页面如下  登录进去就可以进行相关操作了。 查看该模块内容,包括java文件夹(存放源码)与resources文件夹(存放资源文件),其中源码部分后面有专门的章节讲解,资源文件部分主要关注static文件夹,它包含了index.xxx.css、index.yyy.js、index.html与application.yml文件,由此可见该模块包含了前后端代码,是部署在一起的,如果不满意官方的样式,可以修改这里的前端文件。application.yml主要指明该项目使用哪种数据库,具体的后面有专门章节讲解。 ## shenyu-alert 截图如下  该模块的作用是提供预警功能,查看源码可知,目前支持DingTalk与Email预警,该模块代码有待完善。 ## shenyu-bootstrap 截图如下  该模块的作用是提供网关服务,shenyu-admin模块提供管理端,服务端功能在这个模块提供,支持扩展插件、自建网关,自建样例官网推荐:https://shenyu.apache.org/zh/docs/deployment/deployment-custom 我们发现该模块没有实际的代码,只有一个启动类,what?就这样能够提供服务?服务端我们的印象中应该是java源码(包括controller、ervice、mapper等),此处如何提供服务,后面专门章节讲解,注意查看shenyu-spring-boot-starter模块。 ## shenyu-client 截图如下  该模块提供客户端接入方式。客户端指的是用户的(微)服务,由截图中源码可知,网关支持客户端dubbo、grpc、http、motan、sofa、tars、websocket等协议接入。客户端接入到网关是通过注册中心来实现的,注册中心支持http、zookeeper、nacos等(这部分后续模块有介绍)。 如下图是我单位实际应用中部分微服务接入方式  由此可见,我单位(部分)服务的接入方式包括springcloud与http。 ## shenyu-common 截图如下  该模块是一个公共包,包括常量包、枚举类、定时器类、通用工具类等。不提供任何服务功能。 ## shenyu-disruptor 截图如下  该模块封装了一个高性能的队列,存在提供者与消费者,我们知道高并发场景时,需要队列来削峰、限流等,该模块仅仅是一个队列,不提供任何服务功能,市面上可以采用kafka、MQ等三方插件来满足队列场景需求。 ## shenyu-dist 截图如下  该模块提供打包配置,截图中以shenyu-admin为例,存在Dockerfile文件与bin目录下的启停脚本。由该模块可知需要打包的服务只有admin(管理端)与bootstrap(服务端),后续也是着重从源码层面讲解这两个服务。 ## 后续模块 shenyu-examples:样例模块,提供了集成eureka、dubbo、http等样例 shenyu-loadbalancer:负载均衡模块,网关支持负载均衡功能 shenyu-plugin:插件模块,包括httpProcess、Proxy、熔断限流、Security、Cache等分类,每种分类下支持多种方式。自建网关有个很重要的功能点就是扩展插件,就可以参考这里实现。 shenyu-protocol:协议模块。包括grpc、mqtt等,有待完善。 shenyu-register-center:注册中心模块,客户端接入到网关是通过注册中心来实现的,注册中心包括zookpper、nacos、eruka等 shenyu-spi:spi扩展模块,支持使用者自己扩展功能,比如扩展选择器中的条件、扩展注册中心、扩展负载均衡等。 shenyu-spring-boot-starter:启动模块,包括客户端启动、网关启动、接口启动、插件启动、数据同步启动。刚才bootstrap模块只有一个启动类,项目启动后会加载这个模块中的配置类,从而实现整个后端服务全部启动。 shenyu-sync-data-center:数据同步模块,实现admin与bootstrap的数据同步,实现方式有zookeeper、websocket、http轮询、nacos同步等 shenyu-web:外部更新模块,刚才admin模块中的java中的源码可以实现在管理端的控制,web支持外部其他服务更新网关数据库。 ## 结束 总结如上理解: admin:提供管理端功能 bootstrap:提供服务端功能 client:网关支持的客户端接入协议 register-center:网关支持的客户端接入方式(注册中心类型) plugin:所有的插件列表 spring-boot-starter:网关启动时带起来的服务(注册中心、插件、数据同步) sync-data-center:数据同步服务
李贤利
2022年9月15日 22:52
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期