架构定义解析 | 青训营笔记

114 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第2天

大纲:

  1. 什么是架构
  2. 企业级后端架构剖析
  3. 企业级后端架构的挑战
  4. 后端架构实战

什么是架构

架构,又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各方面的设计。架构在方法选择上对实现软件的方法起着至关重要的指导作用。

思考:架构是软件工程中的对软件的管理的科学。好的软件架构是软件可靠性和可持续性的基础。

架构示例:单机,把所有功能是实现在一个进程里,并部署在一台机器上。优点:简单易部署 缺点:运维需要停服 C10K Problem

对单机架构的演进:从单机架构演进到单体架构,按应用垂直切分。优点:水平扩容 运维不需要全部停服 缺点:指责太多,开发效率不高 爆炸半径大

思考:Nginx的代理功能就是简单的单机架构

再演进:将后端按照应用分类,扩展出负责不同应用的服务。

再演进:分工协作,将单体架构中每个服务的职责再切分,每个服务所做的事更小,更具体,即 SOA,SOA再进行水平扩容和垂直拆分,出现了微服务。

微服务产生的问题:数据一致性 高可用 治理 解耦和过微之间的平衡

总结:在需求量越来越大的背景下,原本原始且高度聚合的服务处理方式不再适用,需要进行进一步的拆分和扩容,才能满足需求。服务逐渐向微型化和专一化演进。

企业级架构剖析

云计算:IaaS 基础设施即服务 PaaS 平台即服务 SaaS 软件即服务 Faas 函数即服务

IaaS 提供软件和系统运行的基础架构,例如 Bare Metal 裸金属服务器 PaaS 提供软件运行的平台,例如 VPS SaaS 提供软件,例如 SQL 数据库 FaaS 提供软件的某一功能,例如 云函数

云原生:为组织和公司在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。

云原生技术

企业级后端架构的挑战

在基础设施层面:

  • 物理资源有限
  • 资源利用率受制于部署服务

用户层面:

  • 网络通信开销较大
  • 网络抖动导致运维成本提高
  • 异构环境下,不同实例资源水位不均

解决方案1:离在线资源并池

目的:降低物力成本 提供更多弹性资源,增加收入

在线业务具有 IO 密集性和潮汐性、实时性,离线业务具有计算密集性、非实时性。将这两种资源池合并起来,可以在在线业务繁忙时暂时减少离线业务资源的分配,在凌晨等在线业务较低迷时增加离线业务的资源分配。动态分配的方案能够提高物理资源的使用率,减少物理资源的数量,提高效益。

思考:同一台机器如何做离在线隔离?答:考虑使用虚拟化和容器方案,隔离离线业务和在线业务进程,限制 CPU 使用率。

思考:如何使业务能够自动分配?使用自动扩缩容。扩缩容可以使用 CPU 使用率和内存占用等指标进行扩缩容的阈值。

解决方案2:微服务亲和性部署

如何解决网络通信开销问题?答:将相互依赖性较强的服务部署在同一台宿主机中,使得两者之间的网络通信的耗时、抖动、可靠性提升。还可以通过算法动态探测和调整服务之间的亲和性关系,使得效益进一步提高。

解决方案3:基于微服务中间件 和 服务网格的流量治理

  • 熔断、重试
  • 单元化
  • 复杂环境的流量调度

解决方案4:CPU 水位负载均衡

通过微服务容器内的资源探针实现服务网格的动态负载均衡