这是我参加「第五届青训营」伴学笔记创作活动的第11天
架构的定义
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。简单来说,架构就是指导软件在实现方法上的选择。
架构类型
单体架构
软件系统需要对外提供服务,单机就是把所有功能都实现在一个进程里,并将其部署在一个架构上。其优点是简单,但是存在C10K的问题,而且在维护时需要停服
垂直应用架构
单体架构:分布式部署 垂直架构:按照应用进行垂直切分的单体。 垂直应用的架构是可以水平扩容,在运维时不需要停服,问题是其指责过多,开发效率不高,爆炸半径太大。
微服务架构
将应用的不同功能单元抽象为服务,并定义服务之间的通信标准。问题在于数据的一致性怎么保证,如何正确的计算数据的吞吐量,当某项服务出现问题时,程序该如何继续运行下去
云计算
云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石,其基础是:
- 虚拟化技术:硬件(虚拟机)、操作系统(容器)、网络
- 编排方案:虚拟机编排方案(OpenStack)、容器编排方案(Kubernetes)
云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
云原生之弹性计算资源
弹性计算资源类型:
- 服务资源调度
- 微服务
- 大服务
- 计算资源调度
- 在线:热销榜单
- 离线:热销榜单更新
- 消息队列
- 在线:削峰、解耦
- 离线:大数据分析
云原生之弹性存储资源
弹性存储资源类型:
- 经典
- 对象:宣传视频
- 大数据:用户消费记录
- 关系型数据库
- 元数据
- NoSQL