微服务之服务中心—zookeeper
微服务中的服务注册与发现
传统的项目中,某个服务访问另一个服务,可以通过在配置文件中记录其他服务静态地址的
形式进行访问,通常这个配置文件也很少更新,模式如下图:

而在微服务中,每个功能可能都是一个独立的服务,如果通过传统的方式配置每个应用,配
置文件会变得很复杂多变,所以我们需要服务的注册与发现。

注册与发现的原理
服务的注册与发现是通过服务注册表实现的,应用端(每个服务)通过配置文件像服务注册
表提交自己的注册信息,当服务启动时,服务注册表会检索到该应用,并将该应用的网络地
址添加到表中,同样当服务终止,服务注册表会删除服务的地址。服务注册表是通过心跳机
制实现的。当其他应用访问已注册的服务时,负载均衡会通过服务注册表,实现服务的发
现。
什么是 Zookeeper
Zookeeper 是 Apache 公司为分布式应用设计的协调服务,起初是 Hadoop 的子项目,现在是
一个独立项目。ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和
性能高效、功能稳定的系统提供给用户。
Zookeeper 的特点
Zookeeper 作为服务注册与发现的解决方案,它有如下优点:
1. 它提供的简单 API
2. 支持多语言的客户端
3. 通过 Watcher 机制实现 Push 模型,服务注册信息的变更能够及时通知服务消费方。
Zookeeper 管理服务的方式依赖于之前提到的服务注册表;Zookeeper 相比于其他注册与发现
解决方案,多了角色,Zookeeper 有三个角色:Leader,Follower,Observer。
Zookeeper 中的服务在启动的时候会根据之前的启动状况推选一个 Leader 节点(由于必须推
选出来一个结果,所以 Zookeeper 集群的服务器数量通常是奇数),推选出 Leader 节点后,其
他节点成为 Follower 节点。Leader 节点是 Zookeeper 集群工作的核心,负责进行选举投票的
发起和决议,更新系统状态;Follower 节点是 Zookeeper 集群状态的跟随者,用于接收客户端
的请求并向客户端返回结果,在选举过程中参与投票。
Observer 可以接受客户端连接,将写请求转发给 Leader 节点,但 Observer 不参加投票过程,
只同步 Leader 节点的状态,Observer 的目的是为了扩展系统,提高读取速度。
微服务之服务中心—zookeeper的更多相关文章
- 微服务之服务中心—Eureka
Eureka 简介Eureka 是 Spring Cloud Netflix 的一个子模块,也是核心模块之一,用于云端服务发现,是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故 ...
- Spring cloud(2)B Eureka 注册微服务到服务中心
1.在provide上添加pom(必须加上web) 如果不加 启动后就会自己关闭 <dependency> <groupId>org.springframework.clo ...
- Spring Cloud微服务架构升级总结
↵ [编者的话]微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组 ...
- 使用spring boot和thrift、zookeeper建立微服务
Spring cloud适应于云端服务,也适用于企业信息化SOA建设.spring boot也是restful微服务开发的利器.但对于内网服务,即服务与服务之间的调用,spring并没有去刻意封装,也 ...
- 服务注册中心之ZooKeeper系列(二) 实现一个简单微服务之间调用的例子
上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1.集群A中的服务调用者如何发现集群B中的服务提供者呢? 2.集群A中的服 ...
- 关于dubbo+zookeeper微服务的一些认识记录
借鉴架构示意图: 实例介绍: 公司某项目架构 服务器A:nginx 服务器BC:tomcat1.tomcat2 服务器D:Dubbo+zookeeper 服务器EF:db1+zookeeper.db2 ...
- 微服务-注册与发现-zookeeper bydasn
目录 一.微服务注册的概述 二.zookeeper2.1 zookeeper安装启动2.2 zookeeper集群搭建2.3 zkcli操作 一.微服务注册概述 在微服务中,有这么一个东西叫服务注册表 ...
- springboot+dubbo+zookeeper微服务实践demo
微服务化越来越火,实际上是应互联网时代而生的,微服务化带来的不仅是性能上的提升,更带来了研发组织的更加便利,协作更加轻松,团队效能更高. 当然不能为了技术而技术,我们需要切合实际的对业务进行划分,降低 ...
- 【12】JMicro微服务-Zookeeper
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到11小节 1. CuratorFramework支持 JMicro目前基于Zookeeper实现统 ...
随机推荐
- LeetCode算法题-Quad Tree Intersection(Java实现)
这是悦乐书的第260次更新,第273篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第127题(顺位题号是558).四叉树是树数据,其中每个内部节点恰好有四个子节点:top ...
- ZooKeeper的安装与部署
本文讲述如何安装和部署ZooKeeper. 一.系统要求 ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境. 表1:ZooKeep ...
- 解决Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/
https://blog.csdn.net/quanqxj/article/details/79479943
- isPrototypeOf、instanceof、hasOwnProperty函数介绍
isPrototypeOf 作用:检测一个对象是否是另一个对象的原型.或者说一个对象是否被包含在另一个对象的原型链中 var p = {x:1};//定义一个原型对象 var o = Object.c ...
- eclipse 创建springboot项目
eclipse创建springboot项目的三种方法: 引自:https://blog.csdn.net/mousede/article/details/81285693
- Re:Exgcd解二元不定方程
模拟又炸了,我死亡 $exgcd$(扩展欧几里德算法)用于求$ax+by=gcd(a,b)$中$x,y$的一组解,它有很多应用,比如解二元不定方程.求逆元等等,这里详细讲解一下$exgcd$的原理. ...
- xml转对象,对象转xml工具类
package com.dq.schooldomain.utils; import com.thoughtworks.xstream.XStream; import com.thoughtworks. ...
- CI/CD持续集成/持续部署 敏捷开发
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...
- 【翻译】IdentityServer4:基于资源的配置
这篇文章基于https://leastprivilege.com/2016/12/01/new-in-identityserver4-resource-based-configuration/进行翻译 ...
- Flask--路由, 配置, 蓝图
一 . 双重装饰器重名的解决办法 # 我们都知道flask中的@app.route就是一层装饰器, 当我们需要在给视图函数加装饰器的时候就两层装饰器,这里介绍一下加装饰器的先后顺序,以及遇到的问题. ...