从 0 开始学微服务
胡忠想
微博技术专家
64643 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

阿忠伯的特别放送 | 答疑解惑02

解决方案:服务消费者自身维护可用服务节点列表,异步探测不可用节点恢复
目的:解决注册中心可用服务节点列表不准确的问题
解决方案:设置上限,避免大量节点信息变更
目的:避免大量服务提供者节点信息变更
解决方案:限制返回最新服务提供者节点列表信息的服务消费者数量
目的:防止网络频繁抖动导致注册中心带宽占满
例子:发博、评论、赞请求
适用场景:用户写请求
例子:微博用户的Feed API请求
适用场景:用户读请求
分享给朋友
留言区讨论
含义:选择平均响应时间最快的节点,降低调用权重以减少长尾请求
缺陷:导致服务端节点请求分布不均
含义:选择与客户端保持连接数最少的服务端节点
静态注册中心机制
服务节点摘除保护机制
心跳开关保护机制
基于MQ消息队列通信
基于RPC通信
学习与讨论
自适应最优选择算法
最少活跃连接算法
注册中心问题及解决方案
微服务架构

该思维导图由 AI 生成,仅供参考

你好,我是胡忠想。今天我继续来给同学们做答疑,第二期答疑主要涉及微服务架构、注册中心和负载均衡算法,需要一定的基础,如果对这些内容不了解,可以先返回专栏第 14 期第 17 期第 18 期复习一下。
专栏里我主要讲的是基于 RPC 通信的微服务架构,除此之外还有一种微服务架构是基于 MQ 消息队列通信的,下面我就从这两种架构不同的适用场景来给你讲讲它们的区别。
基于 RPC 通信的微服务架构,其特点是一个服务依赖于其他服务返回的结果,只有依赖服务执行成功并返回后,这个服务才算调用成功。这种架构适用于用户请求是读请求的情况,就像下图所描述的那样,比如微博用户的一次 Feed API 请求,会调用 Feed RPC 获取关注人微博,调用 Card RPC 获取微博中的视频、文章等多媒体卡片信息,还会调用 User RPC 获取关注人的昵称和粉丝数等个人详细信息,只有在这些信息都获取成功后,这次用户的 Feed API 请求才算调用成功。
而基于 MQ 消息队列通信的架构,其特点是服务之间的交互是通过消息发布与订阅的方式来完成的,一个服务往 MQ 消息队列发布消息,其他服务从 MQ 消息队列订阅消息并处理,发布消息的服务并不等待订阅消息服务处理的结果,而是直接返回调用成功。这种架构适用于用户请求是写请求的情况,就像下图所描述的那样,比如用户的写请求,无论是发博、评论还是赞都会首先调用 Feed API,然后 Feed API 将用户的写请求消息发布到 MQ 中,然后就返回给用户请求成功。如果是发博请求,发博服务就会从 MQ 中订阅到这条消息,然后更新用户发博列表的缓存和数据库;如果是评论请求,评论服务就会从 MQ 中订阅到这条消息,然后更新用户发出评论的缓存和数据库,以及评论对象收到评论的缓存和数据库;如果是赞请求,赞服务就会从 MQ 中订阅到这条消息,然后更新用户发出赞的缓存和数据库,以及赞对象收到的赞的缓存和数据库。这样设计的话,就把写请求的返回与具体执行请求的服务进行解耦,给用户的体验是写请求已经执行成功,不需要等待具体业务逻辑执行完成。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了微服务架构中基于RPC通信和基于MQ消息队列通信的不同适用场景,以及在使用注册中心时遇到的问题和解决方案。作者指出,基于RPC通信适用于用户读请求,而基于MQ消息队列通信适用于用户写请求。此外,文章还详细介绍了注册中心的问题,包括心跳开关保护机制、服务节点摘除保护机制和静态注册中心机制,并提出了相应的解决方案。另外,还介绍了最少活跃连接算法和自适应最优选择算法的原理和应用场景。总的来说,本文内容涵盖了微服务架构的通信方式、注册中心的问题及解决方案,以及负载均衡算法的应用,对于想要深入了解微服务架构和相关技术的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • 0xTang
    Rpc同步,mq异步,使用场景不一样。
    2020-03-29
    4
  • 老师你好,对于MQ的架构方案有一些疑问。 以您说的“如果是赞请求,赞服务就会从 MQ 中订阅到这条消息,然后更新用户发出赞的缓存和数据库,以及赞对象收到的赞的缓存和数据库”为例,如果是这种异步的方式,当用户在点赞的时候,恰巧碰到作者删除了文章。用户认为点赞成功(发送完请求就显示成功),但其实"点赞服务"是执行失败的。对于写请求引入MQ的方案又会带来补偿、回滚的问题,该如何权衡? 实际方案中,对于写请求,采用接口同步调用是否真的会带来很大的性能影响。
    2019-03-01
    1
    3
  • Jarvis
    最后一个问题,最少连接算法里面,客户端是只根据自己和服务端的连接数来算的吧?不需要知道服务端同所有客户端的连接数
    2019-09-14
    1
    2
  • 惘 闻
    所以在有节点需要上下线时,服务消费者仍然能够拿到最新的服务提供者节点列表信息,只不过这个节点上下线的操作,一般是由开发或者运维人员人工操作,而不是像动态注册中心那样,可以通过心跳机制自动操作。 文中这最后一句话代表什么含义呀,难道通过心跳机制导致的注册中心节点上下线,服务消费者就拿不到最新列表了吗? 应该和手工操作一样都可以拿到吧.. 那为什么加个转折..看的我好郁闷
    2021-01-29
    1
  • arebya
    自适应最优选择算法就是所谓的WeightedResponseTimeRule
    2018-12-26
    1
  • 小杨
    这篇评论这么少
    2022-10-22归属地:北京
  • 信信
    请求量分布不匀,会引起长尾效应?耗时分布不匀才会引起长尾效应啊。。。 请求分布在上一段描述是由连接数决定的,是为了平衡响应时间吧?
    2020-06-07
  • 嗯,赞👍
    2019-06-16
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部