前戏
先大体介绍一下我们项目使用的架构,网关ShenYu
,注册中心/配置中心:nacos
,微服务框架:dubbo
首先ShenYu
是由 ShenYu Admin
和 ShenYu Bootstrap
两块组成。
ShenYu Admin
是网关的后台管理系统,能够可视化管理所有插件、选择器和规则,设置用户、角色,控制资源。ShenYu Bootstrap
这部分才是网关核心部分,引入各个插件包。官方给出的一个网关demo,你也可以自己取其他名字作为网关羡慕,引入自己需要的插件包,以及插件的拓展。
快速开始
博主这边是使用的源码编译的方式来启动服务的。
环境准备
-
本地正确安装JDK1.8+
-
本地正确安装Git
-
本地正确安装Maven
-
选择一款开发工具,比如IDEA
-
设置git配置项
因为shenyu源码文件命名较长,git限制了文件名不能超过 260 个字符。
git config --global core.longpaths true
检出源码,并进行编译
git clone [email protected]:apache/shenyu.git
cd shenyu
mvn clean install -Dmaven.javadoc.skip=true -B -Drat.skip=true -Djacoco.skip=true -DskipITs -DskipTests
启动admin
- 更改后台存储方式,
ShenYu
提供了多种存储方式,我们选择适合的一种,这里我们选择mysql
-
修改同步方式
shenyu: sync: nacos: url: localhost:8848 namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
-
修改
application-mysql.yml
配置信息
数据源信息修改为自己本地测试数据库即可,启动时会自动创建表。
- 运行
ShenyuAdminBootstrap
- 访问
http://localhost:9095/
,admin/123456
登录 - 设置
dubbo
插件
这里填写你的nacos
的地址,一定要注意后面的namespace
启动bootstrap
- 修改配置
application.yml
shenyu:
sync:
nacos:
url: localhost:8848
namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
注意这里的namespace
与admin的同步配置保持一致
- 这里还需要注意一点,官网的
bootstrap
没有引入nacos
的同步包,所以需要手动引入一下,不然服务注册不到网关
<!-- apache shenyu data sync start use nacos-->
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-sync-data-nacos</artifactId>
<version>${project.version}</version>
</dependency>
- 启动
ShenyuBootstrapApplication
- 网关接口地址:
http://localhost:9195/
注册服务到网关
-
打开
shenyu-examples
选中pom.xml ,右键设置为maven项目。
-
打开
shenyu-examples
找到shenyu-examples-apache-dubbo-service-annotation
,主要修改注册的配置为nacos,以及dubbo注册中心同步改为nacos即可。
shenyu:
register:
registerType: nacos #zookeeper #etcd #nacos #consul
serverLists: localhost:8848 #localhost:2181 #http://localhost:2379 #localhost:8848
props:
username: admin
password: 123456
client:
dubbo:
props:
contextPath: /dubbo
appName: dubbo
dubbo:
application:
name: test-dubbo-service
registry:
address: nacos://127.0.0.1:8848
protocol:
name: dubbo
port: 20888
scan:
base-packages: org.apache.shenyu.examples.apache.dubbo.service.annotation.impl
- 启动
TestApacheDubboAnnotationApplication
通过网关访问dubbo
接口
启动服务以后,你可以在admin
后台能看到你的服务注册到网关上了
随意访问一个接口即可看到返回结果,则表示网关正常使用。http://localhost:9195/dubbo/findAll