这是我参与[第五届青训营]伴学笔记创作活动的第7天
架构
什么是架构
架构的定义
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构会包括软件组件、组件之间的关系,组件特性以及组件间关系的特性。软件架构可以和建筑物的架构相比拟。软件架构是构建计算机软件,开发系统以及计划进行的基础,可以列出开发团队需要完成的任务。 —— Wikipedia
架构,又称为软件架构
- 指有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
单机
软件系统需要具备对外提供服务,而单机就是把所有功能都是现在同一个进程里,并且部署在一个机器里,单机的优点就是简单
单体、垂直应用
单体架构:分布式部署 垂直应用架构:按应用垂直切分的架构 优点:
- 水平扩容
- 运维不需要停服 缺点:
- 每个模块的开发效率很低
- 如果出现错误,很难去排查出错误
为了解决这些缺点,就出现了SOA和微服务框架
SOA、微服务框架
在软件工程中,面向服务的体系结构 (Service-Oriented Architecture) 是一种体系结构样式,它侧重于离散服务而不是整体式设计。[1] 因此,它也应用于软件设计领域,其中服务由应用程序组件通过网络上的通信协议提供给其他组件。 —— Wikipedia
SOA:
- 将应用的不同功能单元抽象成服务
- 定义服务之间的通信标准
微服务框架: SOA的去中心演进方向
企业级后端架构刨析
经过软件工程行业多年的发展,目前市面上有多种技术为企业级后端架构设计带来了便利,它们各自都极大程度上的改变了企业级后端架构的设计
云计算
云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。
基础
- 虚拟化技术:硬件(虚拟机)、操作系统(容器)、网络
- 编排方案:虚拟机编排方案、容器编排方案
架构
- IaaS
- PaaS
- SaaS
- FaaS
云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新兴的动态环境中构建和运行可弹性拓展的应用提供了可能。
弹性计算资源
弹性计算资源类型:
- 服务资源调度
- 微服务
- 大服务
- 计算资源调度
- 在线:热销榜单
- 离线:热销榜单更新
- 消息队列
- 在线:削峰、解耦
- 离线:大数据分析
弹性存储资源
弹性存储资源类型:
- 经典
- 对象:宣传视频
- 大数据:用户消费记录
- 关系型数据库
- 元数据
- NoSQL 总结:将存储资源当成服务一样
DevOps
DevOps 是云原生时代软件交付的利器,贯穿整个软件开发周期。 结合自动化流程,提高软件开发、交付效率
微服务框架
通信标准:
- HTTP(RESTful API)
- RPC(Thrift gRPC) 微服务中间件 RPC vs HTTP:
- 性能
- 服务治理
- 协议可解释性 云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。
服务网格
服务网格(Service Mesh):
- 微服务之间通讯的中间层
- 高性能网格代理
- 业务代码与治理解耦 相比较于RPC/HTTP框架:
- 异构系统治理统一化
- 与业务进程解耦,生命周期容易管理