这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天。
内容受本人水平限制,若有错误还望各位看官不吝赐教。
啥是架构
软件架构:
- 关于软件整体结构之于组件的抽象描述
- 指导系统各方面设计
常见的软件架构
-
单机架构
-
所有功能都在同个进程,部署在单个机器
-
架构简单
-
运维需要停服,承载能力有限(C10k问题)
-
-
单体架构
- 在单机架构的基础上,将进程部署到多个机器上
- 具备水平扩容能力
- 无需停服运维
- 进程职责过多,臃肿
-
垂直应用架构
- 将进程的职责切分后按照单体模式思路进行多机器部署
-
SOA (面向服务架构)
- 功能单元被切分为服务
- SOA为服务间通信定义标准
- 总的架构拓扑更像是一个集中式的模块
-
微服务
- SOA变体,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合
- 轻量级的服务通信协议
云计算的基础技术
-
虚拟化技术
- 硬件层面(VM 虚拟机)- KVM/Xen/VMware
- 操作系统层面(Container 容器)- LCX/Docker/Kata Container
- 网络层面 - Linux Bridge/Open v Switch
-
编排方案
- VM 虚拟机
- Container 容器
云原生
云原生,实际是云原生(计算)的简称,它是云计算发展到现在的一种形态。
代表技术:
- 弹性资源
- 微服务架构
- DevOps
- 服务网格 service Mesh
企业后端架构挑战
物理资源有限
- 机器(异构)
- 带宽
常见场景
挖个坑,以后有机会补
最好的架构?
没有最好的架构,只有最适合的。
- 以需求为输入
- 分析
- 调研类似需求的解决方案
- 确定基本架构
- 组件的技术选型
- 考虑极端情况
- 必要时重构