Soul网关接入与验证

简介: 本文介绍如何将服务提供者与消费者接入Soul网关,涵盖pom依赖、Controller注解(@SoulSpringMvcClient)、配置文件参数说明(如adminUrl、contextPath、full模式等),并支持HTTP与Dubbo双协议。通过zookeeper注册,结合soul-admin与soul-bootstrap启动,完成服务注册与网关路由验证,附完整代码与测试示例。

3.1 提供者接入Soul
3.1.1 pom
3.1.2 Controller
与之前不同的是,这里我们会在Controller增加一个注解,@SoulSpringMvcClient,标注其注册成为一个SoulSpringMvcClient对象。这里有两种方式,一种是全局,一种是下面示例文件的局部,我会在 3.1.3 配置文件具体讲解二者实现上的差异性。
其中@SoulSpringMvcClient(path = "/consumer/ "), 标识允许访问:consumer路径下全部,如果在当前Controller中,你只想部分暴露,那么更正为:
删除Controller上的:SoulSpringMvcClient(path = "/consumer/** ")
在对应需要暴露的接口上,加上全路径,如: @SoulSpringMvcClien(path = "/consumer/getUserById")
3.1.3 配置文件
说明:
http:标注这里协议是Http,同样还有(dubbo等)
adminUrl:对应soul-admin启动的应用地址,端口
contextPath:对应注册进Soul的路由前缀(即我们后续通过网关访问的限制名,多个应用应不同)
appName:对应的应用名称,不配置的话,会默认取 dubbo配置中application 中的名称
full:true则表示代理全部,全局允许访问,权限很大;false表示非全局,只访问有注解的地方(推荐)
port:当前应用的启动端口,并非soul-admin或网关,需保持一直
另外,如果你在 application.yaml(properties) 中配置了context-path,请删除,这个配置对于Soul而言是无感知的,即你的配置文件中不应出现下面的servlet配置:
如果你在这里配置的:full是false,那么对应3.1.2章节就无需调整,如果是true,直接3.1.2关于SoulPringMvcClient相关注解即可。
3.2 消费者接入Soul
消费者相关配置,和提供者是一致的,这里不再赘述,直接贴出相关代码。
3.2.1 pom
3.2.2 Controller
3.2.3 配置文件
说明:
这里同时暴露出去了dubbo,http两套协议,dubbo对应的就是我们提供在Service层的代码,其变更很小,如下,只是增加了一个注解:@SoulDubboClient
dubbo,http提供的contextPath的路由前缀,需要保持不同,同时全局唯一(即不能和其他应用一致)
3.3 验证
前提:启动了zookeeper,启动了MySQL。
3.3.1 启动soul-admin
直接启动相关Application即可,登陆控制台查看:localhost:9093,用户名/密码:admin/123456。
成功之后,查看插件,注意这里确保二者开启,且配置项和我吻合:
其中:divide
zk:
{"register":"zookeeper://127.0.0.1:2181"}
3.3.2 启动soul-boostrap
直接启动相关Application即可。
3.3.3 启动soul-provider
直接启动相关Application即可,出现下面的日志则表示注册成功:
3.3.4 启动soul-consumer
直接启动相关Application即可,出现下面的日志则表示注册成功:
注意:
3.3.3,3.3.4启动完成之后,查看soul-admin的网页管理端,应该出现下图:
3.3.5 验证
此时直接通过自身IP访问消费者,地址:http://localhost:9092/consumer/getUserById?id=1,查看日志:
消费者:
提供者:
通过网关访问消费者,地址:http://localhost:9094/consumer/consumer/getUserById?id=1,查看日志:
消费者:
提供者:
直接通过自身IP访问提供者,地址:http://localhost:9091/provider/hello?id=-1
通过网关访问提供者,地址:http://localhost:9094/provider/provider/hello?id=-1
Chrome POST验证provider的dubbo接口
JavaScript
运行代码
复制代码
1
2
3
4
5
fetch(new Request('http://localhost:9094/provider/provider-youzha/findById',{
method:'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body:"id=1"
})).then((resp)=>{console.log(resp)})
注意:
通过网关访问,其地址为boostrap对应的:ip+端口
访问地址需要加上路由前缀,即配置文件中 soul 模块中的contextPath
如果你的项目和soul不部署在同一服务器,请在你的配置文件中追加上该配置(以你实际部署机器IP为准),保证Soul能管理你的服务
soul.http.host=168.10.54.115
3.4 完整代码
Dubbo_Soul.rar
(32 KB)
zookeeper.rar
(70.7 MB)
redis.rar
(4 MB)
Soul.rar
(8.2 MB)

相关文章
操作系统:死锁资源的计算
操作系统:死锁资源的计算
2813 0
|
6月前
|
前端开发 开发者
如何计算选择器的权重
如何计算选择器的权重
539 137
|
5月前
|
人工智能 自然语言处理 搜索推荐
2025年11月,中国数字人平台关键领域的创新应用模式
数字人技术融合AI与图形学,重塑政务、医疗、教育、文化等领域交互模式。凭借拟真形象与智能交互,实现从导诊到心理辅导、从历史人物复现到个性化教学的多元应用,推动产业落地与社会服务升级。
|
4月前
|
缓存 Dubbo Java
什么是API网关
API网关是一种架构思想,用于统一接收外部请求并转发至后端服务,实现协议转换、路由、鉴权、限流、熔断降级等功能。通过网关,可简化客户端调用,提升系统安全性与可维护性。常见实现如Kong、Zuul、Spring Cloud Gateway等,广泛应用于微服务架构中,支持异步处理、全链路监控与多维度流量控制。
|
3月前
|
人工智能 Java API
Java 开发者必读:构建生产级 AI 大模型 (LLM) API 应用,从 OpenAI 到 Gemini 3.0 Pro 的无缝适配指南
本文以Spring Boot实战为例,介绍Java后端集成大模型的生产级方案。通过API聚合网关统一对接OpenAI、Gemini等多模型,解决网络延迟、供应商锁定与合规风险。结合n1n.ai实现标准化调用、成本控制与高可用架构,助力企业构建稳定、可扩展的AI中台基础设施。(238字)
683 1
|
7月前
|
存储 C语言 C++
& 符号的含义和用法
在C语言中,`&`符号常用于取地址,如`scanf`中传递变量地址以存储输入数据。示例中`&a`和`&x`获取变量内存地址,确保数据正确读入。省略会导致未定义行为。此外,`&`还用于指针声明、按位与运算等,是C/C++中的关键操作符之一。
1903 0
课时20:集合的运算
本内容介绍集合的运算,涵盖交集、并集、差集、异或集及子集等概念。通过Python代码示例详细说明各运算符(如 &、|、-、^、<=、<、>=、>)的使用方法,并解释其在实际编程中的应用。重点在于理解集合运算的基本原理及其在编程中的实现,帮助读者掌握集合运算的基础知识。
|
机器学习/深度学习 人工智能 自然语言处理
基于星海智算云平台部署 DeepSeek-R1系列 70b 模型全攻略(附平台福利)
本文介绍了如何在星海智算云平台上部署DeepSeek-R1系列70B模型,解决官网访问不畅的问题。通过云端部署,用户可以按需付费,避免本地部署高昂成本(高达两百多万)。文章详细讲解了从实例创建到开始使用DeepSeek的八个步骤,并提供了成本优化技巧和新手注意事项。推荐使用双A100显卡,每小时费用仅13.32元。新用户还可领取福利,享受高性价比服务。立即注册体验:[星海智算云平台](https://gpu.spacehpc.com/user/register?inviteCode=52872508)。
1138 1
基于星海智算云平台部署 DeepSeek-R1系列 70b 模型全攻略(附平台福利)
|
缓存 监控 前端开发
性能优化方案详解,史上最全,必知必备!
本文详细解析了 9 大必备大厂优化方案,性能优化是一线互联网公司程序员的必备技能,非常重要。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
性能优化方案详解,史上最全,必知必备!

热门文章

最新文章