【Java】Soul学习笔记---运行 soul-examples-http(二)

Soul学习笔记---运行 soul-examples-http(二)

fightingting发布于 12 分钟前

今天准备跑下 soul 官方的 example,首先从 soul-examples-http 开始。这个 examplesoul 处理的是 http 请求,使用的插件是 divide

【Java】Soul学习笔记---运行 soul-examples-http(二)

刚开始 soul-examples-http 下的 SoulTestHttpApplication 没有运行选项,后来群里朋友提醒才知道,右键 soul-examples-httppom.xml,选择 add as maven project ,就可以执行这个模块了。

可以看到,这个模块里, soul 相关的配置主要有3个地方。

  1. soul-example-http 引入的包

<dependency>

<groupId>org.dromara</groupId>

<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>

<version>${soul.version}</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-webflux</artifactId>

</dependency>

2.yml 配置

soul:

http:

adminUrl: http://localhost:9095

port: 8288

contextPath: /http

appName: http

full: false

# adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加http://

# port: 你本项目的启动端口

# contextPath: 为你的这个mvc项目在soul网关的路由前缀,网关会根据你的这个前缀来进行路由.

# appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值

# full: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller

3. controller 层的注解,如果想代理整个 controllerpath="/order/**" ,这样每个方法上就不需要加注解了。

【Java】Soul学习笔记---运行 soul-examples-http(二)

可以看到,项目里引入 soul 网关,真是非常简单,对代码的侵入很少。

怎么开启网关代理我们的项目呢?

首先,启动 SoulAdminBootstrap , SoulBootstrapApplication , 登录 soul-admin,在插件管理菜单,把 divide 插件开启,运行 SoulTestHttpApplication soul 已经帮我们把选择器和规则的数据都插入数据库了。在这里,还可以很灵活的修改匹配规则,当前使用的是 uri,可以改为用 header,ip,post 匹配,这样的配置可以适用很多场景。

【Java】Soul学习笔记---运行 soul-examples-http(二)

启动 SoulBootstrapApplication 端口号是 9195,我们项目地址是: http://localhost:8188/order/findById?id=4,通过网关访问,地址就是 http://localhost:9195/http/order/findById?id=4。

soul 还可以配置负载均衡,权重越高,命中率也就越高。

【Java】Soul学习笔记---运行 soul-examples-http(二)

我试了下,停止端口 8288 的服务,立马去请求网关时,打到8288端口时,服务报500错误,随后再访问,请求都打到 8188 端口了;如果停止端口 8288 的服务,过几分钟再去访问,soul 就不会再把请求打到 8288 端口了,因为soul-admin有个探活机制,在 UpstreamCheckService ,会定时移除不可用的服务。这个在 soul-admin 是可配置的。

soul.upstream.scheduledTime:10  定时检测时间间隔,默认10秒

soul.upstream.check:true 默认为 ture,设置为false,不检测

这个设计实在太方便了。一台服务挂了,soul 就立马把这个服务摘除,完全不需要手动去配置任何东西。

压测了一下,没有网关,RPS 是 1457.2,加了一层网关做转发后,RPS 变成599.2。

【Java】Soul学习笔记---运行 soul-examples-http(二)

今天运行 example 时,最大的感受是 soul 用着很方便,很全面,一切都是可配置的,而且很好上手。不过代码里用了很多设计模式,响应式编程,为了接下来能够顺畅的看源码,最近要恶补下这块的知识。

java

阅读 12发布于 12 分钟前

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

fightingting

1 声望

0 粉丝

0 条评论

得票时间

avatar

fightingting

1 声望

0 粉丝

宣传栏

今天准备跑下 soul 官方的 example,首先从 soul-examples-http 开始。这个 examplesoul 处理的是 http 请求,使用的插件是 divide

【Java】Soul学习笔记---运行 soul-examples-http(二)

刚开始 soul-examples-http 下的 SoulTestHttpApplication 没有运行选项,后来群里朋友提醒才知道,右键 soul-examples-httppom.xml,选择 add as maven project ,就可以执行这个模块了。

可以看到,这个模块里, soul 相关的配置主要有3个地方。

  1. soul-example-http 引入的包

<dependency>

<groupId>org.dromara</groupId>

<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>

<version>${soul.version}</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-webflux</artifactId>

</dependency>

2.yml 配置

soul:

http:

adminUrl: http://localhost:9095

port: 8288

contextPath: /http

appName: http

full: false

# adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加http://

# port: 你本项目的启动端口

# contextPath: 为你的这个mvc项目在soul网关的路由前缀,网关会根据你的这个前缀来进行路由.

# appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值

# full: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller

3. controller 层的注解,如果想代理整个 controllerpath="/order/**" ,这样每个方法上就不需要加注解了。

【Java】Soul学习笔记---运行 soul-examples-http(二)

可以看到,项目里引入 soul 网关,真是非常简单,对代码的侵入很少。

怎么开启网关代理我们的项目呢?

首先,启动 SoulAdminBootstrap , SoulBootstrapApplication , 登录 soul-admin,在插件管理菜单,把 divide 插件开启,运行 SoulTestHttpApplication soul 已经帮我们把选择器和规则的数据都插入数据库了。在这里,还可以很灵活的修改匹配规则,当前使用的是 uri,可以改为用 header,ip,post 匹配,这样的配置可以适用很多场景。

【Java】Soul学习笔记---运行 soul-examples-http(二)

启动 SoulBootstrapApplication 端口号是 9195,我们项目地址是: http://localhost:8188/order/findById?id=4,通过网关访问,地址就是 http://localhost:9195/http/order/findById?id=4。

soul 还可以配置负载均衡,权重越高,命中率也就越高。

【Java】Soul学习笔记---运行 soul-examples-http(二)

我试了下,停止端口 8288 的服务,立马去请求网关时,打到8288端口时,服务报500错误,随后再访问,请求都打到 8188 端口了;如果停止端口 8288 的服务,过几分钟再去访问,soul 就不会再把请求打到 8288 端口了,因为soul-admin有个探活机制,在 UpstreamCheckService ,会定时移除不可用的服务。这个在 soul-admin 是可配置的。

soul.upstream.scheduledTime:10  定时检测时间间隔,默认10秒

soul.upstream.check:true 默认为 ture,设置为false,不检测

这个设计实在太方便了。一台服务挂了,soul 就立马把这个服务摘除,完全不需要手动去配置任何东西。

压测了一下,没有网关,RPS 是 1457.2,加了一层网关做转发后,RPS 变成599.2。

【Java】Soul学习笔记---运行 soul-examples-http(二)

今天运行 example 时,最大的感受是 soul 用着很方便,很全面,一切都是可配置的,而且很好上手。不过代码里用了很多设计模式,响应式编程,为了接下来能够顺畅的看源码,最近要恶补下这块的知识。

以上是 【Java】Soul学习笔记---运行 soul-examples-http(二) 的全部内容, 来源链接: utcz.com/a/105739.html

回到顶部