这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、本堂课重点内容:
- 什么是架构
- 企业级后端架构剖析
- 企业级后端架构的挑战
- 后端架构实战
二、详细知识点介绍:
什么是架构
广的含义
整体,即架构对象。用建筑术语表示,好比是某个具体的建筑物,用IT系统的视角来看,整体可以是一个系统,一类数据,一连串技术。整体是架构设计的目标对象。所有的架构设计活动都是从认识整体开始的,对整体的理解越深刻,架构设计的脉络性就越强,手法自然也就更显高明和远见。
分部,把整体按照一定的逻辑进行切割和拆解,再经过抽象和聚类形成的局部或片段。分布的划分往往很具有挑战性,既是对经验的考验,又是对未来判断的体现。
结构,即分部之间的空间结构。划分了分部之后,如何合理得组织这些分部,规定各个分部的职责范围,上下游,类似军队的排兵布阵。既有经验和阅历的成分,也有一些哲学、理念和现实的影响。
连接,即分部之间的交互范式。有了分部和结构还远远不够,我们的目的是整体,是一个运转良好的整体,而不是一堆看上去匠心独运、结构清晰但分散的片段。因此,如何让各个分部在指定的结构下有效的互动,且有规可循,是不可缺失的重要一环。
不难发现,架构其实是整体与分部之间的分化、再连接的逻辑行为。 常见软件架构:
软件架构
架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构。
-
单机
一个业务量很小的系统,所有的代码都放在一个项目中,然后这个项目部署在一台服务器上。整个项目所有的服务都由这台服务器提供,这就是单机结构。
单机结构的缺点:
单机的处理能力是有限的,当业务增长到一定程度的时候,单机的硬件资源将无法满足业务需求。此时便出现了集群模式。 -
单体
所谓单体,简单理解就是一个程序里包含了一个系统/产品的所有业务功能。
在一些小型应用的初期,访问量小的时候,这种架构的性价比还是比较高的,开发速度快,成本低,但是随着业务的发展,逻辑越来越复杂,代码量越来越大,代码的可读性和可维护性越来越低。用户的增加,访问量越来越多单体架构的应用并发能力十分有限。 -
垂直应用
将一个大型应用拆分成多个相互独立的小型应用成为解决单体应用的一种方案,这就是垂直架构(也称为“竖井式架构”)。垂直架构根据业务属性将一个大的单体应用拆分成多个模块或子系统,子系统之间没有直接关联。
-
SOA (Service Oriented Architecture)
SOA(Service-Oriented Architecture,面向服务的架构)是一种在计算机环境中设计、开发、部署和管理离散模型的方法。SOA不是一种新鲜事物,它是在企业内部IT系统重复构建以及效率低下的背景下提出的。在SOA模型中,所有的功能都被定义成了独立的服务,所有的服务通过服务总线(ESB)或流程管理器来连接。这种松散耦合的结构使得能够以最小的代价整合已经存在的各种异构系统,当然,由于需要实现对各种异构系统的适配(通常使用ESB来完成不同系统之间的协议转换及数据格式转换),因此,其本身也会引入更多的复杂性
-
微服务 (Microservice)
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。可以将其看作是在架构层次而非获取服务的
类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
概念: 把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
定义: 围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。
本质: 用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。
企业级后端架构剖析
-
云计算
计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。-
基础
- 虚拟化
- 编排
-
架构
- IaaS
- SaaS
- PaaS
- FaaS
-
-
云原生
云原生是基于分布部署和统一运管的分布式云,以容器、等技术为基础建立的一套云技术产品体系。-
弹性资源
- 计算资源
- 存储资源
-
微服务架构
- 通信协议
- 中间件
-
DevOps
- 软件生命周期
-
服务网格
-
企业级后端架构的挑战
- 离线任务
离线任务广泛存在于分布式系统设计中,他们承担着重要的工作,包括维护数据最终一致性,解决业务诉求传输数据等等。 - 在线任务
- IO 密集型
- CPU 密集型
- 服务治理
- IPC (Inter-Process Communication)
- RPC (Remote Procedure Call)
后端架构实战
- 负载均衡 Load Balancing
- 服务发现 Service Discovery
- 服务注册 Service Registry
- 宿主机 Host
- 容器 Container
- 时序数据 Time Series
- 一致性哈希 Consistent Hash
三、课后个人总结:
- 初步学习了有关架构的相关知识