这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
架构
1.架构含义
架构即软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。简单说,可以认为软件架构指软件系统的顶层结构。有三种架构的方式:
①单机:把所有功能都实现在一个进程里,并部署在一台机器上。单体架构的特点是所有代码逻辑都耦合在一个项目中。
- 优点: 简单
- 问题:运维需要停服
②垂直应用架构: 按应用垂直切分的单体。垂直架构相较于单体架构而言,进行了部分解耦,但是不够彻底,在各个子系统相互依赖的代码和模块中,存在重复代码拷贝和模块功能重复开发的情况。
- 优点:水平扩容、运维不需要停服
- 问题:职责太多,开发效率不高、爆炸半径大
③面向服务的架构(SOA) 面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
面向服务的架构主要由两种:以企业服务总线(ESB)为代表的 SOA 和以 RPC 为代表的 SOA。
2.企业级后端架构剖析
①云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
基础:
- 虚拟化技术
- 编排方案
架构: laaS (Infrastructure as a Service) 、PaaS (Platform as a Service)、 SaaS (Software as a Service)、 FaaS (Function as a Service)
②云原生技术
云原生为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用 提供了可能。
③计算资源
弹性计算资源类型:
- 服务资源调度(微服务、大服务)
- 计算资源调度(在线、离线)
- 消息队列(在线、离线)
弹性存储资源类型:
- 经典(对象、大数据)
- 关系型数据库
- 元数据:服务发现
- NoSQL
总结:将存储资源当成服务一样
3.企业级后端架构的挑战
挑战:
①基础设施层面
- 物理资源是有限的:机器、带宽
- 资源利用率受制于部署服务
②用户层面
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均
核心收益:
- 降低物理资源成本
- 提供更多的弹性资源,增加收入
解决思路: 离在线资源并池
- 在线业务的特点:IO密集型为主,潮汐性、实时性
- 离线业务的特点:计算密集型占多数,非实时性