【网关】Shenyu网关自动注册和同步元数据和URL,Shenyu-admin从nacos同步数据方案

Shenyu官网数据同步设计方案如下面图,同步方式支持 ZookeeperHttp 长轮询WebsocketNacosEtcd 和 Consul等。我们选择的时候,要小心配置参数,这里我以官网http和自实现的nacos为例。

 官网示例代码

 http方式注册

yml配置admin的账号信息

shenyu:register:registerType: http #zookeeper #etcd #nacos #consulserverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848props:username: adminpassword: 123456

 nacos方式注册

*** nacos的地址和nacosNameSpace不能错,要和admin的一样。

shenyu:register:registerType: nacos #http #zookeeper #etcd #nacos #consulserverLists: localhost:8848 #http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848props:
#      username: admin
#      password: 123456#      username: nacos
#      password: nacosnacosNameSpace: ShenyuRegisterCenter

Shenyu-admin的配置

 注意命名空间nacosNameSpace要和注册服务时配置一样。

shenyu:register:registerType: nacos #http #zookeeper #etcd #nacos #consul#serverLists: #localhost:2181 #http://localhost:2379 #localhost:8848serverLists: localhost:8848 #http://localhost:2379 #localhost:8848props:sessionTimeout: 5000connectionTimeout: 2000checked: truezombieCheckTimes: 5scheduledTime: 10nacosNameSpace: ShenyuRegisterCenter

Shenyu-Admin数据同步到数据库方案

先从注册服务端看

