《从0开始学架构》读书笔记
2023-07-11 08:35:40 1 举报
AI智能生成
极客课程 《从0开始学架构》 的阅读笔记
作者其他创作
大纲/内容
可扩展架构模式
1、基本思想和模式
面向数据流拆分
分层架构:展示层-业务层-数据层-存储层
面向服务拆分
SOA、微服务
面向功能拆分
微内核架构
2、分层架构
分层架构
C/S 架构、B/S 架构
MVC 架构、MVP 架构
逻辑分层架构:J2EE架构
SOA
服务、ESB、松耦合
3、微服务架构
和SOA的比较
需要注意的一些问题
微服务实践方法
1、拆分方法
2、基础设施
4、微内核
设计关键点:插件管理、插件连接、插件通信
架构模板
1、存储层
SQL
NOSQL
小文件存储
大文件存储
2、开发层技术
开发框架
Java 相关的开发框架 SSH、SpringMVC、Play,Ruby 的 Ruby on Rails,PHP 的 ThinkPHP,Python 的 Django 等
Web 服务器
Java 的有 Tomcat、JBoss、Resin 等,PHP/Python 的用 Nginx
容器
Docker
3、服务层技术
1. 配置中心
集中管理各个系统的配置
2、服务中心
解决上面提到的跨系统依赖的“配置”和“调度”问题
3、消息队列
4、网络层技术
1、负载均衡:将请求均衡地分配到多个系统上
DNS
Nginx 、LVS 、F5
2、CDN
将内容换存在离用户最近的地方
3、多机房
核心:如何处理时延带来的影响
5、用户层和业务层技术
用户层
用户管理
单点登录 SSO
授权登录 OAuth 2.0 协议
消息推送
消息推送根据不同的途径,分为短信、邮件、站内信、App 推送
存储云、图片云
业务层
随着复杂度越高,需要进行系统拆分
6、平台技术
运维平台
运维平台核心的职责分为四大块:配置、部署、监控、应急
测试平台
单元测试、集成测试、接口测试、性能测试等
数据平台
数据管理、数据分析和数据应用
管理平台
核心是权限管理
权限管理主要分为两部分:身份认证、权限控制
架构重构
待完成
基础架构
架构复杂度
复杂来源1:高性能
单机内部为了高性能带来的复杂(如多进程、多线程)
集群复杂:主要包括任务分配 和 任务拆分带来的复杂度
高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元。
复杂来源2:高可用
业务高可用分为:存储高可用+计算高可用
高可用状态决策1、独裁式 2、协商式 3、民主式
复杂来源3:可扩展
复杂来源4:低成本、安全、规模
低成本:服务器等的数量
安全:网络攻击
规模:功能规模的扩大,数据的扩大
架构设计原则
合适优于业界领先、简单优于复杂、演化优于一步到位
架构设计流程
1、设别复杂度
根据业务场景,识别在以上四个复杂度上的大致需求
2、设计备选方案
在架构设计时,备选方案可以大致提供
3、架构评估和选择
根据业务需求,按照优先级来选择
4、详细方案设计
其余
高性能架构模式
1、高性能数据库集群:读写分离
主从复制延迟
分配机制
2、高性能数据库集群:分库分表
业务分库
垂直分表
水平分表
3、高性能NoSQL
K-V 存储:解决关系数据库无法存储数据结构的问题,以 Redis 为代表
文档数据库:解决关系数据库强 schema 约束的问题,以 MongoDB 为代表
列式数据库:解决关系数据库大数据场景下的 I/O 问题,以 HBase 为代表
全文搜索引擎:解决关系数据库的全文搜索性能问题,以 Elasticsearch 为代表
4、高性能缓存架构
缓存穿透
缓存雪崩
缓存热点
5、单服务器高性能模式
操作系统的 I/O 模型及进程模型
Socket原理
PPC:每次有新的连接就新建一个进程去专门处理这个连接的请求
TPC:每次有新的连接就新建一个线程去专门处理这个连接的请求
Reactor:I/O 多路复用结合线程池,解决了 PPC 和 TPC 的问题
单 Reactor 单进程
redis
单 Reactor 多线程
多 Reactor 多进程
Nginx
多 Reactor 多线程
Memcache 和 Netty
Proactor 异步网络模型
6、高性能负载均衡:分类及架构
DNS 负载均衡
硬件负载均衡
和软件负载均衡的区别
软件负载均衡
Nginx:软件的 7 层负载均衡
LVS:Linux 内核的 4 层负载均衡
负载均衡组合的基本原则
7、高性能负载均衡:算法
任务平分类
轮询
加权轮询
负载均衡类
负载最低优先
性能最优类
先将任务分配给处理速度最快的服务器
Hash类
根据任务中的某些关键信息进行 Hash 运算,将相同 Hash 值的请求分配到同一台服务器上
高可用架构模式
1、CAP理论
概念:想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质
ACID
BASE : CAP 理论中 AP 方案的延伸
2、FMEA:故障分析与影响分析方法
3、高可用存储架构:双机架构
主备复制:备机只是备份数据,不负责读写
主从复制:主机负责读&写,从机进行读操作
双机切换
关键:主备间状态判断、切换决策、数据冲突解决办法
1、互连式:主备之间通过通过进行状态传递
2、中介式:主、备都将状态给中介
MongoDB 的 Replica Set
3、模拟式:备机模拟客户端,向主机发送请求获取状态
主主复制:两台机器都是主机,互相将数据复制给对方,客户端可以任意挑选其中一台机器进行读写操作
4、高可用存储架构:集群和分区
1、数据集群
数据集中集群:1 主多备或者 1 主多从,数据只能往主机写
数据分散集群:每台服务器都会负责存储一部分数据,提供读写
2、数据分区
5、高可用计算架构
主备:主机负责计算,备机不计算
主从:主机和从机计算不同的任务
集群
对称集群
非对称集群
6、业务高可用:异地多活架构
28-30
7、应对接口级的故障
核心思想:优先保证核心业务和优先保证绝大部分用户
1、降级
系统将某些业务或者接口的功能降低,可以是只提供部分功能,也可以是完全停掉所有功能
2、熔断
降级的目的是应对系统自身的故障,而熔断的目的是应对依赖的外部系统故障的情况
3、限流
限流指只允许系统能够承受的访问量进来,超出系统访问能力的请求将被丢弃
基于请求限流
基于资源限流
4、排队
案例
设计一个整点限量秒杀系统,包括登录、抢购、支付(依赖支付宝)等功能,你会如何设计接口级的故障应对手段
0 条评论
下一页