SpringCloudGateway网关动态路由
背景
现在很多服务都要求不下线发布,这就要求我们在开发微服务的时候,新增一个接口或者服务中心,必须做到线上发布。新增中心
新增一个服务中心,gateway有几种方法,最常见的就是在配置文件里面新增routes路由。现在我们把这个配置文件改成读取redis。先上redis数据结构。
所有中心
用户中心redis路由结构
用的map结构存储,这里面有几个重要参数,filters:在路由前面加上/api,id:名称,predicates:匹配/user/**的路径,uri:发送的服务(appetite-user对应用户中心),当然我们还可以自定义一些其他的,自己探索吧。有了这些后,我们就能访问到对应的服务,比如我前端访问/user/a/b,到了网关就会将这个路径转化成/api/user/a/b,去访问用户中心对应的服务。代码import com.alibaba.fastjson2.JSON; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.route.RouteDefinition; import org.springframework.cloud.gateway.route.RouteDefinitionRepository; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** * @program: appetite-work * @description: redis作为网关路由存储 * @author: pl * @create: 2022-08-08 15:35 **/ @Slf4j @Component public class RedisRouteDefinitionRepository implements RouteDefinitionRepository { /** * hash存储的key */ public static final String GATEWAY_ROUTES = "appetite_gateway_dynamic_route"; @Resource private RedisTemplate redisTemplate; /** * 获取路由信息 * * @return */ @Override public Flux getRouteDefinitions() { List routeDefinitions = new ArrayList<>(); redisTemplate.opsForHash().values(GATEWAY_ROUTES).stream() .forEach(routeDefinition -> routeDefinitions .add(JSON.parseObject(routeDefinition.toString(), RouteDefinition.class))); return Flux.fromIterable(routeDefinitions); } public List getRoutes() { List routeDefinitions = new ArrayList<>(); redisTemplate.opsForHash().values(GATEWAY_ROUTES).stream() .forEach(routeDefinition -> routeDefinitions .add(JSON.parseObject(routeDefinition.toString(), RouteDefinition.class))); return routeDefinitions; } @Override public Mono save(Mono route) { return route.flatMap(routeDefinition -> { redisTemplate.opsForHash() .put(GATEWAY_ROUTES, routeDefinition.getId(), JSON.toJSONString(routeDefinition)); return Mono.empty(); }); } @Override public Mono delete(Mono routeId) { return routeId.flatMap(id -> { redisTemplate.opsForHash().delete(GATEWAY_ROUTES, id); return Mono.empty(); }); } }
这个是在springCloudGateway的代码,既然只要redis有这些数据,那么我就能在其他中心对redis进行操作,从而达到动态加载,我放在了认证中心,如下:import com.alibaba.fastjson2.JSON; import com.pl.appetite.constants.CakeConstants; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.*; /** * @program: appetite20221020 * @description: 网关新增中心到redis * @author: pl * @create: 2022-11-19 20:01 **/ @Service public class GatewayRedisService { public RedisTemplate redisTemplate; public GatewayRedisService(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } /** * 新增网关中心路由 * @param centerCode appetite-user */ public void addCenter(String centerCode){ String[] code = centerCode.split("-"); Map filMap = new LinkedHashMap(); List
年轻人徒步上瘾每周一山带50斤装备徒步,脚上起大水泡走10公里开始徒步之后,她们发现,这是与工作切割的一个好办法。对于她们来说,只要没有信号,就是最好的山,徒步可以让她们进入一个没有工作侵扰的真空区域,从而得到短暂的喘息。文高越编辑周维运营栗
丰收的湖北,喜悦赏秋之旅!春生夏长,秋收冬藏。时节更替,今又至秋,灵秀湖北已开启了秋收秋耕秋种的三秋忙碌,田间地头尽是欢声笑语和洋溢着丰收的喜悦。金风送爽迎盛会,瓜果飘香庆丰收。明天我们就迎来了第5个中国农
是你想象的川西吗木格措坐在木格措边上,不时有风吹来,简直舒服。天气超好!折多山天气超好!已经征服了折多山hhh高反并没有感觉很严重,只是头有一点点晕眩的感觉(可能是车坐太久了)真的很想用圣洁来形容
刘少奇家的功臣保姆赵姥姥被刘家后人奉养到老,1年前去世2021年9月13日,昌平殡仪馆正在举行一场遗体告别仪式。前来送别的人物中,有刘少奇王光美夫妇的亲属刘亭魏珍王筱苏等人。刘少奇的儿子刘源女儿刘潇潇以及王光美的妹妹王光正王光平也都送
江苏高考女状元,遭到多所985名校拒绝录取,成为最惨状元2020年,江苏省高考女状元白湘菱考了430分的好成绩。要知道江苏高考的总分才480分。白湘菱知道自己成为状元时,惊讶得合不拢嘴。但是在报考时,她却遭到了清华北大等多所985名校的
F1比利时站汉密尔顿被阿隆索骂白痴,重温始于15年前的恩怨F1(一级方程式世界锦标赛)比利时站正赛,汉密尔顿(LewisHamilton)第一圈已跟前队友兼老对手费尔南多阿隆索(FernandoAlonso)碰撞,因而退赛,虽然汉密尔顿认
大跌40,跌回10年前昨晚美联储公布9月利率决议,加息75个基点,至33。25。这是美联储年内第五次加息,累计加了300个基点,创下40多年历史最快加息记录。虽说这次只加75个基点,符合市场预期,但随后
贵州50岁大爷,每天坚持喝2两小酒,如今身体咋样了?贵州50岁大爷,每天坚持喝2两小酒,如今身体咋样了?在很多人的生活中,白酒就是生活的必需品,是生活中的调味剂。一天不喝,就浑身难受。更何况在现如今,去参加宴席,托人办事,喜宴很多种
汶溪观塔来源人民网人民日报海外版休宁的塔。张建基摄漫步在安徽省休宁县横江国家湿地公园的栈道,如同徜徉在一幅灵动的生态人文画卷里。汶溪似带,青山如屏,白鹭翩飞。双桥研墨,群塔拈笔,文章天地来
坐动车去延安,没想到被卧代座套路了因工作原因,我经常在省内出差,陕北陕南跑得最勤,高铁一通,无疑增加了工作效率,于是最近几年跑得更勤了些。这次去延安,是陪一个朋友快闪办私事,我应承了带他去吃够延安美食,他负责住宿和
数说金平湖丨这盏灯为何能常亮300年?傍晚,与友人相约平湖东湖景区一角。行走间,突然听到一声稚嫩的撒娇声,妈妈,我们去湖边看西瓜灯吧!回头一看,是个扎着羊角辫,约莫四岁的小姑娘。小到蓬头稚子,大到耄耋老翁。似乎每到九月
医保返款标准调整后,65岁以下划转2,65岁以上划转3是否可行?将65岁以下的人的医疗保险折扣率调整为每月2,65岁以上的人调整为3是否可行?作为一名退休人员,你在退休后可以享受个人健康保险账户的折扣。在个人医保账户改革之前,这个比例是比较高的
雅万高铁全世界打响名号!多国主动找上门,世界进入中国标准11月财经新势力G20峰会期间,印尼向全世界展示东南亚的第一条高速铁路雅万高铁!而中国高铁借此机会可谓是一战成名。大家知道吗,雅万高铁是中国与印尼共建一带一路的合作项目。也是中国高
幼儿园教孩子成人口水歌,歌词含义低俗露骨,令家长担忧不已文初语老师幼儿园作为孩子们整个学习生涯第一个阶段,也是最基础的一个阶段,孩子能否很好的适应幼儿园的集体生活,直接关乎到未来是否能够适应小学的学习情况。我们印象中的儿歌是什么样的呢?
窗口函数1窗口函数是那些对分区或窗口的每一行进行操作的函数。这些函数为每条查询行产生结果,而聚合函数则将它们分组,并将结果归入单行。窗口函数的基本语法spanstylebackgroundc
济宁市按照每人1500元的标准发放一次性扩岗补助大众网海报新闻记者李慧济宁报道近日,济宁市组织开展一次性扩岗补助审核发放工作。在济宁市参加失业保险的企业,招用2022年度普通高校毕业生离校两年内未就业普通高校毕业生(2020年7
IP地址段与子网掩码对应表,平时不会的都在这里对于ip地址的设置与子网掩码的使用是网络中最容易出错的地方,很多项目之所有故障不断,原因皆在于此,在我们vip技术群中也经常讨论到。本期弱电行业网与大家来做个大总结,详解ip地址与
数据治理数据标准的6大建设步骤及实施分享车同轨书同文,数字化时代,数据标准化是企业进行数字化转型的根基。数据标准与企业数据管理的每个域都相关,是数据治理工作的最基础内容。元数据管理中,需要从业务属性技术属性管理属性三个方
常见网络接口与线缆头条创作挑战赛本文章将围绕Quidway系列路由器讨论各种常见网络物理接口与线缆的相关内容,包括常见的接口规范线缆的类型以及其一般机械特性电气特性传输特性以及使用注意事项等等。。2
信号!继续降!LPR还有1530个基点下调空间官媒发声!LPR存在下降可能大家的房贷利率,要降了!重要信号!近期官方多渠道透露,官媒集体发声LPR报价下调,势在必行!先是财联社发声本月MLF到期规模年内zui高,业界称5年期以
中巴4000亿项目,让俄罗斯人心动,但转向亚洲,不是俄的长久之计俄罗斯正在努力加入中巴经济走廊,为了加入这个投资规模高达620亿美元的项目(约合人民币4362亿元),俄罗斯除了与中国搞好关系,最近也没少在巴基斯坦和阿富汗的身上下功夫。俄方很早就
全国5G工业互联网项目超过4000个新闻发布会现场张芹摄中新网武汉11月16日电(记者张芹)工业和信息化部信息通信管理局一级巡视员王鹏16日在武汉介绍,目前,全国5G工业互联网项目超过4000个,在电子设备制造钢铁电