架构剖析及设计
架构
定义
架构,又称软件架构,
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
分类
单机架构
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上
单体、垂直应用 | 垂直切分
- 单体垂直切分:把进程部署在多个机器上,并引入负载均衡层,使得任务能够并行地进行,提高了效率
- 垂直应用架构:把不同应用的代码从之前一个大的进程中拆分出来,尝试解决单机服务的水平扩容、运维停服问题
SOA、微服务 | 水平切分
SOA,即Service-Oriented Architecture,面向服务的架构。它将应用的不同功能单元抽象为服务,并定义了服务之间的通信标准
而微服务架构则是SOA的去中心化演进方向
由此带来的好处:
- 不同模块的工程师可以专注于本模块的业务逻辑,显著提高开发迭代效率
- 各服务独立运维,变更操作的影响面可控,提高应用整体的稳定性
企业级后端架构剖析
云计算
定义:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
架构:
-
IaaS, Infrastructure as a Service
基础设施——网络,计算,存储
-
PaaS, Platform as a Service
平台——服务器,应用框架,编程语言
-
SaaS, Software as a Service
软件——应用
-
FaaS, Function as as Service
云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
它的代表技术有:容器化、服务网格、微服务、不可变基础架构、声明式 API
基于这些技术的云服务容错性好、易于管理、具备较好观测性。结合可靠的自动化机制,服务可以轻松应对频繁和可预测的重大变更
弹性资源
弹性计算资源
弹性计算资源类型包含:服务资源,计算资源和消息队列
-
服务资源包括微服务和大服务
-
计算资源分为离线和在线
-
消息队列
- 在线:削峰、解耦
- 离线:大数据分析
弹性存储资源
弹性存储资源支持多种类型数据的存储,提供包括对象存储、大数据存储、关系型数据库、元数据以及NoSQL。其意义是将存储资源当作服务向外提供
DevOps
DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。
DevOps 贯穿整个软件开发周期,结合自动化流程,提高软件开发和交付的效率