From 09420883747446ef015cde58d36e455d1d18f2dc Mon Sep 17 00:00:00 2001 From: MY <715711877@qq.com> Date: Sun, 8 Nov 2020 14:38:58 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=E5=A2=9E=E5=8A=A0=20=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=9E=B6=E6=9E=84=E6=BC=94=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 1 + assets/202011813502.png | Bin 0 -> 23254 bytes assets/2020118135845.png | Bin 0 -> 17471 bytes assets/202011814010.png | Bin 0 -> 37548 bytes ...66\346\236\204\346\274\224\350\277\233.md" | 70 ++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 assets/202011813502.png create mode 100644 assets/2020118135845.png create mode 100644 assets/202011814010.png create mode 100644 "\350\275\257\344\273\266\345\267\245\347\250\213/\346\236\266\346\236\204/\346\234\215\345\212\241\346\236\266\346\236\204\346\274\224\350\277\233.md" diff --git a/SUMMARY.md b/SUMMARY.md index caa161894f..6d1af34412 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -107,6 +107,7 @@ - [软件架构](./软件工程/架构/软件架构.md) - [实现细节](./软件工程/架构/实现细节.md) - [网站架构演进](./软件工程/架构/网站架构演进.md) + - [服务架构演进](./软件工程/架构/服务架构演进.md) - [前后端分离](./软件工程/架构/前后端分离.md) - [前端工程化](./软件工程/架构/前端工程化.md) - [架构模式](./软件工程/架构模式/架构模式.md) diff --git a/assets/202011813502.png b/assets/202011813502.png new file mode 100644 index 0000000000000000000000000000000000000000..3f15f1e36c61e6c377fa500d2db0a3bc95785ecd GIT binary patch literal 23254 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⋙q{BW-=vw6&>9YH} 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 literal 0 HcmV?d00001 diff --git a/assets/202011814010.png b/assets/202011814010.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b1cddda220eadb89136fcee83d7f098d9f94b9 GIT binary patch literal 37548 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 QF#rGn07*qoM6N<$f?TN^ga7~l literal 0 HcmV?d00001 diff --git "a/\350\275\257\344\273\266\345\267\245\347\250\213/\346\236\266\346\236\204/\346\234\215\345\212\241\346\236\266\346\236\204\346\274\224\350\277\233.md" "b/\350\275\257\344\273\266\345\267\245\347\250\213/\346\236\266\346\236\204/\346\234\215\345\212\241\346\236\266\346\236\204\346\274\224\350\277\233.md" new file mode 100644 index 0000000000..143d73407f --- /dev/null +++ "b/\350\275\257\344\273\266\345\267\245\347\250\213/\346\236\266\346\236\204/\346\234\215\345\212\241\346\236\266\346\236\204\346\274\224\350\277\233.md" @@ -0,0 +1,70 @@ +# 服务架构演进 + +> **Unix的分布式设计哲学** +> 保持接口与实现的简单性,比系统的任何其他属性,包括准确性、一致性和完整性,都来得更加重要。 + +## 原始分布式时代 + +上世纪7 80年代 当时计算机硬件局促的运算处理能力,已直接妨碍到了在单台计算机上信息系统软件能够达到的最大规模。为突破硬件算力的限制,各个高校、研究机构、软硬件厂商开始分头探索,寻找使用多台计算机共同协作来支撑同一套软件系统运行的可行方案 + +这个时代提出了RPC的雏形以及日后分布式文系统的最早实现AFS + +“调用远程方法”与“调用本地方法”尽管只是两字之差,但若要同时兼顾到简单、透明、性能、正确、鲁棒、一致的话,两者的复杂度就完全不可同日而语 + +**某个功能能够进行分布式,并不意味着它就应该进行分布式,强行追求透明的分布式操作,只会自寻苦果** + +这个时间段过后的一端时间 摩尔定律的黄金时代 计算机的算力不断提升 在日后的一端时间 单体软件架构还是主流 + +## 单体系统时代 + +在微服务盛行的这段日子 单体系统好像总是以反派身份登场 但对于小型系统 不论是开发 测试 部署,单体系统都有着不可比拟的优越性 + +乍一看单体架构的缺点似乎会是不可拆分 难以扩展 无法继续支撑越来越大的软件规模 + +但几乎所有的单体系统都会进行分层拆分: + +![202011813502](/assets/202011813502.png) + +单体系统的缺陷在于拆分之后的隔离与自治能力上的欠缺,所有的代码都会运行在同一进程空间之内 + +一旦发生问题 问题就会扩散到整个系统,并且如果想要发布新版本 维护也是一个难题 + +**为了允许程序出错,为了获得隔离、自治的能力,为了可以技术异构等目标,是继为了性能与算力之后,让程序再次选择分布式的理由** + +## SOA时代 + +- 烟囱式架构:指的是一种完全不与其他相关信息系统进行互操作或者说协调工作的设计模式 +- 微内核架构:也被称为插件式架构,将公共服务、数据、资源集中到一块,成为一个被所有业务系统共同依赖的核心,具体的业务系统以插件模块(Plug-in Modules)的形式存在 + +![2020118135845](/assets/2020118135845.png) + +- 事件驱动架构:通过一个事件管道,各个自系统通过发送/接收事件的方式进行交互 + +![202011814010](/assets/202011814010.png) + +SOA的终极目标是希望总结出一套自上而下的软件研发方法论,所以SOA本身有着许多规范,但正是由于过于严格的规范定义带来过度的复杂性 + +## 微服务时代 + +> 轻量级 围绕业务 异构 自动化 + +在微服务的早期 它还是被作为SOA的一种补充手段 + +微服务追求的是更加自由的架构风格,摒弃了几乎所有SOA里可以抛弃的约束和规定 + +## 后微服务时代 + +>从软件层面独力应对微服务架构问题,发展到软、硬一体,合力应对架构问题的时代 + +这里的硬件指的更多是诸如容器 虚拟化技术等为主的基础设施 + +为了解决在硬件上的服务治理粒度过粗的问题,这个时代完成了第二次进化,也就是服务网格的引入,到目前为止,服务网格还算是个新概念,仍然还在发展 + +## 另外一条路-无服务时代 + +>如果说微服务架构是分布式系统这条路的极致,那无服务架构,也许就是“不分布式”的云端系统这条路的起点 + +- 后端设施:指数据库、消息队列、日志、存储,等等这一类用于支撑业务逻辑运行,称其为后端即服务 +- 函数:指的业务逻辑代码 + +无服务的无状态特征天生就不适合做某些事,或许在某些场景下,它会做的更好,但长期来看,还是为以服务架构为主