《微服务架构核心20讲》学习笔记

摘要:
这是极客时代“微服务架构核心20讲座”课程的学习笔记。为什么要在微服务中引入配置中心?第15课微服务框架中应该考虑哪些治理链接?考虑以下问题:Dubbo如何将这些功能集成到框架中?第16课微服务监控系统层次结构和监控架构?第17课如何选择微服务的呼叫链监控?第18课微服务的容错和当前限制如何工作降级第19课Docker容器部署技术和连续交付管道环境一致性问题图像部署问题第20课容器集群调度和基于容器的发布

本文是极客时间《微服务架构核心20讲》课程的学习笔记。

这个视频作者架构师杨波的下面这篇文章也很不错,喜欢的也可一并学习下。

微服务架构技术栈选型手册 https://www.infoq.cn/article/micro-service-technology-stack

第1讲 什么是微服务架构

Martin flower在博文中给出的微服务的特点如下:

  • 一组小的服务

  • 独立的进程

  • 轻量级部署

  • 基于业务能力(用户服务、登录服务、商品服务)

  • 独立部署(每个团队维护自己的服务,团队之间不需要协调)

  • 无集中式管理

Netflix前架构师给出的微服务的定义:

Loosely coupled(松散耦合,服务之间非强依赖)

Service Oriented architecture(本质上还是SOA)

with bounded context(服务之间有边界,可独立演化)

第2讲 微服务的利弊

讲了微服务的利和弊

微服务的利

  • 强模块化边界

  • 可独立部署

  • 技术多样性

微服务的弊

  • 分布式复杂性(相对于单体应用,现在,细分成很多服务,开发人员无法理解整个系统是如何工作的。)

  • 最终一致性

  • 运维复杂性

  • 测试复杂性(对于单体应用,直接测试整个系统功能就可以了;微服务后,各个系统分散在各个团队,需要多个团队联调做集成测试。)

(我自己的理解:

关于微服务的利与弊,其实就是把一个系统细分为多个服务后,系统可看做整体,每个微服务可看做部分。好处是容易把控每个微服务自己,各个团队负责自己的服务就好了,坏处就是对系统整体的把握上会出现一些不便,比如对系统整理的理解、对系统的测试等)

思考以下问题:

运维团队,面对微服务的时候,应该采用什么样的手段来应对运维复杂性?

第3讲 康威法则

康威法则:系统的架构等价于组织的架构。

(我自己的理解就是:

如果系统是单体应用,那么应该是一个团队负责。

如果系统微服务化以后,比如分为服务A,B,C,那么组织架构上,也应当划分为A,B,C三个团队,每个团队可独立迭代。

)

思考以下问题:

作为架构师, 为什么不仅仅要做技术架构,也要了解组织架构?

第4讲 企业应该什么时候引入微服务

《微服务架构核心20讲》学习笔记第1张

单体优先原则:不宜过早引入微服务,因为系统初期对系统的未来发展无法预知,过早引入微服务风险较高。

(我自己的理解:

不要在系统初期直接上微服务架构,而是在系统演变过程中逐渐引入)

抛出的问题:

架构是设计出来的还是演进出来的?

第5讲 什么样的组织结构更适合微服务

传统的组织架构:

一个产品需要产品团队、用户体验团队、研发专家团队、测试专家团队、DBA专家团队、运维专家团队等。

微服务组织架构:

每个微服务团队end-end ownership,从开发到测试到运维等,统统自己负责,形成闭环

Archite--->Design--->Develo--->Reivew--->Test--->Deploy--->Run--->Support

思考以下问题:

Netflix前总架构师说了一句话,微服务架构本质上是组织架构的重组,你如何理解这句话?

第6讲 如何理解阿里巴巴提出的微服务中台战略

《微服务架构核心20讲》学习笔记第2张

大中台,小前台。 强化“技术中台+业务中台”,中台肥沃,在这上面的业务生态才会更繁荣。业务应用更小更灵活,迭代能力变强,按照市场变化不断演化新应用出来。

