这是我参与「第三届青训营 -后端场」笔记创作活动的的第四篇笔记。
什么是架构
单机
- 把所有功能实现在一个进程并部署在一台机器上。
- 问题:
C10K 问题是一个优化网络套接字以同时处理大量客户端连接的问题。
C10K 表示处理 10000 个并发连接。
注意这里的并发连接和每秒请求数不同,虽然它们是相似的:
每秒处理许多请求需要很高的吞吐量(快速处理它们),但是更大的数量并发连接需要高效的连接调度。
运维需要停服
单体,垂直应用|垂直切分
- 单体架构:分布式部署
- 垂直应用架构:按应用垂直切分的单体
- 优点:不需要停服运维,水平扩容
- 缺点:职责多,开发效率不够高,爆炸半径大
SOA,微服务|水平切分
SOA
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
微服务架构:SOA的去中心化演进方向
企业后端架构剖析
云计算
通过网络自动化管理,提供计算资源的的服务网络,是现代互联网大规模熟悉分析和存储的基石。一个软件在执行以完成某项任务的时候,如果用到的计算设备和输入/输出设备不是通过主板连接,而是通过网络连接,那么这个过程就叫云计算。
- 虚拟化技术
- 编排方案
- 四层架构:IaaS, Paas, SaaS, FaaS
- IaaS 是Infrastructure as a server的缩写,意思是基础设施即服务。又云端公司把IT环境的基础设施建设好,然后直接对外出租硬件服务器或者虚拟机。消费者可以利用所有计算基础设施,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(例如路由器、防火墙、负载均衡器等)的控制。
- PaaS 是Platform as a Server的缩写,意思是平台即服务,即把运行用户所需的软件的平台作为服务出租。平台软件层包括操作系统、数据库、中间件和运行库,但是并不是每一个软件都需要这4部分的支持,需要什么是由软件决定的。所以PaaS又分为2种,半平台PaaS和全平台PaaS。
1 、半平台PaaS:只安装操作系统,其他的租户自己去解决。这样会比较麻烦,因为你需要有较强的技术实力,而且需要耗费部分资源去安装软件运行需要的、的中间件、运行库、数据库。
2 、全平台PaaS: 安装应用软件依赖的全部平台软件,也就是4部分全部准备完毕。不过大家也知道,世界上的应用软件如此庞大,支撑他们的语言、数据库、中间件、运行库可能都不一样,PaaS云端公司不可能全部都去安装,所以他们支持的软件是有限的。
相对于IaaS来说,PaaS租户的灵活性降低了,只能在云端提供的有限平台范围内做软件,但是有点也很明显,能够最大化利用租用的资源和不需要租户有高深的IT技术。
- SaaS 是Software as a Server的缩写,意思是软件即服务。 把软件租出去,用户连安装都不需要了。对比PaaS略微有一点不同,应用软件是云端公司来安装、运维的,租户使用软件,需要管理的是这些软件产生的数据信息。
一般来说SaaS适用的软件都有如下的特点:
(1)复杂:软件庞大、安装复杂、使用复杂、运维复杂,单独购买架构昂贵,例如ERP、CRM、BI等。
(2)模块化:按功能模块划分,需要什么功能就组什么模块。
(3)多租户:多个企业用户同时操作,使用同一个软件而不是互相干扰。当然,数据是逻辑隔离的,不同用户的数据检索字段之一必然是用户身份信息。
(4)多币种多语言多时区的支持
- DaaS 是Date as a Server的缩写,意思是数据即服务。 云端公司负责建立全部的IT环境,收集用户需要的基础数据并且做数据分析,最后对分析结构或者算法提供编程接口,让数据成为服务。