利用zk来实现一个服务的注册和发现

author author     2023-05-04     595

关键词:

参考技术A 利用ZK来实现一个服务的注册和发现小结

一、服务的注册

1、先来安装zk,这里可以在windows环境下安装即可,我们就用一个单节点做测试。不用建集群或者伪集群

2、启动zk-server

3、在项目工程里引入操作ZK的客户端框架 curator

4、通过curator的操作命令来链接zk-server,并创建节点

5、进行服务提供方所提供的服务接口在第4部上所建节点进行服务接口的注册(即服务的暴露)

6、启动服务提供方的监听(用来监听消费方发送来的消息)

7、补充:服务的监听其实质还是通过ServerSockt来获取消息,但是实际当中的一些消息中间件并不会这样用。我们知道现如今高性能的IO通信框架netty已经被广泛使用,采用了同步非阻塞的设计思想,以及多路复用器来完成高并发下的网络通信

二、服务的发现

1、消费方开始调用提供方的服务接口

2、调用方式:1>可以使用jdk动态代理来调用远程方法

2>也可以自己实现一个InvocationHandler,其目的就把远程接口加载到本地,当做本地方法来使用

3、serverceLocator方式

3.1 服务发现步骤

3.2 通过curator来链接zk-server

3.3 访问znode是否存在

3.4 通过zk-api 提供PathChildrenCache、PathChildrenCacheListener来监听znode数据是否有变化

3.5 获取zk-server的ip+port

3.6 通过消费方socket来链接 zk-server 并发送消息

总结:这里的服务注册和发现 完全是用了zk的两个非常重要的特性:znode结构以及事件监听通知机制,我们可以看到

在消费方服务发现里,会有一个监听对应znode的watcher实时动态的负责监听。这里可以理解为:只要znode上有

新的服务方接口,就会通知消费方来调用

缺点:实际项目当中我们知道作为服务注册和发现的组件常用的有ZK、Eureka,而我们并不去优先考虑使用ZK,原因何在?

我们知道ZK\Eureka,这两者都是作为分布式系统当中的一种重要的分布式协调器,而我们所知的二者都满足了分布式系统

CAP理论当中的一个侧重点,ZK主要满足CP,而Euraka是满足AP,这就为ZK不能满足A而带来一定程度的影响,比如当ZK中

master节点挂掉之后,因为集群节点过多,从节点的leader选举占据了大量的时间,而导致zk的不可用,反而大大提升了

系统的风险。

优点:ZK的优点也是基于自身的特点,根据他的特点我们可以去实现一个分布式系统当中常用的 配置管理中心,这里就利用

了他的一致性特点

优化方案,如果服务提供房是一个集群,那么消费方请求可以通过负载均衡,来打到不同的节点上,以防止单一节点过载

zookeeper实现一个简单的服务注册与发现(c++)一:与zk保持连接(代码片段)

git:git@github.com:ccx19930930/services_register_and_discovery.git参考链接:https://www.cnblogs.com/haippy/archive/2013/02/21/2920280.html 禁止拷贝基类:base_class.h:1classCUnCopyable23protected:4CUnCopyabl 查看详情

zk与eureka比较

...时将它们提供给下游的服务发现请求。这样一来,就可以实现在同一个子网中(samesideofpartition),新发布的服务仍然可以被发现与访问。Eureka还有客户端缓存功能Eureka的构架保证了它能够成为Service发现服务。它相对与ZooKeeper来... 查看详情

springcloud整合alibaba的nacos实现服务注册和配置中心

...配置中心都是非常重要的组件,而Nacos正是一个可以同时实现服务注册发现和配置中心的解决方案。本篇博客将会介绍如何使用SpringCloud和Nacos来实现服务注册和配置中心的整合。1.概述首先,我们需要了解一下Nacos的一些基本概... 查看详情

使用consul实现服务的注册和发现

服务注册-服务进程在注册中心注册自己的位置。它通常注册自己的主机和端口号,有时还有身份验证信息,协议,版本号,以及运行环境的详细资料。服务发现-客户端应用进程向注册中心发起查询,来获取服务的位置。服务发... 查看详情

