凤凰架构——演进中的架构
背景
uuid: 114da021-6642-11f0-8b79-d5da912b10d4
uuid: 111970c0-6642-11f0-8b79-d5da912b10d4
uuid: 10e2f770-6642-11f0-8b79-d5da912b10d4
uuid: 10aea100-6642-11f0-8b79-d5da912b10d4
如果你是一个做开发的人,不论是web开发还是前端开发,抑或是数据分析师,我都非常建议你看下这本书。
互联网的基石是分布式系统,一个通过系统设计极大降低系统复杂度的系统,作为开发设计
使用这本书厘清一系列概念是非常重要的,了解一系列技术的发展历程,变化关系,才能更好的做开发与架构设计
(虚拟化相关的设计没特别关注)
演进式架构:
flowchart LR
A[原始分布式时代] -->B(单体系统时代)
B[单体系统时代] -->C(SOA时代)
C[SOA时代] -->D(微服务时代)
D[微服务时代] -->E(后微服务时代)
E[后微服务时代] -->F(无服务时代)
容错性设计会承认服务会出错,演进式设计则策划给承认服务会被报废淘汰
技术设计者的第一职责是决策权哼,有利有弊才需要决策,有取有舍才需要权衡,因此要求设计者本身的知识面需要完全覆盖需要决策的内容,清楚其中的利弊
简单优先原则,即“Worse is Better”。避免过度设计
对于单体系统,在对程序升级、修改时往往需要制定专门的停机更新计划,做灰度发布、A/B测试也相对更复杂。切换成微服务后,单独的微服务可以独立启动,独立行使功能,升级,AB测试,技术与业务迭代更新也更方便。
但在微服务下,要求开发团队中每个人都具有产品化思维,关心整个产品的全部方面是具有可行性的;顺带提一下,SOA和微服务的区别在于SOA只是将服务分成多个可以独立启动的程序,使用的数据库还是同一个,不如微服务解耦的彻底。
后微服务时代,指的是如服务调度工具kubernetes的使用,不再需要HPA,熔断,远程调用,服务注册与发现等服务治理的手动配置与维护:

无服务时代则通过更细致化的环境适配,免去一切业务不相关的代码开发,也不再需要手动实现日志记录,资源手动配置等行为;如Amazon的Faas平台,通过写Lambda函数就可以部署自己的一套业务,免去硬件和软件的复杂配置。
推荐阅读: