周志明的软件架构课
周志明
博士,远光软件研究院院长,《深入理解 Java 虚拟机》《凤凰架构》等书作者
54203 人已学习
免费领取
课程目录
已完结/共 74 讲
架构师的视角 (24讲)
周志明的软件架构课
15
15
1.0x
00:00/00:00
登录|注册

45 | 模块导学:从微服务到云原生

你好,我是周志明。
上一个模块,我们以“分布式的基石”为主题,了解并学习了微服务中的关键技术问题与解决方案。实际上,解决这些技术问题,原本就是我们架构师和程序员的本职工作。
而从今天开始,我们就进入了一个全新的模块,从微服务走到了云原生。在这个模块里,我会围绕“不可变基础设施”的相关话题,以容器、编排系统和服务网格的发展为主线,给你介绍虚拟化容器与服务网格是如何模糊掉软件与硬件之间的界限,如何在基础设施与通讯层面上帮助微服务隐藏复杂性,以此解决原本只能由程序员通过软件编程来解决的分布式问题。

什么是不可变基础设施?

“不可变基础设施”这个概念由来已久。2012 年,马丁 · 福勒(Martin Fowler)设想的“凤凰服务器”与 2013 年查德 · 福勒(Chad Fowler)正式提出的“不可变基础设施”,都阐明了基础设施不变性给我们带来的好处。
而在云原生基金会定义的“云原生”概念中,“不可变基础设施”提升到了与微服务平级的重要程度。此时,它的内涵已经不再局限于只是方便运维、程序升级和部署的手段,而是升华为了向应用代码隐藏分布式架构复杂度、让分布式架构得以成为一种能够普遍推广的普适架构风格的必要前提。
云原生定义(Cloud Native Definition)
 
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
 
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
 
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
 
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了从微服务到云原生的演进过程,重点讨论了不可变基础设施的概念以及云原生技术的定义。作者指出,不可变基础设施已经不再局限于方便运维、程序升级和部署的手段,而是升华为了向应用代码隐藏分布式架构复杂度、让分布式架构得以成为一种能够普遍推广的普适架构风格的必要前提。云原生技术包括容器、服务网格、微服务、不可变基础设施和声明式API,能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。文章还提到了作者选择从容器化技术开始讲起,以便将抽象的云原生架构思想落到实处。整体而言,本文从微服务到云原生的演进过程,深入探讨了不可变基础设施的重要性以及云原生技术的优势,为读者提供了全面的技术视角和理念。

该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • neohope
    有几个疑问,希望老师帮忙解答一下: 1,不同发行版的docker容器,尤其是glibc这些底层库版本不一致的情况下,可以在同一个宿主下运行,是因为glibc这些库与系统内核提供的ABI一直都保持不变吗?万一内核升级,有ABI变动了,docker是如何处理的呢? 2,现在虚拟机,都支持将某个虚拟机的窗体,直接投射到宿主机上,让宿主机像操作本地应用来操作虚拟机的应用,这个算那一层的虚拟化呢?也是通过ABI模拟来实现的吗? 3,在windows的vmware或virtualbox运行macos的虚拟机超级慢,但运行ubuntu就还蛮快的,是因为mac到win的ABI很难模拟吗? 感谢!

    作者回复: 关于1:处理办法是镜像自己带着基础库,事实上大多数发行版docker镜像都带着glibc,alpine用的则是更轻量的musl。镜像封装的应用,就只需保证兼容自带的glibc/musl即可。 关于2:说的是vmware unity mode这类功能么?具体如何实现的我没有研究过,无责任猜测只是vmware tool这样的工具提供的屏幕映射。但可以肯定的是,并不影响虚拟化层次,即还是硬件抽象层虚拟化。 关于3:“超级缓慢”主要是GUI慢,这个与显示方式和驱动都有关。如果你在SSH到虚拟的ubuntu和macos上,跑个console下的跑分软件的话,得到的分数相差并不大。

    2021-04-14
    3
    5
  • 李艳超_Harry
    Google gvisor属于哪种虚拟技术呢

    作者回复: gvisor、kata\clear container这些本质上是轻量级虚拟机了。 属于哪种,就取决于后端的虚拟机实现形式。 譬如kata,后面是可以用Qemu、Firecracker等来驱动。

    2021-03-10
  • zhanyd
    对微处理器而言有两种指令集。第一种是复杂指令集(Complex Instruction Set Computer,CISC),拥有许多不同的指令,比较复杂的指令集能够更加容易完成工作,存储器及缓存的效率较高,以及较为简单的代码。x86以及x86-64架构就属于复杂指令集。 在1970年代,许多机构,像是IBM,发现CISC过于复杂,而且有许多指令很少被用到,结果就发明了精简指令集(Reduced Instruction Set Computer,RISC),它所包含的指令就比较少。精简的指令集可以提供比较高的速度,使处理器的尺寸缩小,以及较少的电力损耗。 ARM架构,就是一个精简指令集(RISC)处理器架构家族,广泛地应用在许多嵌入式系统设计中。由于其节能的特点,ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。我们先现在用的手机CPU,基本上都是采用ARM架构。 ISA兼容,就是指CISC指令集和RISC指令集之间的兼容。
    2021-03-08
    2
    20
  • ant
    因为之前对云原生技术知之甚少。工作和学习中很少用到容器相关内容,即便使用也未曾进行深入了解学到这里的时候已经感觉很吃力,甚至像看天书了,对于专有名词和技术无法在过往经历中行成映射感觉看了和没看一样
    2022-03-03
    2
  • 西门吹牛
    关于 jvm,如果没有 JIT,是不是可以理解为完全软虚拟技术?
    2022-08-03归属地:江苏
  • return
    请教老师:模糊掉软件与硬件之间的 界限, 怎么理解?
    2022-04-12
    1
  • 华仔
    老师,我觉得硬件虚拟化(vmware)和操作系统虚拟化(docker等)属于一类,这些都是致力于通过虚拟化实现隔离,这也是不可变基础设施实施的基础;指令集虚拟化、语言虚拟化则不同,致力于兼容的目标;运行库虚拟化中例如WSL2,同样是基于虚拟机的方式隔离出了一个操作系统,但是目的似乎是为了兼容(开发者的方便),所以可以分成这两类或者三类,而第一类是 这一系列的主题。
    2021-09-02
  • 海滨
    是不是虚拟化的层次越高清,相对而言性能就越好?
    2021-06-21
  • 李二木
    虚拟化技分类 1)指令集虚拟化 2)硬件抽象层虚拟化 3)操作系统层虚拟化(容器) 4)运行库虚拟化 5)语言层虚拟化
    2021-03-20
  • 加油123
    容器几乎渗透到生活和生产各个环节,
    2021-03-09
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部