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

03 | 初探微服务架构

服务治理
服务追踪
服务监控
服务框架
注册中心
服务描述
微服务架构基本组件

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

上一期我给你讲了什么时候应该进行服务化,以及服务化拆分的两种方式即横向拆分和纵向拆分,最后还提到了引入微服务架构需要解决的问题。
我想你一定很好奇微服务架构到底是什么样子的,接下来我们一起走进微服务架构,来看看它的各个组成部分
下面这张图是我根据自己的经验,绘制的微服务架构的模块图,在具体介绍之前先来看下一次正常的服务调用的流程。
首先服务提供者(就是提供服务的一方)按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布。
接下来服务消费者(就是调用服务的一方)请求注册中心,查询所需要调用服务的地址,然后以约定的通信协议向服务提供者发起请求,得到请求结果后再按照约定的协议解析结果。
而且在服务的调用过程中,服务的请求耗时、调用量以及成功率等指标都会被记录下来用作监控,调用经过的链路信息会被记录下来,用于故障定位和问题追踪。在这期间,如果调用失败,可以通过重试等服务治理手段来保证成功率。
总结一下,微服务架构下,服务调用主要依赖下面几个基本组件:
服务描述
注册中心
服务框架
服务监控
服务追踪
服务治理
接下来,我来为你一一介绍这些组件。

服务描述

服务调用首先要解决的问题就是服务如何对外描述。比如,你对外提供了一个服务,那么这个服务的服务名叫什么?调用这个服务需要提供哪些信息?调用这个服务返回的结果是什么格式的?该如何解析?这些就是服务描述要解决的问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

微服务架构是当下流行的架构设计模式之一,它包含了多个基本组成部分,每个组件都扮演着关键的角色。首先,服务描述解决了服务如何对外描述的问题,常用的方式包括RESTful API、XML配置和IDL文件。其次,注册中心负责服务的发布和订阅,使得服务提供者和消费者能够相互发现和通信。服务框架则解决了服务通信协议、数据传输方式和数据压缩格式等问题。服务监控和服务追踪则用于监控服务调用情况和记录服务调用经过的链路,以便进行故障定位和问题追踪。最后,服务治理通过一系列手段保证服务调用在各种意外情况下仍能正常进行,包括处理单机故障、单IDC故障和依赖服务不可用等场景。这些基本组件共同构成了微服务架构,对于团队引入微服务架构前,必须掌握这些基本组件的原理并具备相应的开发能力。在实现方式上,可以选择开源方案或自行研发,但必须深入了解每个组件的工作原理并能进行二次开发。文章还提出了思考题,引导读者思考微服务架构下的基本组件所解决的问题在单体应用时是否存在,以及解决方案是否相同。整体而言,本文通过简洁明了的方式介绍了微服务架构的基本组件及其重要性,为读者提供了全面的概览。

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

全部留言(48)

  • 最新
  • 精选
  • oddrock
    微服务架构下要解决的服务描述、服务注册与发现、服务框架、服务监控、服务跟踪、服务治理其实在soa下基本都同样存在。 soa下服务描述用wsdl,服务注册与发现用uddl,服务框架、服务监控和服务跟踪、治理基本都依赖esb,治理还要部分依赖负载均衡。 同样情况在单体简单的多,服务描述就是api,服务注册与发现就是引用jar,监控、跟踪、治理在单体情况下基本不存在,最多用jvm监控工具来监控 我的理解如上,还请老师指正

    作者回复: 看来对soa很了解

    2018-08-28
    68
  • 5ispy
    阿忠老师终于提到自动扩容,后面会细讲吗?这是不是支持8对明星并发出轨的关键🤪

    作者回复: 后面有一节会讲混合云下的微服务架构

    2018-08-28
    17
  • 东风微鸣
    我们用spring cloud微服务框架。zipkin做链路监控,有办法链路到jdbc 数据库层么?

    作者回复: zipkin不支持,skywalking可以

    2018-11-13
    9
  • 贾洵
    既然设置一个跟踪ID,为什么不设置一个uuid做为调用唯一ID。这样既可以全程跟踪,又节省寻找串联请求ID的时间?

    作者回复: uuid没法区分调用的层级关系

    2018-11-05
    5
  • Halo_浅色调
    为啥要两个requestId,我们以前就只用了一个来进行链路追踪,只用一个有啥缺陷吗

    作者回复: 一个requestid,一个是spanid,这里是为了描述原理抽象表达这个意思

    2018-08-29
    4
  • greatcl
    如果服务提供者继续请求其他服务,会在本地再生成一个自己的requestid,然后把这两个requestid都当作请求参数继续往下传递。 ========= 老师你好,想问下为什么要两个requestid都往下传递呢,只用第一个requestid不是就可以追踪到了吗?

    作者回复: 这里没有详细描述 其实是spanid 这里是抽象描述原理

    2018-08-28
    2
  • eason2017
    在复杂调用中,应该还有熔断,这样避免底层服务拖死自身服务,对吧~

    作者回复: 嗯,熔断是一种非常有效的服务治理手段

    2018-08-28
    2
  • 技术修行者
    感谢作者的讲解。 我理解微服务架构其实也是分布式架构的一种,对于分体式架构来说,有一个很重要的部分就是日志管理,尤其是在服务器扩展到100台以上时,有效的日志管理对于高效运维来说至关重要。那么日志管理会涵盖在服务跟踪里面吗?

    作者回复: 日志管理对于分布式系统都存在,服务跟踪就需要收集trace信息,算是日志的一种吧

    2018-08-29
    1
  • 蚂蚁内推+v
    idc 是什么 方便老师解释下吗

    作者回复: 数据中心

    2018-12-13
    2
  • HF
    您好 第一幅图中的治理中心的作用是什么 感觉很突兀 是用来管理服务提供者和消费者的吗 能不能详细介绍一下

    作者回复: 后面服务治理一节会专门讲解

    2018-08-28
收起评论
显示
设置
留言
48
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部