这是我参与「第五届青训营」伴学笔记创作活动的第 8 天
一、架构定义解析
架构,又称软件架构:
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
下面是从整体架构逐步拆分的一个演变
1.1 单机架构
软件系统需要具备对外提供服务,而单机就是把所有功能都实现在一个进程里,并部署在一台机器上。
优点:
- 简单
缺点:
- 运维需要停服
- (
C10K problem)若遇到大流量,则需要排队
1.2 单体架构(垂直切分)
单体架构:分布式部署。
垂直应用架构
垂直应用架构:按应用垂直切分的单体(有一个中心模块负责分发具体业务,而分布式的单体都按业务能力来划分) 优点:
- 水平扩容
- 运维不需要停服
缺点:
- 职责太多,开发效率不高
- 爆炸半径大(一个单体出问题,整个链都会出现问题)
1.3 SOA架构(微服务|水平切分)
SOA(Service-Oriented Architecture),其特点为:
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
微服务架构:SOA的去中心化演进方向
问题:
- 数据一致性
- 高可用
- 治理
- 解耦?过微?
二、企业级后端架构的剖析
2.1云计算
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
基础
- 虚拟化技术(整个机器虚拟化OR一个机器虚拟多个)
- 编排方式
架构(下面列举的从上到下是有底向上的模块)
- laas (lnfrastructure as a Service)--类比为租房平台,不管房子在哪,你只需要关注有没有房子,然后交钱即可
- PaaS (Platform as a Service)----类比为装修,不管需要什么材料,你只需要给装修公司钱即可
- SaaS (Software as a Service)---类比招新,相当于直接雇佣培训过的师傅,不用从头再教一遍了
- Faas (Function as a Service)---类比蛋糕机,比手工要方便太多。
2.2 云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
弹性计算资源类型:
-
服务资源调度
- 微服务:和面、雕花(占用计算资源少)
- 大服务:烤箱(占用计算资源较多)
-
计算资源调度
- 在线:热销榜单
- 离线:热销榜单更新
-
消息队列
- 在线:削峰、解耦
- 离线:大数据分析中的套件通过消息队列搭建起来
弹性存储资源类型:
-
经典
- 对象:宣传视频
- 大数据:用户消费记录。
-
关系型数据库
- 收银记录
-
元数据
- 服务发现:蛋糕店通讯录
-
NoSQL ·KV:来个xx蛋糕
Dev0ps是云原生时代软件交付的利器,贯穿整个软件开发周期。
- 结合自动化流程,提高软件开发、交付效率
服务网格
服务网格(Service Mesh):
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦
【优点】相比较于RPC/HTTP框架:
- 异构系统治理统一化
- 与业务进程解耦,生命周期易管理