思考以下问题:

大中台,小前台战略。每个架构师怎样在每个公司内部实践。

第7讲 如何给出一个清晰简洁的服务分层方式

《微服务架构核心20讲》学习笔记第3张

基础服务:也叫核心领域服务、公共服务、中间层服务

聚合服务:也叫适配服务、边界服务

第8讲 微服务总体技术架构体系是怎样设计的?

《微服务架构核心20讲》学习笔记第4张

第9讲 微服务最经典的三种服务发现机制

《微服务架构核心20讲》学习笔记第5张

第1种:传统基于LB的模式

使用硬件的F5负载均衡器、软件的Nginx负载均衡器。

不足:1)服务配置、域名配置等需要运维介入 2)有一个集中LB,可能单点 

《微服务架构核心20讲》学习笔记第6张

第2种:进程LB模式

不足:在多语言的环境当中,必须为每一个消费者开发响应的客户端,升级成本、都语言支持成本比较高

《微服务架构核心20讲》学习笔记第7张

第3种:主机独立LB模式

将LB已独立进程的方式部署在主机上,既不是集中式LB,也不是进程内LB。

当调用的时候,主机上的LB会负责负载均衡。

优点:1)没有集中式LB的单点问题 2)对于调用方来说,多语言可以灵活地接入,无需为每种语言开发相应客服端

缺点:运维成本会比较高,因为在每台主机上要部署LB进程

(这种其实就是在每台主机上部署了个agent)

思考以下问题:

Service Mesh服务网格核心的点也是服务发现,那它使用了上面哪一种服务发现机制

第10讲 微服务API服务网关(一)原理

《微服务架构核心20讲》学习笔记第8张

微服务中为什么要引入网关这个组件?

内部有许多微服务,由各自平台来维护,外部访问的时候需屏蔽细节,像是一个统一的服务。

为什么网关前面引入一个负载均衡器?
在接入网关时有一个负载均衡器,其作用是让网关是无状态的,这样的话,网关就可以部署很多,避免网关单点。


网关的职责:反向路由(将外面请求转换为内部ms的调用)、安全认证、限流熔断、日志监控(流量访问的日志)

第11讲 微服务API服务网关(二)开源网关Zuul

《微服务架构核心20讲》学习笔记第9张

思考以下问题:

假如要设计一个防爬虫的功能,应该放在Filter的哪个阶段?Pre routing or Routing or Post Routing?

第12讲 跟Netflix学习微服务路由发现体系

《微服务架构核心20讲》学习笔记第10张

上面图画错了,【外部nginx】应为【外部LB】,【内部nginx】应为【内部LB】

服务注册中心:Eureka开源组件

网关层:Zuul开源组件

思考以下问题:

市面上有很多开源的组件,根据你的经验,参考以上架构,怎么来设计微服务架构服务发现体系?

第13讲 集中式配置中心的作用和原理是什么?

《微服务架构核心20讲》学习笔记第11张

微服务中为什么要引入配置中心?它的作用是什么?

配置中心的配置如何下发到服务上?

1)push的方式

优点:可以实时更新。当配置修改了,就推送。

缺点:由于网络问题,可能导致没有推送到。

2)pull的方式

优点:一定能拉到。即使网络出现了问题,下次也一定能拉到,保证获取到最新的配置

缺点:非实时

3)push和pull相结合的方式

Spring cloud config、百度的difconf、携程的Apollo

《微服务架构核心20讲》学习笔记第12张

本地文件缓存的作用?高可用:即使Apollo配置中心挂了,服务重启时,配置不会丢失。

配置中心配置下发采用push和pull相结合的方式。

第14讲 微服务通讯方式 RPC vs REST

《微服务架构核心20讲》学习笔记第13张

耦合性:

RPC是强耦合,采用定制的消息格式,服务端和客户端之间必须以特定的消息格式进行通讯。

