什么是架构
定义
架构,又称软件架构
-
是有关软件整体结构与组件的抽象描述
-
用于指导软件系统各个方面的设计
-
通俗解释:实现软件有很多中方法,架构在方法选择上起着至关重要的指导作用
单机
-
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上
-
优点:简单
-
问题:C10K problem;运维需要停服
垂直切分
-
单体架构:分布式部署
-
垂直应用架构:按应用垂直切分的单体
-
优点:水平扩容;运维不需要停服
-
问题:职责太多,开发效率不高;爆炸半径大
水平切分
-
SOA(Service-Oriented Architecture)
-
将应用的不同功能单元抽象为服务
-
定义服务之间的通信标准
-
-
微服务架构:SOA的去中心化演进方向
-
问题
-
数据一致性
-
高可用
-
治理(容灾)
-
解耦 vs 过微(运维成本提升)
-
企业级后端架构剖析 - 云计算
云计算
- 是指通过软件自动化管理,提供计算资源的服务网站,是现代互联网大规模熟悉分析和存储的基石
基础
-
虚拟化技术
-
编排方案
架构
-
IaaS(Infrastructure as a Service)
-
PaaS(Platform as a Service)
-
SaaS(Software as a Service)
-
FaaS(Function as a Service)
企业级后端架构剖析 - 云原生
云原生
-
云原生,实际上是云原生(计算)的简称,是云计算发展到现在的一种形态
-
云原生技术为组织在公有云、自由云、混合云等新型动态环境中,构建和运行可弹性拓展的应用提供了可能
-
代表性技术:
-
容器化
-
服务网格
-
微服务
-
不可变基础架构
-
声明式 API
-
-
基于这些技术,开发者可以构造出弹性好、易于管理、观测行好的云服务
-
结合可靠的自动化机制,服务可以轻松应对频繁和可预测的重大变更
企业级后端架构的挑战
挑战
-
基础设施层面
-
物理(机器、带宽)资源有限
-
资源利用率受限于部署服务
-
-
用户层面
-
网络通信开销较大
-
网络抖动导致运维成本提高
-
异构环境下,不同实例资源水位不均
-