微服务中的服务注册与发现

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

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

注册与发现的原理
服务的注册与发现是通过服务注册表实现的,应用端(每个服务)通过配置文件像服务注册
表提交自己的注册信息,当服务启动时,服务注册表会检索到该应用,并将该应用的网络地
址添加到表中,同样当服务终止,服务注册表会删除服务的地址。服务注册表是通过心跳机
制实现的。当其他应用访问已注册的服务时,负载均衡会通过服务注册表,实现服务的发
现。

什么是 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的更多相关文章

  1. 微服务之服务中心—Eureka

    Eureka 简介Eureka 是 Spring Cloud Netflix 的一个子模块,也是核心模块之一,用于云端服务发现,是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故 ...

  2. Spring cloud(2)B Eureka 注册微服务到服务中心

    1.在provide上添加pom(必须加上web)   如果不加 启动后就会自己关闭 <dependency> <groupId>org.springframework.clo ...

  3. Spring Cloud微服务架构升级总结

    ↵ [编者的话]微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组 ...

  4. 使用spring boot和thrift、zookeeper建立微服务

    Spring cloud适应于云端服务,也适用于企业信息化SOA建设.spring boot也是restful微服务开发的利器.但对于内网服务,即服务与服务之间的调用,spring并没有去刻意封装,也 ...

  5. 服务注册中心之ZooKeeper系列(二) 实现一个简单微服务之间调用的例子

    上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1.集群A中的服务调用者如何发现集群B中的服务提供者呢? 2.集群A中的服 ...

  6. 关于dubbo+zookeeper微服务的一些认识记录

    借鉴架构示意图: 实例介绍: 公司某项目架构 服务器A:nginx 服务器BC:tomcat1.tomcat2 服务器D:Dubbo+zookeeper 服务器EF:db1+zookeeper.db2 ...

  7. 微服务-注册与发现-zookeeper bydasn

    目录 一.微服务注册的概述 二.zookeeper2.1 zookeeper安装启动2.2 zookeeper集群搭建2.3 zkcli操作 一.微服务注册概述 在微服务中,有这么一个东西叫服务注册表 ...

  8. springboot+dubbo+zookeeper微服务实践demo

    微服务化越来越火,实际上是应互联网时代而生的,微服务化带来的不仅是性能上的提升,更带来了研发组织的更加便利,协作更加轻松,团队效能更高. 当然不能为了技术而技术,我们需要切合实际的对业务进行划分,降低 ...

  9. 【12】JMicro微服务-Zookeeper

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到11小节 1. CuratorFramework支持 JMicro目前基于Zookeeper实现统 ...

随机推荐

  1. asp.net --> 初识WCF

    对于刚开始接触wcf的同志,可以有效的理解wcf的使用场景. 引用该文章(点击查看),简单的介绍wcf的使用.另一篇文章(点击查看),和上述文章内容差不多.

  2. USB初学(一)---USB-HID的初步认识【转】

    HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容. USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备.那什么是设 ...

  3. 虚拟机 与 host主机,无法ping通的问题

    这个写的比较简单,先做以下记录 centos虚拟机安装到别的电脑上,因为linux中的程序需要向外有网络互通,所以需要重新设置ip 通过 ifconfig eth4 192.168.0.20  bro ...

  4. 读写锁ReentrantReadWriteLock的使用

    package com.thread.test.Lock; import java.util.Random; import java.util.concurrent.locks.Lock; impor ...

  5. JS第一部分--ECMAScript5.0标准语法 (JS基础语法)

    一,调试语句 二,JS的引入方式 三,变量的使用 四,基本的数据类型 4.1,基本数据类型转换 4.2,字符串的常用方法 五,复杂数据类型 5.1,Array(数组)及常用方法 六,流程控制( 逻辑与 ...

  6. Ajax 与文件上传

    一 Ajax篇 1 ajax简介(Asynchronous Javascript And XML) 异步,Js,XML,即使用Javascript语言与服务器进行异步交互,传输的数据为xml(可扩展标 ...

  7. Git命令行管理代码、安装及使用

    出处:https://www.cnblogs.com/ximiaomiao/p/7140456.html Git安装和使用     目的:通过Git管理github托管项目代码 一.下载安装Git 1 ...

  8. Operation category READ is not supported in state standby

    Namenode 开启HA之后,由于zookeeper异常,出现脑裂现象 执行 $./hdfs haadmin -getServiceState nn1                         ...

  9. e297: write error in swap file

    磁盘空间不足: [root@ipservice fountain]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/dock ...

  10. SQL UCASE() 函数

    UCASE() 函数 UCASE 函数把字段的值转换为大写. SQL UCASE() 语法 SELECT UCASE(column_name) FROM table_name SQL UCASE() ...