架构初探 | 青训营笔记

187 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

什么是架构

架构是软件整体结构与组件的抽象描述,通俗点讲就是实现一个软件有很多种方法,但是架构在方法选择上起指导作用。

单机架构

所有的功能实现在一个进程里,并部署在一个机器上。优点是简单,缺点是运维需要停服,而且单机也会很容易受系统硬件的影响。

单体,垂直应用架构|垂直切分

分布式部署,将应用垂直切分,每一部分独立部署。优点是:方便水平扩容,运维不需要停服,但是缺点是一个应用的某一部分指责太多(全栈),开发效率低。

SOA,微服务架构|水平切分

SOA就是将不同的功能单元抽象为服务。定义服务之间的通信标准。 微服务架构就是SOA的去中心化演进方向。

问题:

  1. 数据一致性
  2. 如何实现高可用
  3. 服务治理,如果服务出现异常怎么办?
  4. 解耦和以及过于追求微服务的微。

云原生

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

弹性计算资源类型:服务资源调度,计算资源调度,消息队列。

弹性存储资源类型:

  1. 经典的对象存储,大数据存储
  2. 关系型数据库
  3. 元数据,服务发现
  4. Nosql

微服务架构

image.png

服务网格

为服务之间通讯的中间层,高性能的网络代理,业务代码与服务治理解耦。相比于http/rpc框架,服务网格将异构系统治理统一化,与业务进程解耦,生命周期易于管理

image.png

企业级沟段架构的挑战

基础设施层面的问题:物理资源比如机器,带宽有限。资源利用率受制于部署服务。 用户层面的问题:网络通信开销大,网络抖动导致运维成本高,异构环境下,不同实例资源水位不均。

离在线资源并池

在线业务是IO密集为主并且具有潮汐性,实时性。而离线业务计算密集型的占多数并且非实时。基于上述特点提出了一种解决思路:离在线资源并池。

核心收益:降低物理成本和提供更多的弹性资源以增加收益(开源节流)

image.png

问题是:如何在同一个机器上做离在线隔离?

自动扩缩容

利用在线业务的潮汐性,自动扩缩容。降低业务成本。

问题是依据什么指标扩缩容?

微服务亲和性部署

核心收益:降低业务成本,提高服务可用性。

思路:

  1. 将满足亲和性条件的容器调度到一台宿主机
  2. 微服务中间件与服务网格通过共享内存通信。
  3. 服务网格控制面实施灵活,动态的流量调度。

流量治理

核心收益:提高微服务调用容错性,容灾,进一步提高开发效率

思路:基于微服务中间件和服务网格流量治理。熔断,重试,单元化,复杂环境的流量调度。

CPU水位负载均衡

核心收益:打平异构环境算力差异,为自动扩所容提供正向输入 思路:提供资源探针(IaaS),服务网格

最后

没有最好的架构,只有最适合的架构,架构没有银弹

如何做好架构设计?

  1. 需求先行
  2. 业界调研
  3. 技术选型
  4. 异常情况