问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SpringCloudGateway在转发请求时的两种负载均衡的方式

发布网友 发布时间:2024-09-28 09:45

我来回答

1个回答

热心网友 时间:2024-11-15 21:42

前言

最近在搭建基于k8s和springcloud的分布式开发集群。需要用到springcloudgateway来做网关。在配置网关服务的时候,遇到了点小坑,记录下。

我们的需求是,将集群里的服务统一通过gateway对外暴露端口,并在gateway里做相应的处理,如打印日志,设置请求头,接口验签,限流降级等。

业务服务在内网通过ingress暴露url,提供集群外访问,地址如:http://${user-ingress-url}/user-service/api/v1/xxxx。

对*通过gateway暴露接口,地址如:https//${gateway-url}/gw/user-service/api/v1/xxxx。

接下来需要做的事情是,通过配置gateway的配置文件application.yaml,通过服务注册发现组件和k8s的service来分别实现请求转发的负载均衡能力。

使用服务注册发现组件,如nacos或者eureka

不管是用nacos还是eureka做服务注册发现,在gateway侧的配置都是一样的,下面以nacos举例。假设有个服务user-service注册在了nacos上:

那么,对应gateway的application.yaml配置如下:

spring:cloud:gateway:#设置与服务注册发现组件结合,这样可以采用服务名的路由策略discovery:locator:enabled:true#配置路由规则routes:#采用自定义路由ID(有固定用法,不同的id有不同的功能,详见:https://cloud.spring.io/spring-cloud-gateway/2.0.x/single/spring-cloud-gateway.html#gateway-route-filters)-id:user-service#采用LoadBalanceClient方式请求,以lb://开头,后面的是注册在Nacos上的服务名uri:lb://user-servicepredicates:-Path=/user-service/**filters:#StripPrefix是url过滤器,1表示请求转发给后端业务服务时,去掉上面Path里从左往右的第1个路径,即user-service-StripPrefix=1使用k8s自带的service

由于业务服务是基于k8s托管的,所以天然支持负载均衡,可以在gateway中调用业务服务对应的service地址即可。配置如下:

spring:cloud:gateway:#配置路由规则routes:#采用自定义路由ID(有固定用法,不同的id有不同的功能,详见:https://cloud.spring.io/spring-cloud-gateway/2.0.x/single/spring-cloud-gateway.html#gateway-route-filters)-id:user-service#采用k8s的service,user-service即为业务服务通过service暴露的url,端口是80uri:http://user-servicepredicates:-Path=/user-service/**filters:#StripPrefix是url过滤器,1表示请求转发给后端业务服务时,去掉上面Path里从左往右的第1个路径,即user-service-StripPrefix=1

注意:使用k8s自带service提供负载均衡时,业务服务的service端口最好保持在80,保证gateway能顺利将请求转发到业务服务上,这里貌似不支持service:port的形式(需要进一步研究源码看下)

作者:arkMon
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 农行网上银行怎么开通转账 gRPC负载均衡(自定义负载均衡策略--etcd实现) 怎样开通中国农业银行网上支付? 四步教你如何开通 奔跑吧!兄弟!里out是什么意思 醉驾肇事撞死人怎么处罚 德鲁·吉尔平·福斯特哈佛校长 哈佛大学校长的权力 高分 你觉得双眼皮大眼睛的男生花心吗? ...刚开货车,车轮陷入泥路20公分,要起步上来,怎么样控制离合油门才能顺 ... 卖房人签了阴阳合同可以毁约吗 省考事业单位中,什么是结构化面试,结构化面试有什么特点 巩姓的男孩名字霸气 PS中怎样用“直接选取”工具来选中矢量蒙版?就是让选中的字显示出路径... ps快速蒙版反向选区怎么弄ps蒙板反向快捷键 为什么景区拍婚纱照那么贵,拍婚纱照景区门票谁出 婚纱照有必要拍贵的么花大价钱拍婚纱照有必要吗 手机恢复出厂设置,怎么才能恢复到以前,找回以前的数据和照片,软件... 手机怎么恢复到原先的模样啊 alpha测试需要用户代表参加_怎样获取测试白单用户_alpha beta 测试 输出电流为1005毫安,可以给联想a788t的手机充电吗 红米note不经意被摔以后会影响性能 红米手机挨重摔了几次会影响性能吗? 红米note2屏幕摔烂了!换一个新的屏幕,会不会影响手机的性能? 擦玻璃器怎么正确使用 红米12探索版耐摔吗 核糖和脱氧核糖是核酸的组成成分,这句话对吗?请帮忙求解 核糖和脱氧核糖是核酸的组成成分,这句话对吗 中考一年考一次还是可以复读? 第一次中考没考上,可以回初中复读吗? 中考新政策发布后,初中毕业生允不允许复读? 刑拘7天能取保吗 刑拘7天要取保候审吗 被刑事拘留7天取保候审容易吗 坐牢7天还能取保候审吗 公司内部的承包合同是否有效 请教,书架音箱用三肯管功放还是用场管功放推 功放用什么功率管好 滴虫病怎么治疗 滴虫病的治疗方法 女性滴虫病的治疗方法