这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
内容
- 什么是架构?
- 企业级后端架构剖析
- 企业级后端架构的挑战
- 后端架构实战
架构
架构是非常重要的基石,其全称是软件架构:
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
单体架构与垂直应用架构
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
垂直切分是根据业务来拆分数据库,同一类业务的数据表拆分到一个独立的数据库,另一类的数据表拆分到其他数据库。垂直切分可以降低单节点数据库的负载。
SOA 微服务与水平切分
SOA (Service-Oriented Architecture),也就是面向服务的架构;
- 将应用的不同功能单元抽象为服务(服务是根据功能抽象出来的概念)
- 定义服务之间的通信标准(通信标准是服务之间通信的基石)
微服务架构是SOA的去中心化演进方向,也有中心化的发展方向
微服务架构的效果:
- 不同模块的RD可以专心于自己的业务逻辑了,开发迭代效率得到了显著提高
- 各个服务独立运维,变更操作的影响面可控,应用整体的稳定性得到了提高
水平切分是按照某个字段的某种规则,把数据切分到多张数据表。一张数据表化整为零,拆分成多张数据表。
企业级后端架构
云计算
云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模分析和存储的基石。
云计算的基础一个是虚拟化技术,一个是编排方案
- 虚拟化技术:硬件(虚拟机)、操作系统(容器)、网络
- 编排方案:虚拟机编排方案(OpenStack)、容器编排方案(Kubernetes)
架构方面:
- IaaS(Infrastructure as a Service)
- PaaS(Platform as a Service)
- SaaS(Software as a Service)
- FaaS(Function as a Service)
云原生
云原生技术为组织在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能,全称是云原生计算,是元计算发展到现在的一种形态,云原生的四个要点就是DevOps + 持续交付 + 微服务 + 容器
DevOps 是开发 (Dev) 和运营 (Ops) 的复合词,它将人、流程和技术结合起来,不断地为客户提供价值,DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生产更好、更可靠的产品。通过采用 DevOps 文化、做法和工具,团队能够更好地响应客户需求,增强对所构建应用程序的信心,更快地实现业务目标。
企业级后端架构的挑战
-
基础设施层面
- 物理资源是有限的
- 资源利用率受制于部署服务
-
用户层面
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均
法一:离在线资源并池
核心收益:
- 降低物理资源成本
- 提供更多的弹性资源,增加收入
在线业务的特点:
- IO密集型为主
- 潮汐性、实时性
离线业务的特点
- 计算密集型占多数
- 非实时性
法二:自动扩缩容
核心收益:
- 降低业务成本
- 利用在线业务潮汐性自动扩缩容
法三:微服务亲合性部署
核心收益:
-
降低业务成本
-
提高服务可用性
-
将满足亲合性条件的容器调度到一台宿主机
-
微服务中间件与服务网格通过共享内存通信
-
服务网格控制面实施灵活、动态的流量调度
法四:流量治理
核心收益:
- 提高微服务调用容错性
- 容灾
- 进一步提高开发效率,令DevOps发挥到极致
法五:CPU水位负载均衡
核心收益:
- 打平异构环境算力差异
- 为自动扩缩容提供正向输入