Go语言学习11 | 青训营笔记

45 阅读2分钟

这是我参加「第五届青训营」伴学笔记创作活动的第11天

架构的定义

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。简单来说,架构就是指导软件在实现方法上的选择。

架构类型

单体架构

软件系统需要对外提供服务,单机就是把所有功能都实现在一个进程里,并将其部署在一个架构上。其优点是简单,但是存在C10K的问题,而且在维护时需要停服

垂直应用架构

单体架构:分布式部署 垂直架构:按照应用进行垂直切分的单体。 垂直应用的架构是可以水平扩容,在运维时不需要停服,问题是其指责过多,开发效率不高,爆炸半径太大。

微服务架构

将应用的不同功能单元抽象为服务,并定义服务之间的通信标准。问题在于数据的一致性怎么保证,如何正确的计算数据的吞吐量,当某项服务出现问题时,程序该如何继续运行下去

云计算

云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石,其基础是:

  • 虚拟化技术:硬件(虚拟机)、操作系统(容器)、网络
  • 编排方案:虚拟机编排方案(OpenStack)、容器编排方案(Kubernetes)

云原生

云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。

云原生之弹性计算资源

弹性计算资源类型:

  • 服务资源调度
    • 微服务
    • 大服务
  • 计算资源调度
    • 在线:热销榜单
    • 离线:热销榜单更新
  • 消息队列
    • 在线:削峰、解耦
    • 离线:大数据分析

云原生之弹性存储资源

弹性存储资源类型:

  • 经典
    • 对象:宣传视频
    • 大数据:用户消费记录
  • 关系型数据库
  • 元数据
  • NoSQL