这是我参与「第三届青训营 -后端场」笔记创作活动的的第7篇笔记」
什么是架构
- 软件架构,有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。架构在实现一个软件的方法选择上起着至关重要的指导作用。
- 架构的要性
- 基础
- 单机架构,所有功能都能实现在一个进程里,并部署在一台机器上
- 优点:简单
- 排队C10K problem瓶颈,运维需要停服
- 单体、垂直应用|垂直切分
- 单体架构:分布式部署
- 垂直应用架构:按应用垂直切分的单体
- 优点:水平扩容,运维不需要停服
- 缺点: 指责太多,开发效率不高,爆炸半径大(每个师傅准备蛋糕要很多步骤)-》分工协作
- SOA、微服务|水平切分
- SOAservice oriented architecture
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准-不同服务间的沟通
- 微服务架构:SOA的去中性化演进方向,服务间的沟通技巧更加自由,SOA(共用一个沟通技巧-需要制定规则)-微服务对此进行拆分
- 问题:
- 数据一致性问题(分布式系统的挑战),装货台共交付了多少蛋糕
- 高可用,多个服务如何合作
- 治理,冗灾
- 截耦 vs 过微(需要拆分多少)
- SOAservice oriented architecture
企业级后端架构剖析
- 背景,如何扩大规模,未来方向、规划
云计算
- 通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石
- 更多的关注业务,而不需关注底层实现
- 基础:
- 虚拟化技术 如何编排- 整租 vs 合租
- 编排方案 - 业主 vs 租赁平台
- 架构
- IaaS infrastructure as a service,买房子 vs房屋租赁平台,交易过户 租赁平台
- PaaS platform, 清包(自己买材料) vs 全包(只负责出钱),装修
- SaaS, software, 从零培训 vs 雇佣培训过的师傅,培训带新、培训机构
- FaaS function, 纯手工制作 vs 蛋糕机批量生产
云原生
- 为组织、公司在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能
云原生,把数据库当作服务,需要什么使用场景,就去找什么类型的服务
从缓存里快速取“蛋糕”,缓存中没有就是缓存击穿,等待制作
企业级后端架构的挑战
并池(把池子合并在一起)
- 同一个机器如何做离在线隔离?cpu
- 虚拟化隔离cpu,划分set,离线用离线的cpu set,在线用在线cpu set
- 扩缩容依据什么指标?
- 根据不同场景
- 很多微服务 根据cpu的50百分之使用率数,或内存+cpu
两个服务之间的通信
- cpu水位差异——如何打平差异