从0开始学微服务
胡忠想
微博技术专家
立即订阅
16266 人已学习
课程目录
已完结 42 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 微服务,从放弃到入门
免费
模块一 入门微服务 (10讲)
01 | 到底什么是微服务?
02 | 从单体应用走向服务化
03 | 初探微服务架构
04 | 如何发布和引用服务?
05 | 如何注册和发现服务?
06 | 如何实现RPC远程服务调用?
07 | 如何监控微服务调用?
08 | 如何追踪微服务调用?
09 | 微服务治理的手段有哪些?
10 | Dubbo框架里的微服务组件
模块二 落地微服务 (14讲)
11 | 服务发布和引用的实践
12 | 如何将注册中心落地?
13 | 开源服务注册中心如何选型?
14 | 开源RPC框架如何选型?
15 | 如何搭建一个可靠的监控系统?
16 | 如何搭建一套适合你的服务追踪系统?
17 | 如何识别服务节点是否存活?
18 | 如何使用负载均衡算法?
19 | 如何使用服务路由?
20 | 服务端出现故障时该如何应对?
21 | 服务调用失败时有哪些处理手段?
22 | 如何管理服务配置?
23 | 如何搭建微服务治理平台?
24 | 微服务架构该如何落地?
模块三 进阶微服务 (8讲)
25 | 微服务为什么要容器化?
26 | 微服务容器化运维:镜像仓库和资源调度
27 | 微服务容器化运维:容器调度和服务编排
28 | 微服务容器化运维:微博容器运维平台DCP
29 | 微服务如何实现DevOps?
30 | 如何做好微服务容量规划?
31 | 微服务多机房部署实践
32 | 微服务混合云部署实践
模块四 展望微服务 (4讲)
33 | 下一代微服务架构Service Mesh
34 | Istio:Service Mesh的代表产品
35 | 微博Service Mesh实践之路(上)
36 | 微博Service Mesh实践之路(下)
阿忠伯的特别放送 (4讲)
阿忠伯的特别放送 | 答疑解惑01
阿忠伯的特别放送 | 答疑解惑02
微博技术解密(上) | 微博信息流是如何实现的?
微博技术解密(下)| 微博存储的那些事儿
结束语 (1讲)
结束语 | 微服务,从入门到精通
从0开始学微服务
登录|注册

12 | 如何将注册中心落地?

胡忠想 2018-09-18
专栏第 5 期我给你讲了服务注册和发现的原理,这里面的核心是服务提供者、服务消费者和注册中心这三个概念,以及它们之间的交互关系。你可以先回顾一下这几个关键的知识点,如果有不清楚的地方,建议你先返回第 5 期复习一下,再开始今天的学习。
掌握了服务注册和发现的原理之后,我们就需要考虑如何把注册中心落地实现。结合前面所讲的服务注册与发现的流程,在落地注册中心的过程中,我们需要解决一系列的问题,包括如何存储服务信息、如何注册节点、如何反注册、如何查询节点信息以及如何订阅服务变更等。这些问题你都知道如何解决吗?如果还没答案,没关系,下面我来给你一一讲解。

注册中心如何存储服务信息

