这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天.
老师今天讲了关于架构的产生与分析现如今架构的发展。从建立蛋糕厂为例,逐步扩大工厂架构并延伸至计算机内的架构,探讨云计算,云原生问题。
1.什么是架构
架构是站在前人的肩膀上,找出前人搭建好的框架基础并进行扩展运营,首先以开蛋糕店为例,开启蛋糕店,就需要用户与蛋糕师进行对接。此过程像单线程服务,会存在几个问题,当用户需求量过高,蛋糕师性能会有瓶颈,而且当服务器需要停机时无法进行服务。
单服务器运行会存在瓶颈,如何能卖更多的蛋糕,即如何处理更多的服务。所以将多进程的结构就好比将蛋糕划分为多块,由多个人进行分发,此为单体架构。将进程部署在服务器上,引入均衡负载,可以提高服务效率,能更快的发蛋糕。进一步的,将不同的应用拆分进程,将不同的口味蛋糕进行归类可以更精准提供用户需求使得服务效率加快。
但是总在提供服务效率上会带来更大的开销,不会无限的开启线程,所以需要考虑更底层,如果用户的需求更大,怎么能更好的满足用户需求与生产平衡,即怎么提升做蛋糕的效率,而不仅仅关注在用户服务的效率上。
由此提出了微服务架构SOA,将整体结构进行水平切分,让统一的工序抽象出来,单独的烤箱,和面等由单独的线程处理,各个原料与售卖之间由中心化的线程进行协调。以此能更好的满足不同用户对于不同口味的需求。为避免中心化所带来的问题,引入微服务架构,将线程相互协调纵向分割,将不同的需求处理为多个不同的线程单独服务,撒料师傅单独负责对面包的撒料,塑形的只负责塑形,可以避免中心化的沟通问题。在微服务框架中,装货台数据是动态平衡的,用户取走需求,但也在时时产生需求,如何能在单机部署的分布式架构中保证数据的一致性,如怎么让用户知道指定的蛋糕已被取走,需要有一个全局实时视图,若数据不一致可能会存在一份蛋糕被多人取走的情况。随着服务越来越多,依赖关系越来越强,怎么保证线程之间的合作情况,当关键线程挂机,如烤箱出问题,则后续工序都无法完成,如何提高容错能力。
随着需求的复杂性提升,架构会趋向将每一个工序进行细分成为多个单独的服务。
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模分析和存储的基石。
随后老师解释了云计算相关信息,不需要自己重新搭建底层,只需要考虑上层应用,底层搭建已经被完善,主要考虑功能以及应用,如当蛋糕店已经发展了三年,各系统管理已经完善,现在想扩张,开分店等就不再需要从底层服务开始考虑,只需要按照现有模式复制一份即可。随后提到云原生,云原生是指云计算发展到现在的一种新形态
云原生主要涉及四大方面,1.弹性资源,可以快速扩缩容,极大的提升了物理资源的利用率。2.微服务结构,依托于单元结构,使得云原生具备快速迭代,统一通信标准加入云原生,各组件之间的交互更为方便高效。3.DevOps: 设计->开发->测试->交付->开发->测试->交付,自动化流程使得工作效率更为高效。4.业务不再需要关心异构系统的RPC中间件的治理不统一问题。解耦了业务逻辑与网络通信。
如上图所示,宿主机间通过服务网格进行检测管理,微服务中间件与服务网格通过共享内存进行通信,服务网格给每个不同的宿主机提供负载均衡的CPU,所以服务网格将网络通信与业务代码之间进行了解耦。注册中心存储了所有宿主机之间的权重信息以便于服务网格进行资源合理分配;宿主机提供了容器资源使用情况以及容器物理信息,如CPU型号等。整体的分配流程以及运行流程,包括各宿主机代表的进程,之间的相关通信都需要仔细理解,才能理解云原生的整体架构以及内部组成部分,如微服务的具体架构。