Soul网关接入与验证

简介: 本章节基于前两章内容,引入Soul网关,重点讲解Provider与Consumer应用如何接入Soul。通过添加@SoulSpringMvcClient和@SoulDubboClient注解、配置application.yml,完成服务注册。需启动zookeeper、MySQL、soul-admin、soul-bootstrap及对应服务,验证通过本地及网关访问接口是否正常,确保divide和zk插件已启用,实现HTTP与Dubbo服务的路由与调用。

此章节将基于上一章节基础之上,引入Soul网关,至于Soul网关是干什么的,怎么做的,我们会在后续章节讲解,1-3章节侧重于搭建应用。本章节的Soul网关接入,如果你1,2章节都是和我保持一致,那么只需要直接启动Soul网关即可,但是对应的provider,consumer应用是需要额外的代码接入的。开发环境和第二章保持一致。3.1 提供者接入Soul3.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 pom3.2.2 Controller3.2.3 配置文件说明:这里同时暴露出去了dubbo,http两套协议,dubbo对应的就是我们提供在Service层的代码,其变更很小,如下,只是增加了一个注解:@SoulDubboClientdubbo,http提供的contextPath的路由前缀,需要保持不同,同时全局唯一(即不能和其他应用一致)3.3 验证前提:启动了zookeeper,启动了MySQL。3.3.1 启动soul-admin直接启动相关Application即可,登陆控制台查看:localhost:9093,用户名/密码:admin/123456。成功之后,查看插件,注意这里确保二者开启,且配置项和我吻合:其中:dividezk:{"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=-1Chrome 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.1153.4

相关文章
|
4天前
|
存储 人工智能 网络安全
OpenClaw1人 AI 公司搭建教程:阿里云/本地部署OpenClaw 集成 Chief+Sub-Agent 协同架构+多 Agent 指南
用OpenClaw搭建“一人公司”时,很多人会陷入多Agent管理的困境:记忆混乱导致战略分散、Token消耗激增、上下文污染让Agent“越界干活”——明明需要执行者,却养了一群“记忆错乱的演员”。核心问题不在于Agent数量,而在于架构设计错误。
248 0
|
Dubbo Java 应用服务中间件
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
509 0
|
Java 数据库 Maven
深入探讨Java中的new LambdaQueryWrapper<>()方法
在Java编程中,Lambda表达式已经成为一种强大的工具,用于处理集合和数据流。然而,Lambda表达式的威力不仅限于这些领域。在本文中,我们将深入探讨Java中的new LambdaQueryWrapper<>()方法,这是一个强大的查询构建工具,用于简化数据库查询操作。
883 2
|
SQL 前端开发 Oracle
mysql合并查询(多张表) union 和 union all
简介 小序 :今天写首页动态业务的时候,用到了两张表,还需要分页查询,刚开始以为需要关联查询,后来发现关联的话不会放到一个实体,然后我就上网找方法,然后发现了一个我没学过的sql语句union,union all,卧槽 还是得好好学习啊,前端我想学,mysql我想学,真的时间不够用啊,还得给学弟学妹拍趣味编程课看的视频,真的是烦啊! 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
1798 1
mysql合并查询(多张表) union 和 union all
|
2月前
|
Java 编译器 C++
google protobuf3中文手册
本文介绍 Protocol Buffers proto3 语言的使用规范,涵盖 `.proto` 文件语法、消息与字段定义、枚举、映射、服务接口及代码生成等内容,指导开发者正确设计和更新数据结构,确保跨语言兼容性与二进制安全。
|
Java 数据库连接 Spring
SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)
SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)
391 0
|
6月前
|
安全 数据可视化 Java
AiPy开发的 Spring 漏洞检测神器,未授权访问无所遁形
针对Spring站点未授权访问问题,现有工具难以检测如Swagger、Actuator等组件漏洞,且缺乏修复建议。全新AI工具基于Aipy开发,具备图形界面,支持一键扫描常见Spring组件,自动识别未授权访问风险,按漏洞类型标注并提供修复方案,扫描结果可视化展示,支持导出报告,大幅提升渗透测试与漏洞定位效率。
|
10月前
|
人工智能 自然语言处理 JavaScript
受够垃圾翻译!CodeBuddy 8 分钟造神器,划词秒翻 + 自动适配所有网页
本文介绍如何使用CodeBuddy结合蓝耘API开发一款高效翻译插件。通过CodeBuddy的智能代码生成功能与蓝耘API的强大翻译能力,解决了现有翻译工具质量差、速度慢、定制难等问题。具体步骤包括获取蓝耘API、安装CodeBuddy插件、生成README文件及代码、测试与优化插件功能。最终实现划词秒翻、自动适配网页的翻译工具,适用于GitHub等技术场景。项目代码已开源,用户可通过链接注册并体验。
571 1
|
Dubbo Java 应用服务中间件
springboot + dubbo + zookeeper入门到实战超级详解
springboot + dubbo + zookeeper入门到实战超级详解
536 0
|
缓存 NoSQL Java
Redis Spring配置集群
【7月更文挑战第5天】
1311 10