看控制台日志:metadata client register success: {"appName":"http","contextPath":"/http","path":"/http/order/p*********.....

找到doRegister(metadata, Constants.META_PATH, Constants.META_TYPE)

 org.apache.shenyu.client.core.disruptor.subcriber.ShenyuClientMetadataExecutorSubscriber

    public void start(final ShenyuClientRegisterRepository shenyuClientRegisterRepository) {RegisterClientExecutorFactory factory = new RegisterClientExecutorFactory();factory.addSubscribers(new ShenyuClientMetadataExecutorSubscriber(shenyuClientRegisterRepository));factory.addSubscribers(new ShenyuClientURIExecutorSubscriber(shenyuClientRegisterRepository));factory.addSubscribers(new ShenyuClientApiDocExecutorSubscriber(shenyuClientRegisterRepository));providerManage = new DisruptorProviderManage<>(factory);providerManage.startup();}

在上一篇disruptor相关介绍

【并发编程】ShenyuAdmin里面数据同步用到的无锁环形队列LMAX Disruptor并发框架_wenchun001的博客-CSDN博客

从Shenyu-Admin端查看

一个和注册服务信息有关的日志,如下图,是NacosClientServerRegisterRepository打印出来的

NacosClientServerRegisterRepository

init方法

这里很清楚看到有配置信息了

@Overridepublic void init(final ShenyuClientServerRegisterPublisher publisher,final ShenyuRegisterCenterConfig config) {this.publisher = publisher;String serverAddr = config.getServerLists();Properties properties = config.getProps();Properties nacosProperties = new Properties();nacosProperties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);nacosProperties.put(PropertyKeyConst.NAMESPACE, properties.getProperty("nacosNameSpace"));// the nacos authentication usernamenacosProperties.put(PropertyKeyConst.USERNAME, properties.getProperty(PropertyKeyConst.USERNAME, ""));// the nacos authentication passwordnacosProperties.put(PropertyKeyConst.PASSWORD, properties.getProperty(PropertyKeyConst.PASSWORD, ""));// access key for namespacenacosProperties.put(PropertyKeyConst.ACCESS_KEY, properties.getProperty(PropertyKeyConst.ACCESS_KEY, ""));// secret key for namespacenacosProperties.put(PropertyKeyConst.SECRET_KEY, properties.getProperty(PropertyKeyConst.SECRET_KEY, ""));try {this.configService = ConfigFactory.createConfigService(nacosProperties);this.namingService = NamingFactory.createNamingService(nacosProperties);} catch (NacosException e) {throw new ShenyuException(e);}subscribe();}

注册服务方法

    private void publishMetadata(final String data) {LOGGER.info("publish metadata: {}", data);publisher.publish(Lists.newArrayList(GsonUtils.getInstance().fromJson(data, MetaDataRegisterDTO.class)));}

自实现的注册服务

整个框架默认使用的是nacos作为服务注册中心,暂时未开源出来。

代理路由选择器

如下图scm的路由会自动注册上来。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

篇十三:策略模式:选择不同算法

篇十三&#xff1a;“策略模式&#xff1a;选择不同算法” 设计模式是软件开发中的重要知识&#xff0c;策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;用于在运行时根据不同的需求选择不同的算法或行为。本文将探讨策略模式的作用和实现…

算法备案制度:新法规对技术发展的影响与启示

随着技术的不断进步和数字化的日益普及&#xff0c;算法在我们生活的每一个角落都发挥着关键作用。从社交网络的信息推送到在线购物的商品推荐&#xff0c;再到金融领域的风险评估&#xff0c;算法已经成为现代社会运作的核心。但随之而来的&#xff0c;也是对于算法的透明度、…

React Dva 操作models中的subscriptions讲述监听

接下来 我们来看一个models的属性 之前没有讲到的subscriptions 我们可以在自己有引入的任意一个models文件中这样写 subscriptions: {setup({ dispatch, history }) {console.log(dispatch);}, },这样 一进来 这个位置就会触发 这里 我们可以写多个 subscriptions: {setup…

Java课题笔记~ 关联映射

一、MyBatis关联查询 在关系型数据库中&#xff0c;表与表之间存在着3种关联映射关系&#xff0c;分别为一对一、一对多、多对多。 一对一&#xff1a;一个数据表中的一条记录最多可以与另一个数据表中的一条记录相关。列如学生与学号就属于一对一关系。 一对多&#xff1a;主…

【JavaScript 】浏览器事件处理

1. 什么是浏览器事件? 浏览器事件是指在网页中发生的各种交互和动作,例如用户点击按钮、页面加载完成、输入框文本变化等。通过处理这些事件,可以编写相应的JavaScript代码来实现特定的功能和行为。 2. 常见的浏览器事件 以下是一些常见的浏览器事件及其用途的详细介绍: c…

升级你的GitHub终端认证方式:从密码到令牌

升级你的GitHub终端认证方式&#xff1a;从密码到令牌 前言 GitHub官方在2021年8月14日进行了一次重大改变&#xff0c;它将终端推送代码时所需的身份认证方式从密码验证升级为使用个人访问令牌&#xff08;Personal Access Token&#xff09;。这个改变引起了一些新的挑战&am…

【LeetCode】283.移动零

题目 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12]输出: [1,3,12,0,0]示例 2: 输入: nums [0]输…

Linux 安装软件的几种方式

哈喽大家好&#xff0c;我是咸鱼 相信小伙伴们都知道在 Linux 中&#xff0c;安装软件一般有三种方式 yum 安装rpm 安装源码编译安装 咸鱼平时三种安装方式都会用&#xff0c;但是具体原理和区别却没有去深入了解过 结果上周部门刚来的新人问我这几种安装方式的时候&#x…

正则回溯整理

目录 一、回溯绕过 二、防止正则表达式回溯绕过的方法 三、PHP利用PCRE回溯次数限制绕过某些安全限制 1、 首先&#xff0c;来看一段PHP代码 2、正则回溯的过程 3、PHP的pcre.backtrack_limit 限制利用 一、回溯绕过 正则表达式的回溯绕过是指通过构造恶意输入&…

【css】属性选择器分类

属性选择器类型示例说明[attribute][target]选择带有 target 属性的所有元素[attributevalue][target_blank]选择带有 target“_blank” 属性的所有元素[attribute~value][title~flower]选择带有包含 “flower” 一词的 title 属性的所有元素[attribute|value][lang|en]选择带有…

每天一道leetcode:剑指 Offer 32 - III. 从上到下打印二叉树 III(中等广度优先遍历)

今日份题目&#xff1a; 请实现一个函数按照之字形顺序打印二叉树&#xff0c;即第一行按照从左到右的顺序打印&#xff0c;第二层按照从右到左的顺序打印&#xff0c;第三行再按照从左到右的顺序打印&#xff0c;其他行以此类推。 示例 给定二叉树: [3,9,20,null,null,15,7…

lwip不同的socket分别作为监听和客户端连接

在LWIP中&#xff0c;一个网络设备&#xff08;如以太网卡&#xff09;可以创建多个socket&#xff0c;用于处理不同的网络连接。一般&#xff0c;你可以创建一个socket用于监听&#xff08;listen&#xff09;连接&#xff0c;另一个socket用于主动发起&#xff08;connect&am…

Elasticsearch概述和DSL查询总结

目录 Elasticsearch概述 1. 什么是Elasticsearch 2. 作用 3. 特点 DSL&#xff08;Domain Specifit Language&#xff09;特定领域语言&#xff1a; 概念和作用 查询代码总结 最后附项目准备 1.创建搜索工程&#xff08;maven工程&#xff09; 2.配置文件 application…

Win7 专业版Windows time w32time服务电脑重启后老是已停止

环境&#xff1a; Win7 专业版 问题描述&#xff1a; Win7 专业版Windows time w32time服务电脑重启后老是已停止 解决方案&#xff1a; 1.检查启动Remote Procedure Call (RPC)、Remote Procedure Call (RPC) Locator&#xff0c;DCOM Server Process Launcher这三个服务是…

uniapp获取当前页面高度

设置动态高度:style"{height: pageHeightpx}" <view class"uni-content" :style"{height: pageHeightpx}" >... </view>获取当前页面高度&#xff1a; onLoad() {// 获取当前窗口高度this.pageHeight uni.getSystemInfoSync().wi…

RocketMQ Learning(一)

目录 一、RocketMQ 0、RocketMQ的产品发展 1、RocketMQ安装 1.1、windows下的安装 注意事项 1.2、Linux下的安装 1.3、源码的安装 1.4、控制台 2、消息发送方式 2.1、发送同步消息 2.2、发送异步消息 2.3、单向发送 3、消息消费方式 3.1、负载均衡模式&#xff0…

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--具体功能实现【三】

文章目录 SSM--功能实现实现功能04-添加家居信息需求分析/图解思路分析代码实现注意事项和细节 实现功能05-显示家居信息需求分析/图解思路分析 代码实现 SSM–功能实现 实现功能04-添加家居信息 需求分析/图解 思路分析 完成后台代码从dao -> serivce -> controller ,…

自动化应用杂志自动化应用杂志社自动化应用编辑部2023年第11期目录

数据处理与人工智能 大数据视域下无轨设备全生命周期健康管理技术的研究 赖凡; 1-3 三维激光扫描结合无人机倾斜摄影在街区改造测绘中的技术应用 张睿; 4-6 井上变电站巡检机器人的设计与应用 刘芳; 7-9 《自动化应用》投稿邮箱&#xff1a;cnqikantg126.com 基于机…

前端面试经典算法题

前言 现在面试流行考核算法&#xff0c;做过面试官&#xff0c;也被面试。问算法对面试官来说&#xff0c;是一种解脱&#xff0c;找出了一个看似很高明且能偷懒的办法选择人&#xff0c;避免了不知道问啥的尴尬&#xff1b;被面试者&#xff0c;也找到了一种新的面试八股文&am…

机器学习笔记

文章目录 编码器-解码器Batch Normalization好处 编码器-解码器 第二个input与transformer中的解码器类似。 Batch Normalization 尽量使得w1和w2之间呈现为正圆 训练模型的时候&#xff0c; μ \mu μ和 σ \sigma σ不可以认为是常数&#xff0c;而是包含数据的变量&…