微服务监控平台获取网关(zuul)配置列表
步骤:
(1)读取zuul的配置文件,获取路由配置项信息;
- private static Properties props;
- static {
- String fileName = "application.properties";
- props = new Properties();
- try {
- props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName), "UTF-8"));
- } catch (IOException e) {
- log.error("配置文件读取异常", e);
- }
- }
(2)在获取到的配置项信息中截取出服务的路由配置信息;
- /**
- * 根据zuul.routes.KSKZT.serviceId
- * 获取KSKZT
- * @param key
- * @return
- */
- public static String getRoutesKey(String key){
- return key.replace("zuul.routes.", "").replace(".serviceId", "");
- }
- /**
- * 根据KSKZT
- * 获取zuul.routes.KSKZT.path
- * @param key
- * @return
- */
- public static String getRoutesPathKey(String key){
- return "zuul.routes."+key+".path";
- }
- /**
- * 根据zuul.routes.KSKZT.path
- * 获取/KSKZT/**
- * @param pathKay
- * @return
- */
- public static String getRoutesPathPalue(String pathKay){
- return props.getProperty(pathKay.trim());
- }
- /**
- * 获取系统配置的注册名称
- * @return
- */
- public static String getApplicationName(){
- return props.getProperty("spring.application.name");
- }
- /**
- * 获取路由表
- * @return
- */
- public static List<Map<String,String>> getRouteList(){
- List<Map<String,String>> routeList = new ArrayList<>();
- for(Object key : props.keySet()){
- if(key.toString().startsWith("zuul.routes") && key.toString().endsWith(".serviceId") ){
- Map< String, String> route = new HashMap<String, String>();
- route.put("serviceName",props.get(key)+"");
- route.put("servicePath",getApplicationName()+getRoutesPathPalue(getRoutesPathKey(getRoutesKey(key.toString()))));
- routeList.add(route);
- }
- }
- return routeList;
- }
测试获取到的路由表
- public static void main(String[] args) {
- List<Map<String,String>> list = getRouteList();
- for (Map<String,String> object : list) {
- System.out.println("********************");
- System.out.println(object.get("serviceName"));
- System.out.println(object.get("servicePath"));
- }
- }
(3)保证监控平台获取正确的路由表;
1)在监控平台启动时:通过HttpClient请求zuul提供的接口,获取路由表信息
2)在zuul启动时:通过的HttpClient请求监控平台的更新接口,将路由表作为参数传递给监控平台,监控平台接受并更新。
微服务监控平台获取网关(zuul)配置列表的更多相关文章
- Chris Richardson微服务翻译:构建微服务之使用API网关
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关(本文) 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统
业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件. spring-b ...
- spring cloud+dotnet core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- spring cloud+.net core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- Spring Cloud 微服务三: API网关Spring cloud gateway
前言:前面介绍了一款API网关组件zuul,不过发现spring cloud自己开发了一个新网关gateway,貌似要取代zuul,spring官网上也已经没有zuul的组件了(虽然在仓库中可以更新到 ...
- 宜信开源微服务任务调度平台(SIA-TASK)
背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.常常需要一些任务调度系统帮助开发者解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此的背景下,很多原先的任 ...
- 第七模块 :微服务监控告警Prometheus架构和实践
119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...
- 微服务治理平台的RPC方案实现
导读:本文主要探讨了rpc框架在微服务化中所处的位置,需要解决的问题.同时介绍了用友云微服务治理平台的rpc解决方案,为什么选择该方案.该方案提供的好处是什么.同时也会介绍用友RPC框架的基本结构以及 ...
- 大型互联网 b2b b2c o2o 电子商务微服务云平台
鸿鹄云商大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 分布式.微服务.云架构电子商务平台 java ...
随机推荐
- win10下以管理员身份打开hosts文件
第一步: 第二步: 第三步:先后执行两个命令cmd notepad hosts 最后一步:在记事本中修改host文件
- Unable to execute command or shell on remote system: Failed to Execute process
1.问题描述 先说下我的项目环境:jenkins部署在windows下面,项目部署也是在windows下面,ssh服务器是FreeSSHd,原来是打算用Send files or execute co ...
- List<SelectListItem> 转为 SelectList
List<SelectListItem> 转为/转换 SelectList SelectList slPayCh = new SelectList(GetPayChannels(),&qu ...
- 3级搭建类301-Oracle 11g RAC 双节点搭建(11.2.0.4)非公
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- vue自学入门-8(vue slot-scope)
vue自学入门-1(Windows下搭建vue环境) vue自学入门-2(vue创建项目) vue自学入门-3(vue第一个例子) vue自学入门-4(vue slot) vue自学入门-5(vuex ...
- uniGUI之自定义JS事件动作ClientEvents(30)
sender.setText('Over'); MainForm.UniLabel1.setPosition(x, y); MainForm.UniLabel1.setText('Click!');
- 在bootstrap的column中的formatter里不能传递row参数吗?
row 是一个对象 你需要把它转成字符串用JSON.stringify(row),这样就是字符串了,但是还有问题,你需要给加密一下encodeURI(JSON.stringify(row)),然后方 ...
- 打包Windowsform项目出现File 'Cognex.VisionPro3D.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'错误
错误信息: 个人理解此错误的大概意思是:打包的文件是64位的但是打包后的文件设置的是32位的,就出现冲突了. 解决方案:选择打包程序项目的属性窗口设置TargetPlatform属性为对应的值,本项目 ...
- 解决jquery click事件执行两次
js 解决办法 event.preventDefault() :阻止默认行为,可以用 event.isDefaultPrevented() 来确定preventDefault是否被调用过了 event ...
- MFC线程间消息传递(转)
原文地址:https://blog.csdn.net/qq_37059136/article/details/84972192