这是我参与[第五届青训营]伴学笔记创作活动的第7天。
简介
本篇笔记是记录架构的基础知识。
架构知识
架构:架构是经过系统性地思考, 权衡利弊之后在现有资源约束下的最合理决策, 最终明确的系统骨架。包括子系统, 模块, 组件. 以及他们之间协作关系, 约束规范, 指导原则。并由它来指导团队中的每个人思想层面上的一致。
架构的演化:
- 单体架构:所有的代码都在一个进程里,部署在一个机器上。
- 垂直架构:在单机架构的基础上,将进程部署到多个机器上。
- 分布式架构:在单价架构基础上,将进程按照某种依据切分开。
- SOA架构:SOA 架构中,服务为一等公民,将进程按照不同的功能单元进行抽象,拆分为『服务』。有了服务之后,SOA 还为服务之间的通信定义了标准,保证各个服务之间通讯体验的一致性。
- 微服务架构:在 SOA 架构中,ESB 起到了至关重要的作用。但从架构拓扑来看,它更像是一个集中式的模块。有一个 SOA 分布式演进的分支,最终的形态便是微服务。
云计算:云计算是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。(这在某种程度上与分布式计算是一样的)
云计算分层:
IAAS(Infrastructure-as-a- Service): 基础设施即服务,运维人员只需要管理系统、运行环境和应用代码。PAAS(Platform-as-a- Service):平台即服务,只需要考虑应用代码的编写,运行环境都不用考虑,只要FTP上传代码就能实现业务。SAAS(Software-as-a- Service):软件即服务,也就是集成好的云服务平台,不用考虑如何实现,可以直接使用。FaaS(Function as a Service):"功能即服务"(也译作“函数即服务”),是一种在无状态容器中运行的事件驱动型计算执行模型,这些功能将利用服务来管理服务器端逻辑和状态。
云原生:云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。代表技术:弹性资源、微服务架构、DevOps、服务网络。