专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

SpringCloudGateway网关动态路由

  背景
  现在很多服务都要求不下线发布,这就要求我们在开发微服务的时候,新增一个接口或者服务中心,必须做到线上发布。新增中心
  新增一个服务中心,gateway有几种方法,最常见的就是在配置文件里面新增routes路由。现在我们把这个配置文件改成读取redis。先上redis数据结构。
  所有中心
  用户中心redis路由结构
  用的map结构存储,这里面有几个重要参数,filters:在路由前面加上api,id:名称,predicates:匹配user的路径,uri:发送的服务(appetiteuser对应用户中心),当然我们还可以自定义一些其他的,自己探索吧。有了这些后,我们就能访问到对应的服务,比如我前端访问userab,到了网关就会将这个路径转化成apiuserab,去访问用户中心对应的服务。代码importcom。alibaba。fastjson2。JSON;importjava。util。ArrayList;importjava。util。List;importjavax。annotation。Resource;importlombok。extern。slf4j。Slf4j;importorg。springframework。cloud。gateway。route。RouteDefinition;importorg。springframework。cloud。gateway。route。RouteDefinitionRepository;importorg。springframework。data。redis。core。RedisTemplate;importorg。springframework。stereotype。Component;importreactor。core。publisher。Flux;importreactor。core。publisher。Mono;program:appetiteworkdescription:redis作为网关路由存储author:plcreate:2022080815:35Slf4jComponentpublicclassRedisRouteDefinitionRepositoryimplementsRouteDefinitionRepository{hash存储的keypublicstaticfinalStringGATEWAYROUTESappetitegatewaydynamicroute;ResourceprivateRedisTemplateredisTemplate;获取路由信息returnOverridepublicFluxRouteDefinitiongetRouteDefinitions(){ListRouteDefinitionrouteDefinitionsnewArrayList();redisTemplate。opsForHash()。values(GATEWAYROUTES)。stream()。forEach(routeDefinitionrouteDefinitions。add(JSON。parseObject(routeDefinition。toString(),RouteDefinition。class)));returnFlux。fromIterable(routeDefinitions);}publicListRouteDefinitiongetRoutes(){ListRouteDefinitionrouteDefinitionsnewArrayList();redisTemplate。opsForHash()。values(GATEWAYROUTES)。stream()。forEach(routeDefinitionrouteDefinitions。add(JSON。parseObject(routeDefinition。toString(),RouteDefinition。class)));returnrouteDefinitions;}OverridepublicMonoVoidsave(MonoRouteDefinitionroute){returnroute。flatMap(routeDefinition{redisTemplate。opsForHash()。put(GATEWAYROUTES,routeDefinition。getId(),JSON。toJSONString(routeDefinition));returnMono。empty();});}OverridepublicMonoVoiddelete(MonoStringrouteId){returnrouteId。flatMap(id{redisTemplate。opsForHash()。delete(GATEWAYROUTES,id);returnMono。empty();});}}
  这个是在springCloudGateway的代码,既然只要redis有这些数据,那么我就能在其他中心对redis进行操作,从而达到动态加载,我放在了认证中心,如下:importcom。alibaba。fastjson2。JSON;importcom。pl。appetite。constants。CakeConstants;importorg。springframework。data。redis。core。RedisTemplate;importorg。springframework。stereotype。Service;importjava。util。;program:appetite20221020description:网关新增中心到redisauthor:plcreate:2022111920:01ServicepublicclassGatewayRedisService{publicRedisTemplateredisTemplate;publicGatewayRedisService(RedisTemplateredisTemplate){this。redisTemplateredisTemplate;}新增网关中心路由paramcenterCodeappetiteuserpublicvoidaddCenter(StringcenterCode){String〔〕codecenterCode。split();MapfilMapnewLinkedHashMap();ListMapfiltersListMapnewArrayList();MapfiltersMapnewLinkedHashMap();filtersMap。put(name,PrefixPath);MapfiltersArgsMapnewHashMap();filtersArgsMap。put(genkey0,api);filtersMap。put(args,filtersArgsMap);filtersListMap。add(filtersMap);filMap。put(filters,filtersListMap);filMap。put(id,code〔1〕);filMap。put(order,0);ListMappredicateListMapnewArrayList();MappredicateMapnewLinkedHashMap();predicateMap。put(name,Path);MappredicateArgsMapnewHashMap();predicateArgsMap。put(genkey0,code〔1〕);predicateMap。put(args,predicateArgsMap);predicateListMap。add(predicateMap);filMap。put(predicates,predicateListMap);filMap。put(uri,lb:centerCode);redisTemplate。opsForHash()。put(CakeConstants。GATEWAYROUTES,code〔1〕,JSON。toJSONString(filMap));}删除网关中心路由paramiduserpublicvoiddeleteCenter(Stringid){redisTemplate。opsForHash()。delete(CakeConstants。GATEWAYROUTES,id);}获取网关中心redis所有keyreturnpublicSetStringgetCenterKeys(){returnredisTemplate。opsForHash()。keys(CakeConstants。GATEWAYROUTES);}
  到这里,网关动态加载中心就可以实现了。当然了这只是动态加载中心,还有动态加载具体的交易,比如我要新上线一个交易abc,我们也可以用这种方式,但是在我这个脚手架里面不是用的这种方式,因为我还要对交易进行一些其他的操作,比如登录验证,安全验证等等,所有我将渠道交易路径作为key,交易信息作为value的形式存到了redis里面,每次交易进来,我都会查询相应的redis数据,获取到交易验证列表,从而去做对应的验证。格式如图:
  交易信息
  以上就是我这个脚手架里面动态加载交易的操作,其实也不好,每次都要查redis,我是有做本地缓存替代redis的,因为现在一个服务都是好几台服务器部署的集群,所以发布的时候要同步集群数据。这个就自己研究吧。欢迎提供更好的建议。

李盈莹三年间回报王宝泉四个冠军,如何评价这两人的师徒情谊?宝泉惠眼拾珠,盈莹投桃报李。天津女排教练大胆培养使用李盈莹,为国家培养出位优秀的排球运动员,居功至伟。俗话说,种瓜得瓜,种豆得豆。种下希望,收获成功。十二年前的王宝泉是有眼光的,是领导喜欢坚持己见还是逆来顺受的员工?我们每一个人,走入职场的时候,都期望遇到一个智慧,沉稳,大气,任人唯贤,能给自己人生引路的好的领导。这对每一个刚步入职场,或者是人生漫长岁月最希望遇到的好领导。不管任何一个单位的领10岁小孩暴躁易怒,独立性差,应该怎么引导?出现这种情况,很有可能是从小就有这样的性格,并不是一天形成的,面对孩子这种性格,家长要做的是1。只要孩子发脾气,就绝不答应他的诉求。这样,他知道发脾气没有用,就会逐步改善了2家长也赵丽颖这辈子跟铃铛太有缘,三部代表作都因铃铛而大起大落,你说呢?三个都是执着不悔的角色,坚韧不拔的性格,坎坷多棘的命运,也对应了赵丽颖永不言败的志气,温和谦逊的品质和坚守初心的信仰!影视的大起大落,正如她人生的大起大落,从默默无闻到全民黑潮,再英雄联盟,飞机是怎么从ad演变为中单的?飞机早在S3前都是ad,而且还是一个过热度比较高的ad,微笑曾用他在s4打老干爹拿到五杀。这时的飞机还是ad位,但是出的鞋子是法穿鞋,被动10的真实伤害,变化的就是w的机制和被动,如果早点派归化球员上场,国足能赢沙特吗?如果国足教练能够一视同仁,不歧视归化球员,重用归化球员,给他们上场比赛的机会,让他们能够充分地展示自己的实力,发挥自己的真实水平。再加上有一个善于用人,善于排兵布阵,善于捏合成型的中国足球,敢问路在何方?专业人员管专业的事,中国足球才有出路。目前看,足协的改革是不成功的,男足已经沦落到亚洲三流球队了。非专业人员,如何管好足球。路在基层,从娃娃抓起!说实话,每次足球重大国际比赛,只要如何判断足彩的平局情况?找到平局无疑是件非常重要的事情,从技术上分析的各有各的方法,个人喜欢从数据上去找平局最多的区域,现在每天的比赛很多,各种联赛,我们都知道不同联赛有各种特点,这个非常重要,十几二十中gv300和v310如何选择?谢邀!我是骠骑府!资深摩托车媒体编辑,点击头像查阅更多精彩摩托车内容,欢迎关注!这是一位头条号为手机用户7007337632的朋友发起的问题邀请,骠骑府应邀来回答。上图为GV300购买相机镜头时,你会选择行货还是水货?作为摄影师,特别是独立摄影师,设备器材都是自己购买,本着能省则省的心态去购买,行货水货确实会在购买前掂量掂量,我一般都没有买行货!水货一般是指不正规渠道获得的产品,但是呢,有一点很三国24名将前5位,张飞能打败哪几个?前五位依次为吕布赵云典韦关羽马超,而张飞作为三国第一猛人,竟然只排在了第六。我们姑且忽略三国24名将是多么不靠谱,仅讨论张飞与上述五人之间的武力比拼,看看张飞到底能够打败谁。张飞血
一箭三雕!湖人123108鹈鹕,甩开2劲敌紧追5队自我掌控命运文水清清今日NBA常规赛,有两场比赛关系到湖人的排名,其中湖人123108击败鹈鹕后实现一箭三雕,甩开2劲敌紧追5队,已经自我掌控季后赛命运。浓眉3517率队胜鹈鹕一湖人1231013连败,CBA最能忽悠的主帅!被鱼腩双杀后,又找到正当理由每每输球总能找出与己无关的正当理由,总能把锅甩给队员,这就是CBA主教练阿的江的一大能力。这不,昨晚被鱼腩四川队双杀后,他又找到正当理由了,不得不说他是最能甩锅和忽悠的主教练。昨晚融入襪套概念全新進化NikeZoomTalariaMidFlyknit近年來許多Nike經典跑鞋紛紛以襪套形式展現出全新樣貌,可以看到像是AirPrestoFlyknitUltraAirFootscapeMagista設計師TinkerHatfiel西媒皇马或放弃贝林厄姆,今夏追求克瓦拉茨赫利亚及坎塞洛直播吧3月15日讯西班牙媒体fichajes。net报道,皇马将会放弃追求贝林厄姆,但不会放弃姆巴佩,同时将计划在今夏引进克瓦拉茨赫利亚和坎塞洛,皇马为这几笔潜在转会准备的预算达到不是陈梦,不是王艺迪,国乒三连败1人被批拖后腿,马琳需负责最近国乒正在新加坡征战WTT大满贯的比赛,对于刘国梁为首的教练组来说,非常期待能够拿到五个项目的冠军。但是从最近接二连三爆冷的情况来看,对于国乒造成一定的打击,很多球迷对国乒接下来白人与黑人为什么足球和篮球顶级运动员不同足球和篮球都是全球体育界最受欢迎的运动之一。然而,当我们观察这两项运动的顶级球员时,会发现一个有趣的现象足球顶级球员大多是白人,而篮球顶级球员大多是黑人,黄种人和棕色人种在这两项运戴维斯比斯利对自己的投篮要求严格,他开场就手感火热今日,湖人123108客场击败鹈鹕。赛后,湖人前锋安东尼戴维斯接受了采访。谈到马利克比斯利找到三分手感,戴维斯说今天他在投篮训练中投了许多三分,成果也展示了出来。他对于自己的投篮表他们与横店影视城20年共成长最早的横漂族,仍怀张颂文梦东阳市横店影视城各大景区,车流穿梭不停。进出的人群来自天南海北,但泾渭分明一批是来看拍戏的游客另一批是来演戏的剧组人员,其中不少是外地人士随着横店影视城的发展,2000年以后,这个你赞同取消调休吗?我赞同调休,调休是一种人性化的关怀,平时各行各业大家都为工作等忙碌得不可开交,一家人或亲朋好友聚的少,通过调休可有相对集中的一段时间与家人或朋友共聚,共享天伦之乐同时调休也可促进消复苏!今年来国内航班恢复至2019同期95,杭州出境航线35条已恢复春暖花开,旅游业复苏。据飞常准3月14日数据,客运航班方面,截至3月12日,今年全国累计执行国内客运航班80。06万班次,同比增长20,已恢复至2019年同期的95。刚过去的一周,日乒大满贯快要全军覆没!男女单8大主力淘汰,国乒创神迹剑指5冠最近新加坡大满贯比赛继续在进行中,中国队和日本队无疑是本次比赛最有希望争夺冠军的球队。只是从目前来看,日本队还有中国队的情况大不相同,有人欢喜有人愁。首先看一下日本队目前的情况,可
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网