第15讲 微服务框架需要考虑哪些治理环节

《微服务架构核心20讲》学习笔记第14张

思考以下问题:

Dubbo是如何将这些功能融合在框架中的

第16讲 微服务监控系统分层和监控架构

《微服务架构核心20讲》学习笔记第15张

《微服务架构核心20讲》学习笔记第16张

第17讲 微服务的调用链监控该如何选型

《微服务架构核心20讲》学习笔记第17张

第18讲 微服务的容错限流是如何工作的

《微服务架构核心20讲》学习笔记第18张

熔断、隔离

限流、降级

第19讲 Docker容器部署技术 & 持续交付流水线

《微服务架构核心20讲》学习笔记第19张

环境一致性问题

镜像部署问题

第20讲 容器集群调度和基于容器的发布

《微服务架构核心20讲》学习笔记第20张

免责声明:文章转载自《《微服务架构核心20讲》学习笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇node redis操作sysctl内核参数解析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

聊聊云原生和微服务架构

之前写过两篇关于微服务架构的文章,发现阅读量挺高的,所以打算再聊聊云原生和微服务架构,过去的文章如下: 扩展阅读: 一文了解基于 Netflix OSS 的微服务架构 什么是微服务?为什么要用微服务 本篇分享主要围绕以下 4 个主题进行: 什么是云原生 ? 为什么要用云原生架构 ? 微服务的概念 微服务的技术选型 什么是云原生 ? 云计算和云原生...

PaaS服务之路漫谈(三)

此文已由作者尧飘海授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 Monolithic架构在产品访问量很大的情况下,有可能常会导致整个产品迭代或升级过程不能按预期进行,或者上线风险的不确定性导致上线时常常信心十足。那么MSA(微服务架构)的模式能在很程度上避免Monolithic架构在规模服务应用下的一些缺陷。 微服务架构这个...

从一层到多层架构的学习笔记

为什么要分层 支持技术复杂性与业务复杂性分离 分层需要明确每层的职责,单一职责,做到关注点分离 需要通过分层来隔离不同的关注点,以此应对不同需求的变化 在项目中约定每层的规范,有利于代码的规范,更好的阅读性 在代码实现中,可以减少耦合,避免一些重复,避免一些臃肿 学习三层的过程 一层架构,二层架构 1.最开始写代码,直接在Controller上写业务逻...

大型Java Web项目的架构和部署问题

一位ID是jackson1225的网友在javaeye询问了一个大型Web系统的架构和部署选型问题,希望能提高现有的基于Java的Web应用的服务能力。由于架构模式和部署调优一直是Java社区的热门话题,这个问题引发了很多热心网友的讨论,其中一些意见对其它大型Web项目也有很好的指导意义。在讨论之初jackson1225这样描述了当前的应用的架构和部署方案...

转: 从单体应用 -> SOA--> 微服务 ,服务治理 [熔断,限流,降级,服务恢复,服务容错,监控等等]---> RPC ---> 下一代技术[Service Mesh]

单体式应用程序 与微服务相对的另一个概念是传统的「单体式应用程序」( Monolithic application ),单体式应用内部包含了所有需要的服务。而且各个服务功能模块有很强的耦合性,也就是相互依赖彼此,很难拆分和扩容。 说在做的各位都写过单体程序,大家都没意见吧?给大家举个栗子,刚开始写代码你写的helloworld程序就是单体程序,一个程序包含...

RISC-V与DSA计算机架构

RISC-V与DSA计算机架构 相信所有和计算机体系结构打过交道的朋友们都看过David Patterson与John Hennessy的煌煌巨作,《计算机体系架构:量化研究方法》。两位在计算机架构领域鼎鼎大名的教授,一个来自加州大学伯克利分校,另一个来自斯坦福。 首先上场的是David Patterson,为我们带来了关于指令集架构(ISA)的回顾以及R...