soul网关mysql8_Dubbo学习系列之十七(微服务Soul网关)
论起微服务,哪能不谈网关,老将有Zuul,后继有Gateway,但这些都和SpringCloud关系密切,其他网关如Kong,因Lua原因,玩起来略不顺手。这不,就来了个Soul,我顺便拿来整进了我在写的项目中,感觉还行,也发现了些问题,表现有待观察,另一方面发现Soul资料略少,我就出点实例供看官参考参考。
准备:
Idea2019.03/Gradle6.0.1/JDK11.0.4/Lombok0.28/SpringBoot2.2.2RELEASE/mybatisPlus3.3.0/Sou2.1.2/Dubbo2.7.5/Mysql8.0.11
难度: 新手--战士--老兵--大师
目标:
1.实现http模式下使用soul网关转发
2.使用soul网关多服务实例负载均衡
步骤:
为了遇见各种问题,同时保持时效性,我尽量使用最新的软件版本。代码地址:https://github.com/xiexiaobiao/vehicle-shop-admin
1 Soul 网关特点
插件式管理,动态热加载
独立式部署,带web管理界面
可对接HTTP,Restful,websocket,dubbo和springcloud
2 http模式使用
2.1 项目中加入依赖:dubbo接入使用soul-client-apache-dubbo包,http接入使用:soul-client-springmvc包。
2.2 定义配置:
重点就是“contextPath”,即这个插件匹配到uri路径为 “ /stock/** ”
2.3 在Controller的方法上使用@SoulClient注解,比如:
@SoulClient(path = "/vehicle/stock/brand/list", desc = "获取所有品牌列表")
此处因为我整个项目加了context-path: /vehicle,故有/vehicle前缀:
使用http接入需要使用zk,否则控制台会报错,但经测试不使用zk功能上也可以,官方也说明已脱离对zk强依赖,应该是历史遗留问题。
2.4 先启动zookeeper(非必需),再启动soul-admin.jar,再启动soul-bootstrap.jar(这两个可以官网下载,依照说明使用),最后启动项目。
结构关系如下:
2.5 使用http接入为例,启动完毕后访问 http://localhost:9095/index.html 默认的用户名:admin 密码:123456,发现已自动加入了定义的“选择器”和“选择器规则”:
选择器详细:
“http配置”可以有多个目标地址,即多个微服务实例,再配合选择器规则即可做负载均衡。“权重”越大,random模式下分配到的概率越大。本机的话ip也可以直接用127.0.0.1,“条件”推荐使用uri模式匹配,这也是网关核心之一的路由功能了!
选择器规则详细:
这里可以配置负载均衡策略,三种:hash、random和robin。
2.6 并先关闭其他插件,只保留divide:
2.7 测试:
直接http访问项目API:
使用soul网关访问,注意对比url地址。注意这里是soulClient的端口,不是soulAdmin的!!
同时可以看到soul-bootstrap控制台进行http路由转发的信息:
总结
1.使用发现对RESTFUL支持只有GET/POST,其他如PUT/DELETE,总是导致携带的参数丢失,无法转发到目标地址,可能设计上就只支持GET/POST。
2.Soul热插件和web端操作,还是体验较好的,我使用的项目代码较多,看官完全可以自己写一个简单的SpringbootMVC项目来测试。
3.请期待我的后续:集群部署和Dubbo接入。
全文完!
推荐阅读:
soul网关mysql8_Dubbo学习系列之十七(微服务Soul网关)相关推荐
- dubbo mysql_Dubbo学习系列之六(微服务架构实战)
看了最近文章的反馈,似乎波澜不惊的样子,应该是看官觉得都是小菜,那我就直上硬菜,人狠话不多,开始! 准备:Idea201902/JDK11/ZK3.5.5/Gradle5.4.1/RabbitMQ3. ...
- 深入Java微服务之网关系列1:什么是网关
前言 近来,在想着重构一个新的产品.准备采用微服务的技术解决方案,来搭建基础设施框架.网关,是一个必不可少的组件.那么,网关到底是什么? 其又有什么特点或者特性,成为微服务必不可少的组件呢?今天,我们 ...
- vivo亿级微服务 API 网关架构实践
一.背景介绍 网关作为微服务生态中的重要一环,由于历史原因,中间件团队没有统一的微服务API网关,为此准备技术预研打造一个功能齐全.可用性高的业务网关. 二.技术选型 常见的开源网关按照语言分类有如下 ...
- 又肝了下微服务 API 网关“金刚”,也是蛮香的~
" 摘要: 原创出处 http://www.iocoder.cn/Kong/install/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速安装 3. Kong 控制台 4. ...
- 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...
- vivo 微服务 API 网关架构实践
一.背景介绍 网关作为微服务生态中的重要一环,由于历史原因,中间件团队没有统一的微服务API网关,为此准备技术预研打造一个功能齐全.可用性高的业务网关. 二.技术选型 常见的开源网关按照语言分类有如下 ...
- 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul
通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...
- 学习笔记:SpringCloud 微服务技术栈_实用篇②_黑马旅游案例
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...
- 一文吃透何为微服务、网关、服务发现/注册?
点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...
最新文章
- 使Apache实现gzip压缩
- symbian 根据指定的权限找到对应的API:Functions listed by capability
- javascript面象对象编程的三种方法
- python代码打开可执行文件_将自己的Python代码打包成exe文件(更换设备可运行的)...
- Apache Ant使用过程的总结
- Kinect for Windows Samples
- 【论文】基于特定实体的文本情感分类总结(PART II)
- linux系统中清空文件内容的三种方法
- 爬虫入门系列(四):HTML 文本解析库 BeautifulSoup
- pre保持原格式但文本不超出的解决方案
- Linux如何一键配置网络ip?
- 云杰恒指:8.29恒指期货实盘交易复盘
- UVa OJ 10909-Soya Milk
- 如果你恨一个人...
- Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构
- 全球及中国M2M组件行业需求规模与投资效益预测报告2022~2027年
- 聚类分析:原型K-Means/K-Means++聚类、层次聚类;密度聚类DBSCAN
- 微信公众号接入多客服系统,功能使用说明
- 如何参加活动拿到华为实践证书?一起来吧~
- C++.POJ_1004
热门文章
- 7-22 龟兔赛跑 (20分) Python
- 定时任务:springboot集成Quartz实现多任务多触发的动态管理
- ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we cannot accurately d
- 基于注解和EasyExcel指定单元格下拉选内容
- linux下hg无法运行_Linux 无法启动常见的几种原因及解决办法
- 国内外最顶级的12大看板工具
- SEM竞价|这5个方面重要性你理解透没有?
- uni H5 苹果手机调微信支付失败
- MLAPP————第五章 贝叶斯统计
- c语言小白能自学吗,零基础小白学编程,该如何入门?