Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理

Go 后端架构

1. 初识架构

1.1 架构定义

  • 是有关软件整体结构与组件的抽象描述
  • 用于指导软件系统各个方面的设计

1.2 架构发展

​ 架构演进的思路:垂直切分——分布式,水平切分——分层/模块,以满足软件迭代诉求,提高迭代效率。

  • 单机架构

​ All in one,所有的东西都在一个进程里,部署在一个机器上。

​ 优点:简单

​ 缺点:运维需要停服,用户体验较差; 承载能力有限。

  • 单体架构

​ 在单机架构的基础上,将进程部署到多个机器上。

​ 优点:

​ 具备水平扩容能力

​ 运维不需要停服

​ 缺点:

​ 后端进程职责太多,越来越臃肿

​ 爆炸半径较大,进程中一个很小的模块出现问题,都可能导致整个进程崩溃

  • 垂直应用架构

​ 在单机架构基础上,将进程按照某种依据切分开。比如,A 软件和 B 软件的后端原先采用单机架构部署,那就是一个进程部署在多个机器上;如果用垂直应用架构,可以将 A 和 B 的后端拆分为 A、B 两个进程,然后再按照单体模式的思路,部署在多个机器上。

​ 优点:

​ 一定程度上减少了后端进程职责

​ 一定程度上缩小爆炸半径

​ 缺点:

​ 没有根本解决单体架构的问题

  • SOA (面向服务架构)

​ SOA 架构中,将进程按照不同的功能单元进行抽象,拆分为服务。有了服务之后,SOA 还为服务之间的通信定义了标准,保证各个服务之间通讯体验的一致性。

​ 优点:

​ 各服务的职责更清晰

​ 运维粒度减小到服务,爆炸半径可控

​ 缺点:

ESB (企业服务总线) 往往需要一整套解决方案,过于中心化

  • 微服务

​ 在 SOA 架构中,ESB 起到了至关重要的作用。但从架构拓扑来看,它更像是一个集中式的模块。有一个 **SOA 分布式演进(去中心化)**的分支,最终的形态便是微服务。

​ 需要解决的问题:

​ 数据一致性;高可用;治理;解耦 vs 过微

​ 优点:

​ 兼具 SOA 解决的问题

​ 服务间的通信更敏捷、灵活

​ 缺点:运维成本
Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第1张图片
Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第2张图片

2. 企业级后端架构剖析

2.1 云计算

​ 是指通过软件自动化管理、提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。

云计算架构:

  • IaaS(Infrastructure as a Service)- 云基础设施,对底层硬件资源池的抽象

  • PaaS (Platform as a Service) - 基于资源池抽象,对上层提供的弹性资源平台

  • SaaS (Software as a Service) - 基于弹性资源平台构建的云服务

  • FaaS (Function as a Service) - 更轻量级的函数服务。好比 LeetCode 等 OJ,刷题时只需要实现函数,不需要关注输入输出流

2.2 云原生

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

Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第3张图片

  1. 弹性资源:

    • 服务资源调度

    • 计算资源调度

      在线:热销榜单

      离线:热销榜单更新

    • 消息队列

      在线:消峰,解耦

      离线:大数据分析

    • 存储资源

  2. DevOps :

    结合自动化流程,提高软件开发、交付效率

    以下整个流程都需要DepOps支持

Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第4张图片

  1. 微服务架构:

    通信标准:

    HTTP (RESTful API)(可解释性强)

    RPC (Thrift gRPC) (性能较好、天生具有服务治理能力)
    Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第5张图片

  2. 服务网格:

    微服务之间通讯的中间层

    高性能网络代理

    将流量层面的逻辑与业务进程解耦

服务网格相比较于 RPC/HTTP 框架:

  • 实现了异构系统治理体验的统一化

  • 服务网格的数据平面代理与业务进程采取进程间通信的模式,使得流量相关的逻辑(包含治理)与业务进程解耦,生命周期也更容易管理。

如下,原先要使用 RPC 进行通信,现在可以放到 Service Mesh 层。

Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第6张图片

3. 企业级后端架构的挑战

  • 混合资源池 – 解决资源利用率不均的问题

​ 在线业务特点

​ I/O密集、潮汐性、实时性

​ 离线业务特点

​ 计算密集占多数、非实时性

​ 在线、离线资源池自动扩缩容用于解决在线、离线资源隔离。

Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第7张图片

  • 微服务亲合性部署 – 解决网络开销较大问题

    A、B服务存在大量的通信需求,将两个服务部署在一台宿主机上

Go 语言进阶(三) -- 后端架构基础概念 架构发展 SOA(面向服务架构)、微服务架构、云计算、微服务服务治理_第8张图片

  • 基于微服务中间件 & 服务网格的流量治理 – 容灾、提高微服务调用的容错性

图片均来自字节青训营课程,博客作为自己学习记录,如有侵权,麻烦联系删除。

你可能感兴趣的:(Go,架构,运维,微服务,go,云计算)