这是我参与「第五届青训营」伴学笔记创作活动的第4天。今天学的是软件架构相关内容。
什么是架构?架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。通俗的说,架构就是软件实现方式的总称。单机架构就是软件系统把所有功能都实现在一个进程里,并部署在一台机器上。这种架构的优点是简单,缺点是软件服务容量十分有限,任何运维操作都需要停服,因为只有一个单机服务,有用户使用的时间点没有办法运维。单体架构就是进程部署在多个机器上,并引入负载均衡层。用户被多个机器分走,负载均衡层负责引导用户去某个机器。垂直应用架构就是在单体架构的基础上,进一步把不同应用的代码从之前一个大的进程中拆分出来。它们的优点是水平扩容,运维不需要停服,缺点是单个机器职责太多,开发效率不高,爆炸半径大。SOA架构(面向服务的架构)就是把原本包含了众多复杂逻辑的进程按照功能单元抽象成多个服务,以服务为单位,并为它们之间的通信定义标准。微服务架构就是SOA架构去中心化。它们的问题是数据一致性,高可用,治理,解耦和过微。
企业级后端架构一般都是通过云计算进行布置。云计算是指通过软件自动化管理,提供计算资源的服务网络。云计算的基础是虚拟化技术和编排方案。云原生是云计算发展到现在的一种形态是。云原生主要涉及四个大方面:弹性资源:基于虚拟化容器以及灵活的编排调度机制,可以为云服务提供快速扩缩容能力,而且极大程度地提高了物理资源的利用率;微服务架构:依托于功能单元解构,使得云服务具备了快速迭代的可能,业务得以以迅速发展;统一的通信标准能够帮助越来越多的组件加入到云原生的大家庭,同时也使得各组件之间的交互变的更容易;DevOps:设计->开发->测试-→交付->开发->测试-交付,自动化的流程使得软件的工作流程更高效,将微服务架构的优势发挥的淋漓尽致;服务网格:将业务逻辑与网络通信和治理解耦开来。业务不再需要关心异构系统中PRC中间件治理能力的不统一,也使得复杂的治理能力的落地成为可能。