这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
架构初探 | 青训营笔记
软件架构
- 软件整体结构与组件的抽象描述
- 用于指导软件系统各方面的设计
简而言之,做一件事的系统方法。
SOA(service-oriented architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务间的通信标准
微服务架构: SOA去中心化的演进方向
问题:
- 数据一致性
- 高可用:如何合作
- 治理:如何容灾
- 解耦 vs 过微
企业级后端架构剖析
云计算
通过软件自动化管理,提供计算资源的服务网络
IaaS/PaaS/SaaS/FaaS
云原生
云原生技术为公司在公有云、私有云、混合云等新型的动态环境中,构建和运行可弹性扩展的应用提供了可能。
用户不用关心底层资源;业务松耦合,但是可以紧密联系;开发和运营技术;
- 弹性计算资源
- 服务资源调度
- 计算资源调度
- 消息队列
- 弹性存储资源
- 经典存储
- 关系型数据库
- 元数据
- NoSQL
- 服务网格
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦:治理体现在数据面
企业级后端架构的挑战
- 基础设施
- 物理资源
- 机器
- 带宽
- 资源利用率受制于部署服务
- 物理资源
- 用户层面
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 不同机器处理相同服务,资源消耗不同
离在线资源并池。
思路:根据业务特点,弹性调配资源,把不用的资源让出来。
同一个机器怎么做离在线隔离?
离线在线使用不同线程,划分CPU。
自动扩缩容
利用在线业务潮汐性,根据某些指标扩缩容
扩缩容依据什么指标
CPU利用率(比如CPU p50,即50百分位数,主要指标),内存
微服务亲和性部署
A,B两个服务确实是不同的两个服务,但两者之间通信开销大。解决思路:微服务亲和性部署
- 将满足亲和性条件的容器调度到一台宿主机
- 微服务中间件与服务网格通过共享内存通信
- 服务网格控制面实施灵活、动态地流量调度
CPU水位负载均衡
好处:
- 能够为自动扩缩容提供准确参考
- 平滑不同机器硬件差异带来的算力差异
解决思路:
- IaaS
- 宿主机提供资源探针,告诉上层 下层的资源情况,来进行负载均衡决策
- 服务网格
- 动态负载均衡