架构初探 | 青训营笔记

104 阅读4分钟

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

前言

本文章主要讲了架构的定义和实现。

什么是架构

定义

抽象的说,架构是有关软件整体结构与组件的抽象描述,通常用于指导软件各个方面的设计。类比一下的话,就是设计图。设计图纸量的优越通常决定了最终实现效果的好坏。

简单来说,架构就是实现软件的一种最优解。

重要性

  • 决定软件的质量
  • 保持软件的扩展性
  • 提供软件的可维护性

单机

单机一般是指将所有的服务部署在一台机器上。这样做的好处是开发简单,能够快速上线。但缺点是当机器需要维护时,需要停止整个服务,同时应对大量请求时容易宕机。此外,单机结构的扩展性也较差,不易后期扩展。

单体、垂直应用、垂直切分

单体应用是指将服务部署在不同的机器上。在访问时,通过负载均衡的引导,将用户的请求指向某些特定的机器。还可以进一步,按照应用拆分进程。这样做解决了单机服务的扩展问题和运维问题,但是也带来了数据一致性的问题。此外,随着业务量的扩展,服务的职责越来越多,使得开发人员无法专一的面向业务开发。此外,由于需要和多个部门打交道,一旦出问题,影响面不可估量。

SOA、微服务、水平切分

SOA是指将应用的不同功能单元抽象为服务,它定义了服务之间的通信标准。而微服务架构是SOA的去中心化演进方向。经过微服务的改造后,不同服务的开发人员可以专注于开发自己的服务,同时运维也相对独立,变更操作的影响面可控。

但是还有几个问题需要解决。

  • 数据一致性问题
  • 高可用
  • 治理
  • 解耦、过度细分

企业级后端架构剖析

背景

随着业务量的发展,如何对现有框架进行改造,使之适应现在的环境。

云计算

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

他的基础服务是虚拟化技术和服务编排方案。架构主要有IaaS、PaaS、SaaS、FaaS等

云原生

云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支持云基础设施上的应用程序开发。这些云原生技术支持快速、频繁地更改应用程序,而不会影响服务交付,从而为采用者提供了创新的竞争优势。

他主要涉及四个方面

  • 弹性资源
  • 微服务架构
  • DevOps
  • 服务网格

弹性资源

弹性资源是指根据服务需求,自动进行服务的调动,包括扩容、缩容、限流等

微服务架构

依托于功能单元解耦,使得云服务具备了快速迭代的可能,业务得以迅速发展;统一的通信标准能够帮助越来越多的组件加入到云原生的大家庭,同时也使得各组件之间的交互变的更容易

DevOps

流水线开发简化了开发流程,极大地发挥了微服务架构的优势

服务网格

服务网格将业务逻辑与网络通信解耦,便于服务治理。

挑战

  • 物理层
    • 机器不能无限扩容
    • 服务带宽有限
    • 服务的利用率
  • 用户层
    • 网络通信开销大
    • 运维成本高
    • 资源不均