Soul 学习笔记 --- 运行 soul-examples-http(二)
今天准备跑下 soul
官方的 example
,首先从 soul-examples-http
开始。这个 example
,soul
处理的是 http
请求,使用的插件是 divide
。
刚开始 soul-examples-http
下的 SoulTestHttpApplication
没有运行选项,后来群里朋友提醒才知道,右键 soul-examples-http
的 pom.xml
,选择 add as maven project
,就可以执行这个模块了。
可以看到,这个模块里, soul
相关的配置主要有 3 个地方。
soul-example-http
引入的包
2.yml
配置
3.controller
层的注解,如果想代理整个 controller
,path="/order/**"
,这样每个方法上就不需要加注解了。
可以看到,项目里引入 soul
网关,真是非常简单,对代码的侵入很少。
怎么开启网关代理我们的项目呢?
首先,启动 SoulAdminBootstrap
, SoulBootstrapApplication
, 登录 soul-admin
,在插件管理菜单,把 divide
插件开启,运行 SoulTestHttpApplication
,soul
已经帮我们把选择器和规则的数据都插入数据库了。在这里,还可以很灵活的修改匹配规则,当前使用的是 uri,可以改为用 header,ip,post 匹配,这样的配置可以适用很多场景。
启动 SoulBootstrapApplication
端口号是 9195,我们项目地址是: http://localhost:8188/order/findById?id=4,通过网关访问,地址就是 http://localhost:9195/http/order/findById?id=4。
soul
还可以配置负载均衡,权重越高,命中率也就越高。
我试了下,停止端口 8288 的服务,立马去请求网关时,打到 8288 端口时,服务报 500 错误,随后再访问,请求都打到 8188 端口了;如果停止端口 8288 的服务,过几分钟再去访问,soul 就不会再把请求打到 8288 端口了,因为soul-admin
有个探活机制,在 UpstreamCheckService
,会定时移除不可用的服务。这个在 soul-admin
是可配置的。
这个设计实在太方便了。一台服务挂了,soul
就立马把这个服务摘除,完全不需要手动去配置任何东西。
压测了一下,没有网关,RPS 是 1457.2,加了一层网关做转发后,RPS 变成 599.2。
今天运行 example
时,最大的感受是 soul
用着很方便,很全面,一切都是可配置的,而且很好上手。不过代码里用了很多设计模式,响应式编程,为了接下来能够顺畅的看源码,最近要恶补下这块的知识。
评论