注册中心既然是用来存储服务信息的,那么服务信息都包含哪些内容呢?
根据我的实践经验,服务信息除了包含节点信息(IP 和端口号)以外,还包含其他一些信息,比如请求失败时重试的次数、请求结果是否压缩等信息。因此服务信息通常用 JSON 字符串来存储,包含多个字段,每个字段代表不同的含义。
除此之外,服务一般会分成多个不同的分组,每个分组的目的不同。一般来说有下面几种分组方式。
核心与非核心,从业务的核心程度来分。
机房,从机房的维度来分。
线上环境与测试环境,从业务场景维度来区分。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学微服务》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(29)

  • 每天晒白牙
    老师,文中有”以前我们的业务中经常遇到这个问题,需要定时去清理注册中心中的“僵尸节点”。后来我们通过优化反注册逻辑,对于下线机器、节点销毁的场景,通过调用注册中心提供的批量反注册接口,一次调用就可以把该节点上提供的所有服务同时反注册掉,从而避免了“僵尸节点”的出现。”
    我这里有两个疑惑点:
    1.之前的方案是定时清理”僵尸节点”是通过什么方法呢? 简单的ping一下,看能否通?然后发现一个僵尸节点就删掉
    2.优化反注册接口,批量删除。老师能具体说下方案吗? 如果批量删除,会不会存在一个时间窗口,僵尸节点还在注册中心的情况?
    2018-09-18
    1
    19
  • 吴浩
    服务注册流程中注册节点有个问题想问下

    为什么查看注册的Cluster(服务的接口名)和Service(服务的的分组)是否存在,不存在就抛出异常

    这里为什么不是不存在就添加这个服务的接口名了,为什么是报错,第一次初始化是在哪进行的了
    2018-10-09
    8
  • 拉风一哥
    感觉讲的太抽象了,能不能结合具体的实例。你说的这些解决方案,也是抽象的方案,比如多注册中心要如何实现,实现的时候该注意什么问题?
    2019-03-24
    3
  • WL
    消费者订阅了服务的变更,当服务变更的时候,注册中心就可以把变更通知单消费者,那消费者为什么还需要定期去拉注册中心的数据呢?

    作者回复: 这里是为了讲述理论,实际实现时有两种方式,一种是zookeeper的推模式,一种是消费者定时拉去得模式

    2018-10-26
    2
  • Leon📷
    注册中心的信息怎么实现增量更新,是通过版本号的方式吗

    作者回复: 对

    2018-10-05
    2
  • yga
    对于现有的注册中心,比如euraka,对于文中提到的流程优化方案,需要如何操作?
    2018-09-18
    2
  • 少帅
    Eurka可以调整心跳时间来处理僵尸接点
    2018-09-18
    2
  • Saily
    Eureka就有僵尸节点的问题,一个服务下线后,消费者可能需要100多秒才能感知到
    2018-09-18
    2
  • 风之翼
    请问老师,一个企业内有多个服务注册中心有什么利弊,是否可以通过规范强制要求各个部门使用公共的注册中心,可能存在什么需要注意的问题?
    2018-10-15
    1
  • Usher✨
    大佬好,dubbo要怎么设置并行订阅
    2019-07-31
  • godtrue
    如果注册中心挂了,重启服务调用者用它存储的服务提供者信息,如果服务提供者也存在不可用的怎么弄?
    2019-06-14
  • LYy
    问题三和问题四产生的根源都是因为消费者直接感知提供者的节点信息引起的 只要消除这层复杂度 问题三和问题四就迎刃而解 解决办法就是引入负载均衡中间件:
    1 提供者只对消费者暴露唯一的访问地址(如浮动ip,内部域名)
    2 提供者的扩缩容只需要通过配置中心与负载均衡中间件交互,消费者不感知
    2019-05-26
  • 帽子丨影
    定时check sign一般间隔多久比较合理呢?
    2019-04-23
  • gongxt
    反注册,服务提供者什么时候去调用这个接口呢? 如果服务提供者这个时候自己崩溃了
    2019-03-19
  • 饭粒
    老师,请教下多注册中心这两点“对于服务消费者来说,要能够同时从多个注册中心订阅服务;对于服务提供者来说,要能够同时向多个注册中心注册服务。”这个在dubbo和motan有很好的支持吗?据我有限的spring cloud使用时间看,它好像不支持这个。
    2019-03-12
  • sliver_z
    能不能讲讲,如果一个实例挂啦,怎么去调用另外一个服务,而不是报错
    2018-11-27
  • pscj
    吴浩同学的疑问也是我想问的,最开始中心里一个服务都没有。注册的时候为什么service不存在,就抛异常了,难道不应该是保存?
    2018-11-16
  • 英宁
    注册了节点不要update_sign嚒?
    2018-11-15
  • 北风之神
    这里说的注册中心落地是自己实现注册中心的意思吗?像eureka、consul、etcd这些注册中心实现,直接用不就可以了,使用这些也需要考虑你这些问题吗?
    2018-10-23
  • 我的球
    服务提供者要保持长连接,发送心跳,是需要单独一个进程来维护的吗?谷歌了好多文章都没有提到,我是php,看了看dubbo的文档,有个容器的概念,但不是太懂jvm,tomcat的原理,所以不知道dubbo的启动流程?
    2018-10-15
收起评论
29
返回
顶部