浅谈etcd+grpc服务注册与发现(代码片段)

...网络(2)创建gRPC服务端,并将具体的服务进行注册(3)利用服务地址、服务名等注册etcd服务配置(4)gRPC监听服务服务消费者:(1)注册etcd解析器(2)连接etcd服务(3)获取gRPC 查看详情

闲聊注册中心——zk、eureka、sofa-registry

...易,偏小的服务规模本身对于注册中心的依赖并不明显,实现的手段也没有定式;大型服务又会对注册中心的定位、功能提出更苛刻的需求。究竟是选择强一致性还是高可用性,当下的主流技术选型倾向于后者,但这并不是说明... 查看详情

eureka服务注册与发现(代码片段)

...块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改... 查看详情

dubbo中服务注册与发现实现原理(代码片段)

...务注册和服务发现机制,接下来我们看看Dubbo是怎么实现的服务注册我们还是基于之前dubbo服务端启动源码分析我们知道,在对外发布服务的时候是通过ServiceConfig.export来进行服务的暴露发布的,而服务注册的时机也是... 查看详情

dubbo的底层实现原理和机制

...OA:具有服务治理功能,提供服务的注册和发现!用zookeeper实现注册中心!启动时候服务端会把所有接口注册到注册中心,并且订阅configurators,服务消费端订阅provide,configurators,routers,订阅变更时,zk会推送providers,configuators,routers,... 查看详情

微服务注册与发现(代码片段)

目录简介实现服务注册组件设计服务注册表数据结构搭建应用程序框架定义服务注册表接口使用ZooKeeper实现服务注册服务注册模式实现服务发现组件搭建应用程序框架实现服务发现服务发现优化方案服务发现模式参考简介先来回... 查看详情

轻量级rpc设计与实现第五版(最终版)(代码片段)

...。它拥有一个RPC常见的基本功能。主要功能和特点如下:利用Spring实现依赖注入与参数配置利用Netty来实现客户端与服务端的远程通信利用Hessian来实现序列化设置Zookeeper作为注册中心新设监控器,通过心跳机制来判断服务端与监... 查看详情

【zookeeper系列】基本介绍

...比如说,我公司目前很多项目都是Dubbo,都是需要基于ZK实现服务发现和注册。另外,ZK内其实也有很多优秀的算法和设计思想,熟悉ZK源码,也可以提升自己的“内功”。如何快速入门Zookeeper呢?最简单的方式就是直接看Zookeeper... 查看详情

springcloud之整合zk作为注册中心

...心的 Zookeeper简介Zookeeper是一个分布式协调工具,可以实现服务注册与发现、注册中心、消息中间件、分布式配置中心等。 公共pom:<parent> <groupId>org.springframework.boot</groupId> 查看详情

springcloudalibaba实战之nacos服务注册和发现

服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习SpringCloudAlibaba,首先要了解框架中的服务注册和发现组件——Nacos。一、SpringCloud服务注册和发现组件1.SpringCloudEurek... 查看详情

使用nacos作为分布式注册中心,实现服务注册与发现

...架构系统中,服务的数量较少,一般使用静态配置的方式实现服务信息的配置。而伴随着微服务架构的发展,服务实例的数量和网络地址都是动态变化的,此时对系统运维提出了巨大的挑战。面对成百上千的服务实例,为保障系... 查看详情

微服务--zookeeper

参考技术A1、dubbo如何实现服务注册中心2、dubbo是如何通过zookeeper实现服务注册中心的3、zookeeper在服务注册里面发挥着什么样的作用leader选举是一种paxos的经典实现。leader的选举过程:需要在集群中选举出一个leader和多个flower。... 查看详情

服务发现之三分天下

...内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。在微服务应用中,服务实例的数量和网络地址都是动态变化的,这对系统运维提出了巨大的挑战。因此,动态的服务注册与发现就显得尤为重要。服... 查看详情

springcloud系列之eureka实现服务注册与发现(代码片段)

...,那一定知道dubbo中服务注册和发现的功能是用zookeeper来实现的。Eureka目前是2.x版本,并且官 查看详情