架构初探 | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第5天
今天的内容主要是对架构的讲解,此前接触的应用多是单体式架构,虽然开发方便、设计简单,但各个模块的功能分配混乱、耦合度高,随着用户量的增多,这样的结构必然会让运维同学头大,因此,一个合适的架构是在开发之前就需要着重考虑的。
基础内容
定义
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
常见的架构
-
单机式
- 把所有模块功能都放到同一个进程,部署到一台机器上
- 优点:简单
- 缺点:机器性能的瓶颈也会造成应用的瓶颈,并且运维需要停服
-
单体分布式部署
- 分布式部署,通过负载均衡层进行request的分配
- 优点:通过简单的水平扩容就提高了性能
- 缺点:模块与模块之间其实还是处于同一个进程
-
垂直架构
- 在单体分布式部署的基础上,将项目进行切分
- 优点:系统之间相互独立,运维无需停服
- 缺点:粒度还是太大,一个应用的职责仍然太多
-
SOA
- 将应用的不同的功能单元抽象为服务
-
微服务
- SOA其实只是一个理念,实现方式包括去中心化和中心化,而微服务其实就是SOA去中心化的实现方式
企业级方案
云计算
- IaaS:基础设施即服务
- PaaS:平台即服务
- SaaS:软件即服务
- FaaS:功能即服务
云原生
-
弹性资源
- 虚拟化容器
- 快速扩缩容
-
微服务架构
- 业务功能单元解耦
- 统一的通信标准
-
DevOps
- 敏捷开发
- CI/CD
-
服务网格
- 业务与治理解构
- 异构系统的治理统一化
- 复杂治理能力
挑战
离在线资源并池与自动扩缩容
将离线资源池和在线资源池合并,根据时段动态分配资源
核心收益:
- 降低物理资源成本
- 提供更多的弹性资源,增加收入
微服务亲合性部署
可以将频繁进行网络通信的两个应用放置于同一台宿主机中,这样就可以通过IPC取代RPC,减少带宽占用
核心收益:
- 降低业务成本
- 提高服务可用性
流量治理
核心收益:
- 提高微服务调用容错性
- 容灾
- 进一步提高开发效率,DevOps发挥到极致
CPU水位负载均衡
核心收益:
- 打平异构环境算力差异
- 为自动扩缩容提供正向输入