架构 | 青训营笔记

108 阅读3分钟

这是我参与「第五届青训营」伴学笔记的第8天

架构演进

架构的演进就像做蛋糕

单机

软件系统需要具备对外提供服务,单机,就是把所有功能实现在一个系统内部;也就是一个师傅单干做蛋糕(从买到做一条龙全包)
缺点:运维需要停服

单体、垂直应用|垂直切分

单体架构:分布式部署;做蛋糕的师傅全部蛋糕类型都要会
垂直应用架构:按应用垂直切分的单体;做蛋糕的师傅只要会一类就好(这一类蛋糕包括做蛋糕的所有过程)
缺点:指责多,效率低,爆炸半径大

SOA、微服务|水平切分

SOA:将应用的不同功能单元抽象为服务,定义服务之间的通信标准;(烤、裱花等分人来做)
微服务架构:SOA的去中心化演进方向

企业级后端架构剖析

蛋糕店做大啦,现在面临人手不够,店面扩张以及未来规划的问题

云计算

**高级解释 **:通过软件自动化管理,提供计算资源的服务网络。
基础(类比做蛋糕):

  • 虚拟化技术 - 整租 vs 合租
  • 编排方案 - 业主 vs 租赁平台
    架构(分四层):
  • laaS 买房子 vs 房屋租赁平台
  • PaaS 清包(材料自己买,只顾装修公司来装修) vs 全包
  • SaaS 从零培训 vs 雇佣培训过的师傅
  • FaaS 纯手工制作 vs 蛋糕机批量生产

云原生

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

弹性资源:虚拟化容器,快速扩缩容

  • 弹性计算资源类型:
    • 服务资源调度:
      微服务:和面、雕花
      大服务:烤箱
    • 计算资源调度:
      在线:热销榜单
      离线:热销榜单更新
    • 消息队列:
      在线:削峰、解耦
      离线:大数据分析
  • 弹性存储资源类型:
    • 经典:
      • 对象:存储视频
      • 大数据:用户消费记录
    • 关系型数据库
      • 收银记录
    • 元数据
    • NoSQL
      总结:将存储资源当成服务一样

微服务架构

通信标准:

  • HTTP(RESTful API)
  • RPC(gRPC)
    微服务中间件RPC vs HTTP:
  • 性能(RPC更好)
  • 服务治理
  • 协议可解释性(HTTP更好)

DevOps:敏捷开发,CI/CD

结合自动化流程,提高软件开发、交付效率,是一种工作流

服务网格:业务与治理解构

  • 微服务之间通讯的中间层
  • 高性能网络代理
  • 业务代码与治理解耦

相比较于RPC/HTTP框架:

  • 异构系统治理统一化
  • 与业务进程解耦,生命周期易于管理

企业级后端架构的挑战

挑战

  • 物理资源有限(机器、带宽)
  • 资源利用率受制于部署服务

解决思路1:离在线资源并池
在线业务的特点:IO密集型为主,潮汐性、实时性
离线业务的特点:计算密集型为主,非实时性
解决思路2:自动扩缩容
扩缩容指标:看服务占据CPU和内存的大小
解决思路3:微服务亲和性部署

  • 将满足亲和性条件的容器调度到一台宿主机
  • 微服务中间件与服务网格通过共享内存通信
  • 服务网格控制面实施灵活、动态的流量调度

用户层面

  • 网络通信开销大
  • 网络抖动导致运维成本高
  • 异构环境下,不同实例资源水位不均