源码环境搭建
获取源码
git clone https://github.com/apache/incubator-shenyu.git
源码编译、运行环境
- JDK 1.8+
- Maven 3.2.x
- mysql
maven编译
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
shenyu 网关简介(来源于shenyu官网介绍)
概述
它的前身是 Dromara 开源组织的一个开源项目 Soul,最近正式加入了 apache基金孵化器,改名为 ShenYu。
这是一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Shenyu由此诞生!
特性
- 支持各种语言(http协议),支持 dubbo,springcloud协议。
- 插件化设计思想,插件热插拔,易扩展。
- 灵活的流量筛选,能满足各种流量控制。
- 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 流量配置动态化,性能极高,网关消耗在 1~2ms。
- 支持集群部署,支持 A/B Test, 蓝绿发布。
架构图
图片来源于官方
开发工具里运行调试
项目模块概述:
- shenyu-admin: 网关后台管理服务,主要功能为管理和配置业务网关配置.
- shenyu-bootstrap: 用于启动shenyu网关项目(可集群部署)
- shenyu-client : 用户可以使用 Spring MVC,Dubbo,Spring Cloud 快速访问
- shenyu-common : 框架的通用类
- shenyu-dist : 构建项目
- shenyu-metrics : prometheus(普罗米修斯)实现的 metrics
- shenyu-plugin : shenyu 支持的插件集合
- shenyu-spi : 定义 shenyul spi
- shenyu-spring-boot-starter : 支持 spring boot starter
- shenyu-sync-data-center : 提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步数据
- shenyu-examples : RPC 示例项目
- shenyu-web : 包括插件、请求路由和转发等的核心处理包
快速体验
shenyu-admin
shenyu-admin 是网关的后台管理系统,我们可以先将它的服务启动起来。步骤:
- 配置说明:网关后台管理的是业务相关的配置,并持久化到数据库中的,启动前要将application.yml中的数据库配置该为自己的配置。不需要手动建库建表,启动时系统会检测配置的数据库中是否存在相关库和表,如果不存在会根据sql脚本创建,sql脚本在项目中:resources/META-INF 下。
-
项目是基于spring boot 框架的,启动方式就不必多言了,想必大家都知道。
启动shenyu-admin时异常:
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ls.DocumentLS at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] ……
我idea默认配置的jdk11, jdk11找不到该类。切换为jdk1.8.127后,解决该启动报错。
shenyu-bootstrap
shenyu-bootstrap 是网关的启动项目,启动方式同上。它需要和后台管理系统交互,所以要注意修改application-local.yml 中关于shenyu-admin的配置(默认启动不用修改)。
shenyu :
file:
enabled: true
corss:
enabled: true
dubbo :
parameter: multi
sync:
websocket :
urls: ws://localhost:9095/websocket
访问后台管理页面:
以上两个服务启动后,就可以访问shenyu-admin后台管理页面体验各种功能了。
- 访问地址:http://localhost:9095
- 账号:admin
- 密码:123456