普通springboot项目接入soul网关

普通springboot项目接入soul网关
最近,在工作中实际经历了在springboot项目的基础上进行了soul网关的接入,那么今天记录一下具体的接入和测试过程,整个接入和测试过程还是比较简单的。
1、首先,配置并部署好soul-admin管理后台(相当于soul的后台管理系统)
从git上拉取soul源码,项目地址:https://github.com/dromara/soul
找到admin,并修改配置文件yml:
修改soul数据库信息,包含地址、账号和密码,具体如下:

spring:
  thymeleaf:
    cache: true
    encoding: utf-8
    enabled: true
    prefix: classpath:/static/
    suffix: .html
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/gateway-test?useUnicode=true&characterEncoding=utf-8
    username: test-001
    password: test
    driver-class-name: com.mysql.jdbc.Driver

修改同步策略,soul现在支持zookeeper方式、http长轮询和websocket三种方式,这里简单介绍下这三种同步策略
①基于 zookeeper 的同步原理很简单,主要是依赖 zookeeper 的 watch 机制,soul-web 会监听配置的节点,soul-admin 在启动的时候,会将数据全量写入 zookeeper,后续数据发生变更时,会增量更新 zookeeper 的节点,与此同时,soul-web 会监听配置信息的节点,一旦有信息变更时,会更新本地缓存。
②websocket 和 zookeeper 机制有点类似,将网关与 admin 建立好 websocket 连接时,admin 会推送一次全量数据,后续如果配置数据发生变更,则将增量数据通过 websocket 主动推送给 soul-web
③zookeeper、websocket 数据同步的机制比较简单,而 http 同步会相对复杂一些。Soul 借鉴了 Apollo、Nacos 的设计思想,取决精华,自己实现了 http 长轮询数据同步功能。注意,这里并非传统的 ajax 长轮询!
http 长轮询机制主要过程如下,soul-web 网关请求 admin 的配置服务,读取超时时间为 90s,意味着网关层请求配置服务最多会等待 90s,这样便于 admin 配置服务及时响应变更数据,从而实现准实时推送。
http 请求到达 sou-admin 之后,并非立马响应数据,而是利用 Servlet3.0 的异步机制,异步响应数据。首先,将长轮询请求任务 LongPollingClient 扔到 BlocingQueue 中,并且开启调度任务,60s 后执行,这样做的目的是 60s 后将该长轮询请求移除队列,即便是这段时间内没有发生配置数据变更。因为即便是没有配置变更,也得让网关知道,总不能让其干等吧,而且网关请求配置服务时,也有 90s 的超时时间。
我采用的的是zk方式,配置文件修改如下:

soul:
  upstream:
    check: false
  sync:
    zookeeper:
      url: localhost:2181
      sessionTimeout: 5000
      connectionTimeout: 2000

接下来就是启动启动Soul-Admin,使用浏览器,访问 http://ip:端口/#/user/login地址,进入登录页面,输入账号admin,密码123456登录。
登陆界面

	2、项目中添加依赖soul-spring-boot-starter-client-springmvc
		<dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-client-springmvc</artifactId>
            <version>${soul.client.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

		<soul.client.version>2.2.0</soul.client.version>

3、添加配置文件,下面是以application.propertise为例

soul网关设置->http协议

soul.http.admin-url=soul-admin的ip加端口
soul.http.port=项目端口
soul.http.app-name=应用名称(显示在后台的名称)
soul.http.context-path=网关的路由前缀(例如user-center等)
soul.http.full=设置true 代表代理你的整个服务,false表示代理你其中某几个controller
4、接下来就是具体的接入,只需要在你需要代理的controller中添加注解:@SoulSpringMvcClient(path = “/test/**”),如果不是全局代码,那么在相应的方法上添加即可。
在这里插入图片描述

5、测试验证:上述步骤完成之后,启动要接入网关项目。然后登陆到soul网关后台,如下图
在这里插入图片描述
如上图就可以看到你接入的项目。点击修改可以配置一些选择器、执行顺序等配置。然后就可以通过访问本地部署的soul的ip加端口来访问你接入的项目了(这里有一个点就是一定是soul-bootstrap的ip+端口,而不是soul-admin的ip加端口),剩下的这里就不做具体展示了,大家有时间可以自行研究深一点,我主要是记录一下整体的接入过程,作为自己学习的一个过程,可能存在一些描述不清楚和不合理的地方,还请大家多多包含。
soul的中文文档:https://dromara.org/zh/projects/soul/overview/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值