精华内容
下载资源
问答
  • 以太坊节点发现原理

    千次阅读 2018-05-24 20:18:53
    原文地址:https://blog.csdn.net/haolifengwang/article/details/80348776发现原理1) 系统第一次启动随机生成本机节点NodeId,即为LocalId,生成后固定不变,本地节点记为local-eth.该节点为第一次启动时生成,以后...

    原文地址:https://blog.csdn.net/haolifengwang/article/details/80348776

    发现原理

    1) 系统第一次启动随机生成本机节点NodeId,即为LocalId,生成后固定不变,本地节点记为local-eth.

    该节点为第一次启动时生成,以后重新启动后不会变化。各个节点都会有一个唯一的标志NodeId。A和B都有各自NODEid

    2) 系统读取公共节点信息,ping-pang握手完成后,将其写入K桶

    读取公共节点,也就是说大家都知道,各个节点都有相同的公共节点信息。设为C。也就是说A不知道B,B不知道A,但A和B都知道C.这个是C点也就是知道了A点和B点。

    3) 进入刷桶循环

    a)      随机生成目标节点Id,记为TargetId,从1开始记录发现次数和刷新时间。

    各个节点都会生成目标节点id,也就是说每个节点同时发起刷桶操作。

    b)      计算TargetId与LocalId的距离,记为Dlt

    计算本地节点与目标节点的距离。

    c)       k桶中节点NodeId记为KadId,计算KadId与TargetId的距离,记为Dkt

    各个节点中k通中初始化为公共节点信息,

    d)      找出K桶中Dlt大于Dkt的节点,记为K桶节点,向k桶发送FindNODE命令,FindNODE命令包括TargetId,

    因为K桶节点已经知道发送FindNode命令的本地节点,所以现在需要记录本地节点信息。也就是说A向C点发送消息,C无需在记录A点信息。

    e)      k桶节点收到FindNODE命令后,统一执行b-d的过程,将从K通中找到的节点使用Neighboras命令发回给本机节点。

    C点将B点的信息发给A点。

    f)        本机节点收到Neighbour后,将收到的节点写入到K桶中

    A点将B点信息进行记录

     

    这样A点就知道B点了。同样的过程B点通过C点知道A点。

    展开全文
  • 1、SpringCloud服务注册与发现原理 2、SpringCloud使用Eureka作为注册中心 3、搭建集群高可用Eureka注册中心 4、Consul、Eureka、Zookeeper、Redis注册中心对比 5、Consul注册中心环境搭建 6、SpringCloud...

    注册中心,必须是集群的,不然没有存在的必要

    1、SpringCloud服务注册与发现原理

     

    2、SpringCloud使用Eureka作为注册中心

    3、搭建集群高可用Eureka注册中心

    4、Consul、Eureka、Zookeeper、Redis注册中心对比

    5、Consul注册中心环境搭建

    6、SpringCloud使用Consul替代Eureka作为注册中心

    展开全文
  • Eureka服务发现原理 eureka:多个eureka server组成一个高可用的eureka集群,集群内的eureka节点之间通过同步复制的方式更新注册信息,保持服务注册信息的一致性。 Application Service: 是一个服务的提供者,为...

    Eureka服务发现原理

    在这里插入图片描述

    • eureka:多个eureka server组成一个高可用的eureka集群,集群内的eureka节点之间通过同步复制的方式更新注册信息,保持服务注册信息的一致性。
    • Application Service: 是一个服务的提供者,为其他服务提供特定的业务服务;它也是一个eureka client,会将自己注册到eureka server中,同时获取注册表缓存在本地。
    • Application Client:服务调用者,会去调用application service提供的服务,通过http api 的方式调用。application client将自己注册到eureka server中,同时获取注册表信息,从信息表中找到所需的服务发起远程调用。
    • Replicate:eureka server之间注册表信息的同步机制,使得eureka集群中不同注册表中服务实例信息保持一致。

    Eureka注册原理解析:

    Eureka Client

    Eureka Client 将很多与Eureka Server的交互工作隐藏,开发人员是不用管这部分工作的。Eureka Client工作流程:

    在这里插入图片描述

    图片来自SpringCloud微服务架构进阶

    client注册的流程其实很简单,无非就是以下几个步骤:

    • 先读eureka server的配置信息,从而知道eureka server在哪,以便后面进行注册
    • 接着再读取自己的配置信息,然后将自己的信息封装在InstanceInfo实例中,等下将实例发送到eureka server中
    • 通过上面步骤已经知道eureka server的地址了,此时先把注册拉取到本地缓存起来
    • 将上面封装的InstanceInfo实例发送到eureka server进行注册,然后初始化心跳检测以及缓存刷新(这些都是通过开启后台线程完成的)
    • 再次拉取注册表更新本地注册表信息


    InstanceInfo实例部分代码:可以看到几个主要的信息比如:instanceId、ipAddr、port、appName、appGroupName、lastUpdatedTimestamp等

    
    @ProvidedBy(EurekaConfigBasedInstanceInfoProvider.class)
    @Serializer("com.netflix.discovery.converters.EntityBodyConverter")
    @XStreamAlias("instance")
    @JsonRootName("instance")
    public class InstanceInfo {
        private static final String VERSION_UNKNOWN = "unknown";
        private static final Logger logger = LoggerFactory.getLogger(InstanceInfo.class);
        public static final int DEFAULT_PORT = 7001;
        public static final int DEFAULT_SECURE_PORT = 7002;
        public static final int DEFAULT_COUNTRY_ID = 1;
        private volatile String instanceId;
        private volatile String appName;
        @Auto
        private volatile String appGroupName;
        private volatile String ipAddr;
        private static final String SID_DEFAULT = "na";
        /** @deprecated */
        @Deprecated
        private volatile String sid;
        private volatile int port;
        private volatile int securePort;
        ...
        @Auto
        private volatile Long lastUpdatedTimestamp;
        
        ...
        }
    
    Eureka Server

    Eureka Server是一个开箱即用的服务注册中心,开发人员只需要导入相关的依赖即可,它提供以下功能:

    • 服务注册
    • 接受eureka client发送过来的心跳检测
    • 服务剔除(当一个client心跳超时)
    • 服务下线(client请求关闭)
    • 集群同步(不同eureka server中注册表信息同步)
    • 获取注册表中服务实例信息(每个eureka server同时也是一个eureka client,eureka server可以把自己注册到eureka集群中)

    服务注册时eureka client会将服务实例InstanceInfo发送到eureka server。

    • 服务实例通过ConcurrentHashMap保存在内存中,在服务注册的过程中会先获取一个锁,防止其他线程对registry注册表进行数据操作,避免数据不一致。
      eureka server接收到client发送过来的InstanceInfo实例时,会先根据唯一的instanceId检查注册表中是否已存在该实例。
    • 如果没有该实例,说明这是一次新的注册服务,server会将InstanceInfo信息保存到注册表中
    • 如果存在该实例,说明这是一次心跳检测或者实例信息更新操作,会比较lastUpdatedTimestamp字段保留最新的InstanceInfo实例信息。
    集群同步

    为了保持注册表的一致性,集群中的eureka server需要一个同步机制来维护注册表。

    集群同步分为两个部分,我个人将其理解为pull和push:

    • pull:eureka server启动时从集群中其他节点pull注册表信息进行本地注册表的初始化
    • push:eureka server对本地的注册表进行更新操作后(包括增删改)会将操作push(也就是同步)到其他节点中

    集群模式下的eureka server,多个eureka server之间互相注册并同步注册表信息,即使集群中个别节点出现故障或宕机,集群还是能够稳定提供服务。

    缺陷:Eureka Server集群的节点之间是通过http的方式进行同步的,网络存在不可靠性,为了保持高可用性,eureka server 牺牲了数据一致性,eureka server不满足 CAP找那个C(数据一致性)。

    展开全文
  • ignite TCP发现原理

    千次阅读 多人点赞 2019-06-27 15:04:41
    协调器- 特定(按最小顺序号)服务器节点,负责协调集群中的不同过程(如验证发现消息,管理分区映射交换等)。 拓扑- 所有节点都被组织成的结构。 介绍 发现机制作为基础功能旨在让单独的Ignite节点形成集群。...

    基本定义

    节点 - Ignite单独的实例,服务端或客户端。

    节点顺序 - 每个节点的内部属性(对于TcpDiscoverySpi,它只是一个统一增加的数字)。

    协调器 - 特定(按最小顺序号)服务器节点,负责协调集群中的不同过程(如验证发现消息,管理分区映射交换等)。

    拓扑 - 所有节点都被组织成的结构。

     

    介绍

    发现机制作为基础功能旨在让单独的Ignite节点形成集群。其主要目标是构建所有节点共享的集群视图(节点数,节点顺序等),并保持该视图的一致性。

    Discovery隐藏在DiscoverySpi接口背后,其默认实现是TcpDiscoverySpi。另一个实现是ZookeeperDiscoverySpi

    实现了DiscoverySpi接口的类定义了一个拓扑(所有节点都被排列在其中)的结构。其中TcpDiscoverySpi集群使用的是环形拓扑。

     

    环形拓扑

    当每个节点保持与其下一个节点连接并且其上个节点保持与该节点的连接时,Tcp Discovery将集群中的所有服务端节点排列成环形结构。客户端节点位于环外,并始终连接到特定服务端(客户端没有上一个的节点,只能连接到一个服务端)。

    大多数实现逻辑在服务端ServerImpl和客户端ClientImpl类中。

    当新的服务器端节点启动时,它会通过TcpDiscoveryIpFinder提供的所有地址尝试查找现有集群。如果所有地址都不可用,则节点将自身视为第一个节点,从自身形成集群并成为此集群的协调者。

    如果节点设法从IpFinder连接到其中一个地址,它将执行下文节点加入过程。

     

    节点加入过程

    概述

    节点连接由涉及不同消息的几个阶段组成 - 加入请求消息,NodeAdded消息,NodeAddFinished消息。在验证新节点的过程中,如果验证成功并且在所有节点上更新拓扑信息,则会发生配置信息交换。

    当节点成功加入时,它被放置在环中的最后一个节点和协调器之间。

    加入请求消息

    连接过程的起点是ServerImplClientImpl类中提供的joinTopology方法。

    首先节点从其所有组件(例如从GridCacheProcessor收集缓存配置)收集发现数据。这里的中心点是TcpDiscoverySpi #collectExchangeData,它在每个组件上调用GridComponent#collectJoiningNodeData
    disco数据被打包到"加入请求"中并发送到集群。

    当JoinReq(加入请求)到达协调器时,它将验证消息,并在验证通过时生成NodeAdded消息(ServerImpl.RingMessageWorker #processJoinRequestMessage)。在加入请求的生命周期结束后; 只有NodeAdded消息进一步使用。协调器创建此消息,添加有关加入节点的信息(包括JoinReq中加入节点发现数据),并发送到环上。

    NodeAdded消息

    处理逻辑位于ServerImpl.RingMessageWorker#processNodeAddedMessage中

    在接收到NodeAdded时,集群中的每个节点(包括协调器节点)将加入节点发现数据应用于组件,收集其本地发现数据并将其添加到消息中。
    然后,节点通过调用ServerImpl.RingMessageWorker#sendMessageAcrossRing将NodeAdded发送到下一个节点。

    当NodeAdded完成的消息通过环并再次到达协调器时,表示NodeAdded的生命周期完成。之后,协调器创建NodeAddFinished消息并将其发送到环上。

    NodeAdded消息也被传递到加入的那个节点,当所有其他节点都处理完消息时,它会在最后接收消息。

    NodeAddFinished消息

    NodeAddFinished消息,顾名思义,完成了节点连接的过程。收到此消息后,服务端和客户端的每个节点都会触发NODE_JOINED事件,以通知Discovery Manager有关新加入节点。

    NodeAddFinished和其他加入请求

    如果连接节点未按时收到NodeAddFinished,则会发送其他加入请求。此时间由TcpDiscoverySpi#networkTimeout定义,默认值为5秒(TcpDiscoverySpi#DFLT_NETWORK_TIMEOUT)。

     

    翻译自:

    https://cwiki.apache.org/confluence/display/IGNITE/TCP+Discovery+SPI+under+the+hood

    展开全文
  • 一:服务注册与发现原理 描述:服务注册与发现是是针对于三大角色的:①:服务提供者 ②:服务消费者 ③:注册中心 针对他们之间的关系描述就是服务的注册与发现的运行原理: 1:各微服务在服务启动的时候,将服务的...
  • 服务注册与发现原理

    千次阅读 2019-02-23 12:34:42
    可以实现服务调用、负载均衡、容错等,实现服务发现与注册。 服务注册与发现    在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自已服务器的信息 比如 服务地址通讯地址等以 别名方式注册到...
  • Nacos 服务注册与发现原理分析

    千次阅读 2020-08-30 22:34:34
    2020博客地址汇总 2019年博客汇总 ...Nacos 支持几乎所有主流类型的 “服务” 的发现、配置和管理。 了解过 Dubbo 的同学,应该对 Dubbo 的架构非常熟悉,最经典的一张架构图如下所示: dubbo-arch..
  • Eureka 服务注册与发现原理剖析

    千次阅读 2020-03-27 15:33:38
    Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务。主要用于定位运行在 AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以...
  • Ryu拓扑发现原理分析

    千次阅读 2015-04-08 15:09:46
    Ryu拓扑发现的核心模块是ryu/topology目录下的switches.py,拓扑发现的应用是同目录下的dumper.py。在dumper.py中,会利用_CONTEXTS来实例化switches.py中的Switches类,然后将拓扑发现的相关信息通过日志方式(LOG....
  • 了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务...使用Zookeeper实现服务注册与发现,主要应用的是Zookeeper的Znode数据模型和Watcher机制,因此咱们先从Zookeeper的数据模型说起。 1、Zookeeper数据模...
  • 网络拓扑发现原理研究

    千次阅读 2012-11-12 15:08:50
    原文地址: 1.背景描述  随着信息时代的到来,对计算机网络的...在五大功能域中,配置管理是基础,它的主要功能包括发现网络的拓扑结构、监视和管理网络设备的配置情况。其它的各项功能都以已知网络的拓扑结构为基
  • Nacos初探(3)-- 服务发现原理解析

    千次阅读 2018-12-19 13:53:52
    一、服务发现前 目前在Spring Cloud,基本都是使用Feign去调用服务,Feign其实也是Ribbon的一个封装,主要功能,是将我们通常http请求服务这个过程帮我们封装起来,使我们使用时更加的简便,通过一个注解就能实现对...
  • POX学习笔记之POX拓扑发现原理分析

    千次阅读 2014-01-03 19:59:57
    POX代码中与拓扑发现相关的模块主要是discovery.py文件和spanning_tree.py文件。 当连接新交换机时,触发ConnectionUp事件,LLDPSender类实例会获得连接的交换机的所有端口信息,调用add_port函数,构造LLDP包;调用...
  • 作者|雷架来源 |爱笑的架构师(ID:DancingOnYourCode)头图 | CSDN下载自东方IC在微服务架构或分布式环境下,服务注册与发现技术不可或缺,这也是程序员进...
  • Atitti onvif 设备发现原理

    千次阅读 2016-12-14 23:12:30
    设备发现原理   1.1. ,有以下几个步骤:1 1.2. 设备搜索原理及编程技巧:2 1.3. Ws disconvert 的组播地址和端口就是37022   1)发现ipcam 客户端首先发起ws-discovery,查找所在网络段内的所有的...
  • 前言 在这里,你将了解 Kubernetes 集群如何实现通过服务名,进行服务发现,负载均衡,调用后端服务。 这里,我们以服务名为ticknet为例...目录 kube-dns服务发现原理 kube-proxy实现负载均衡 总结 参考 1. kube-...
  • 海康 设备 发现(SADPTool原理

    万次阅读 2018-10-23 08:36:05
    SADPTool原理: 向239.255.255.250:37020发送基于ONVIF协议的 udp 组播,设备会监听 239.255.255.250:37020,收到指令,会向 发送组播的机器,返回设备信息,也会向239.255.255.250:37020 发送 设备信息的 组播...
  • 服务注册与发现的实现原理: 1.服务发现组件 (1).首先,当服务启动的时候,服务消费者和服务提供者都会把自己的IP和端口 注册到服务发现组件中,当服务消费者需要使用的时候,他会从服务发现组件 的维护的表中,进行...
  • Eureka 原理 服务发现 客户端发现模式 服务端发现模式 服务注册表 自注册方式 第三方注册模式 总结 Netflix Eureka 简介 1、Eureka 是 Netflix 公司开发的服务发现框架,Spring Cloud 对它提供了支持,将它...
  • zookeeper实现服务注册与发现原理

    千次阅读 2019-06-04 09:38:27
    https://blog.csdn.net/qq_26222859/article/details/80817673
  • 多普勒效应的原理及应用 一 多普勒现象的发现
  • 在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的...
  • Spring Cloud之Eureka服务注册与发现(概念原理篇) 解决什么问题 ➟阐述微服务以及服务注册发现的部分概念 ➟阐述Eureka服务注册与发现的部分原理及细节 为什么需要服务中心 过去,每个应用都是一个CPU,一个主机上...
  • 在OrCAD中绘制原理图的时候,当我们在放置的过程中发现原理图库有错误,然后去修改,再次放置时会出现如图所示的错误: 2.问题原因分析 这是因为Cadence OrCAD的工程会有缓存,出现这个问题是因为缓存中的文件和...
  • 1.硬件原理什么是传感器?其实以前的光敏电阻控制LED的文章已经接触过传感器了,光敏电阻也属于光传感器。简单概括,传感器是把光,温度,湿度,气体浓度,压力强度,声强度等物理因素转化为电信号的器件。这次我们...
  • WPAD 的原理及实现WPAD 通过让浏览器自动发现代理服务器,使代理服务器对用户来说是透明的,进而轻松访问互联网。WPAD 可以借助 DNS 服务器或 DHCP 服务器来查询代理自动配置(PAC)文件的位置。引言代理服务器大多被...
  • 点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 精尽 Dubbo 原理与源码 69 篇精尽 Netty 原理与源码 61 篇中文详细注释的开源...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,417
精华内容 15,766
关键字:

发现原理