这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
常见软件架构
- 架构,有关软件整体结构与组件的抽象描述
单体架构
- 所有的功能均在一个程序中存储
- 模块之间将相互影响
- 开发难度上升
垂直应用
- 按照业务线垂直化分
- 无法复用模块
SOA
- 面向服务架构
- 重要的组成部件是服务注册中心
微服务架构
- 彻底的服务化
企业级后端架构
企业架构的基础
- 云计算
- 虚拟化技术
- 硬件层面:VMware/KVM
- 操作系统:Container
- 网络层面:Linux Bridge/Open v Switch
- 编排方案 VM/Container
- 云服务 IaaS、PaaS、SaaS、FaaS
- 云部署模式 公有云、私有云、混合云
- 虚拟化技术
- 云原生
- 可以实现在公有云、自由云、混合云等动态环境中,构建和运行可弹性扩展应用。
- 代表技术:弹性资源、微服务架构、DevOps、服务网络
- 弹性资源
- 弹性计算资源 计算资源调度-在线计算、离线计算 消息队列-在线队列、离线队列
- 弹性存储资源 经典存储 关系型数据库 元数据-服务发现 NoSQL-KV存储、文档存储
企业级后端架构的挑战
- 离线任务
- 在线任务
- IO 密集型
- CPU 密集型
- 服务治理
- IPC (Inter-Process Communication)
- RPC (Remote Procedure Call)
后端架构实战
-
负载均衡 Load Balancing
-
服务发现 Service Discovery
-
服务注册 Service Registry
-
宿主机 Host
-
容器 Container
-
时序数据 Time Series
-
一致性哈希 Consistent Hash
流量治理
Q:微服务之间的通信流量为什么需要治理?
Q:都有哪些常用的治理手段?
Q:微服务中心件和服务网格在其中扮演着怎样的角色?
屏蔽异构环境的算力差异
Q:基础设施层往往是个复杂的异构环境,比如,有些机器的 CPU 是英特尔的,而有些是 AMD 的。就算是同一个品牌,也可能是不同代际。如何将这些差异屏蔽掉,使用户尽可能不感知呢?
Q:什么情况下,我们觉得,服务需要扩容了?异构环境会对这个评判标准产生怎样的影响?
引用
该文章部分内容来自于以下课程或网页:
- 字节青训营课程:架构初探 - 谁动了我的蛋糕
- 字节内部课:微服务框架 - 不变的基建