这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
目录
- 架构初探-谁动了我的蛋糕
- 什么是架构
- 企业级后端架构剖析
- 企业级后端架构的挑战
后端架构实战
什么是架构
架构,又称软件架构
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各方面的设计
我个人理解就是就是软件的整体设计,比如修建房屋之前需要先设计好,否则修一点加一点,就容易弄的乱七八糟。除了设计,应该还有对于软件维护和运营的考虑和规划。
单机
把所有功能都实现在一个进程里,并部署在一台服务器上。优点是简单,缺点是运维需要停服,C10k problem(单机所能处理的最大请求10k,最早的单机系统是一个tcp分配一个线程)
单体、垂直应用|垂直切分
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体
优点是:可以水平扩容,运维不需要停服,缺点是:职责太多,开发效率不高,爆炸半径大(一个环节故障了,其他组件可能也无法进行服务)
SOA、微服务|水平切分
SOA(Service-Oriented Architecture)面向服务的体系结构
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
微服务架构:SOA去中心话演进方向
Problem:
- 数据一致性
- 前台收到的蛋糕数和后台制作的一致吗
- 高可用
- 这么多师傅,如何合作
- 治理
- 烤箱坏了,怎么容灾
- 解耦 vs 过微
- 运维成本高了,值得吗
架构演进的初衷:好比做蛋糕
- 需求量越大,人数也需要更多
- 推出越多的蛋糕种类,终归要分工合作
架构演进的思路:随着项目发展的更大,终归要进行水平和垂直切分
企业级后端架构剖析
当蛋糕店需要进行扩大时就会出现如下问题:
- 店面是租还是买
- 如何去找更多的蛋糕师傅 (增添人员)
- 是否继续纯手工制作(改变服务质量)
- 以后的作重心:
- 提高收益
- 梳理方向 & 进行规范
云计算
是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
基础:
- 虚拟化技术 整租 vs 合租
- 编排方案 业主 vs 房屋租赁平台
架构:
- IaaS (Infrastructure as a Service)
- PaaS (Platform as s Service)
- SaaS (Software as a Service)
- FaaS (Function as s Service)
云原生之弹性计算资源
- 服务资源调度
- 微服务: 和面、雕花
- 大服务: 烤箱
- 计算资源调度
- 在线: 热销榜单
- 离线: 热销榜单更新
- 消息队列
- 在线: 削峰、解耦
- 离线: 大数据分析
云原生之弹性存储资源
把存储资源当成服务
- 经典
- 对象: 宣传视频
- 大数据: 用户消费记录
- 关系型数据库
- 在线: 收银记录
- 元数据
- 服务发现: 蛋糕店通讯录
- NoSQL
- KV: 来个 xx 蛋糕
云原生之微服务架构
通信标准:
- HTTP (RESTful API)
- RPC (Thrift gRPC)
云原生场景下,微服务不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。
企业级后端架构的挑战
挑战
- 基础设施
- 物理资源是有限的(机器带宽,内存)
- 资源利用率受制于部署服务
- 用户层面
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均