架构师知识体系
2020-09-22 21:38:57 1 举报
AI智能生成
架构师知识体系汇总,持续更新中
作者其他创作
大纲/内容
能力模型
知识
思想
技巧
品质
创新
素养
前端架构知识体系
参考资料
https://juejin.im/post/5c99bf2ef265da611a566451
架构师知识体系
消息队列
为什么要用消息队列
异步
业务解耦
消峰
使用消息队列有什么副作用
增加系统复杂度,降低系统的可靠性
消息丢失
重复消费
如何保证消息的顺序
各种消息队列对比
吞吐量
ActiveMQ<RabbitMQ<RocketMQ<Kafka
topic数量对吞吐量的影响
ActiveMQ
无topic
RabbitMQ
RocketMQ
topic可以达到几百,几千个的级别,吞吐量会有较小幅度的下降
Kafka
topic从几十个到几百个的时候,吞吐量会大幅度下降
时效性
ms级
微秒级
可用性
高,基于主从架构实现高可用性
非常高,分布式架构
非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
消息队列如何保证高可用性
基于主从架构实现高可用性
单机模式
普通集群模式
镜像集群模式
如何保证消息不被重复消费
消息队列本身不保证消息可能会被重复消费,需要业务考虑保证幂等性
如何处理消息丢失的问题
通过事务机制或者是confirm模式来保持消息不丢失
分布式技术体系
分布式框架
dubbo
spring cloud
Eureka
Fegin
Ribbon
k8s
service mesh
SLA(Service-Level Agreement)服务等级协议
多少个9
准确性
错误率
系统容量
QPS (Queries Per Second)
RPS
延迟
P95:95%的延迟小于1ms
可扩展性
水平扩展
垂直扩展
一致性
强一致性
弱一致性
最终一致性
持久性
数据库
关系型
非关系型
缓存
批处理&流式处理
面试问题汇总
2019-12-23-华为-徐东云
特点
中台建设
敏捷项目管理
API网关
服务治理架构
服务规范,架构与技术体系
如何做架构设计的
核心概念
prod
配置
项目结算
金融领域
结算
支付
华为CRM
碧桂园
规划
评审
iT队伍
针对企业
性能优化
数据库优化
数据怎么保证数据不丢失数据
唯一索引和普通索引
应该
数据总线队列
canal
otter
kettle
高并发高可用技术体系
概述
好的软件设计
解决好现有需求和眼前的问题
把控实现与进度的风险
预测与规划未来
不过度设计,从迭代与演进中完善
1.1 高并发原则
1.1.1 无状态
有状态的系统无法水平扩展
1.1.2 拆分
拆分系统支撑多实例部署
拆分维度
系统维度
功能维度
读写维度
切面维度
日志
监控
分布式配置
模块维度
工程维度,package维度的拆分
1.1.3 服务化
单体->集群->服务拆分
1.1.4 消息队列
解决高并发情况下的流量冲击
1.1.5 数据异构
解决分库分表查询需求的问题
1.1.6 缓存银弹
1.1.7 并发化
1.2 高可用原则
1.2.1 降级
在保证核心服务的可用性前提下,通过降低非核心业务的SLA来保障核心服务的可用性
1.2.2 限流
防止恶意攻击
防止流量超过了系统的最大极限导致系统挂死
1.2.3 切流量
1.2.4 可回滚
1.3 业务设计原则
1.3.1 防重设计
防止重复提交,比如订单的重复提交
1.3.2 幂等设计
1.3.3 流程可定义
1.3.4 状态与状态机
1.3.6 后台系统审批化
第2 部分 高可用
负载均衡Nginx
负载均衡算法
失败重试机制
健康检查机制
动态负载均衡
隔离
进程线程隔离
集群/机房隔离
读写隔离
动静隔离
爬虫/热点隔离
使用Hystrix隔离
基于Servlet3隔离
限流
限流的目标
限定接口或者服务的访问此时,以防止超过系统最大承受极限(异常),业务有需要防止接口的调用(业务需要)
限流算法
令牌桶
降级特技
降级方案的考虑
将不同降级场景划分等级,再对业务接口设置降级时依据这些等级标准,设置对应的降级级别
降级方式选型
自动降级
手工降级
降级应用的场景,按照请求链路分为
前端
页面资源获取的降级
应用层
服务接口
数据存储
读降级
写降级
切面功能降级
爬虫
log
风控
降级的触发条件
5.2.1 超时降级
5.2.2 统计失败次数降级
5.2.3 故障降级
5.2.4 限流降级
6 超时与重试机制
解决的问题
接口响应慢导致,请求堆积影响导致额外
重试设置不合理导致业务逻辑错误,重试次数过多造成压力
应用的场景,按照请求链路分为
客服端-浏览器超时
接入层如Nginx
Nginx的超时
Tomcat超时设置
中间件
rpc
rest
数据访问层
sql
redis
MongoDB
7 回滚机制
事务回滚
本地事务
分布式事务
事务表
事务补偿机制
TCC模式
sagas模式
拆分事务+补偿机制
第3 部分 高并发
10 H T T P缓存
9 应用级缓存
9.3 缓存回收策略
基于空间,基于缓存kv数,时间
子主题
9.3.5 回收算法
FIFO
LRU
LFU
9.4 Java缓存类型
堆内缓存
guava cache
ehcache
Mapdb
堆外缓存
磁盘缓存
分布式缓存
9.6 缓存使用模式实践
9.6.1 Cache-Aside
9.6.2 Cache-As-SoR
9.6.3 Read-Through
缓存问题记录
并发更新导致数据不一致的问题
防止并发更新
只有个线程会更新
采用删除缓存,在加载的方式
采用通知机制,如canal订阅binlog通知缓存更新
11 多级缓存
12 连接池线程池详解
12.1 数据库连接池
13 异步并发实战
14 如何扩容
15 队列术
15.2 缓冲队列
15.3 任务队列
https://github.com/xingshaocheng/architect-awesome
https://www.w3cschool.cn/architectroad/architectroad-optimization-of-seckilling-system.html
应用服务器
Tomcat
Tomcat架构图
Service架构图
链接器Connector处理
容器(engine)处理流程
jetty
软件品质管理
品质预防
开发品质
运营品质
事件驱动
事件接口
事件生产者
事件消费者
Java并发编程
并发编程的核心问题
分工,同步,互斥
线程安全性
原子性
可见性
有序性
对象的安全性
不可变对象
final关键字
不可变方法
线程封闭
同步容器
并发容器
AQS J.U.C组件
线程调度
队列
应用拆分
扩容
数据库切分
Java并发编程中的工具
synchronized
原子类
Atomic
CountDownLatch
Lock
ReentrantLock
ReadWriteLock
Semaphore
CyclicBarrier
Executor
Future
FutureTask
CompletableFuture
CompletionService
Fork/Join
Reactor
数据中台
统一数据
oneID
统一服务
oneService
参考学习资料
36-大规模数据处理实战
19-数据分析实战45讲
21-从0开始学大数据
30-推荐系统三十六式
大数据技术平台
大数据技术体系
存储
HDFS
NOSQL
HBase
Cassandra
计算
批量计算
MapReduce
Spark
Spark狭义来讲只是MapReduce的替代方案,在数据存储,资源调度上还需要依赖其他的方案
分布式数据集RDD+针对Rdd的各种处理函数
广义来讲Spark生态还有
Spark SQL
Spark Streaming
机器学习MLlib
图形处理
GraphX
统计分析的 SparkR
RDD
原理图
不可变
transform后生成新的RDD
并行计算
流式计算
Storm
Flink
Spark Streaming
DStream
DataFrame
Apache Beam
FlumeJava
分析
HIVE
后来脱离了对Hive的依赖,直接开发了独立的Spark SQL体系
最开始它修改了hive的内存管理模板,性能是hive的十倍
机器学习,挖掘
TensorFlow
Mahout
MLlib
Hadoop
是集合了计算,存储,分析一套大数据解决方案
数据存储层:分布式文件存储系统 HDFS,分布式数据库存储的 HBase
数据处理层:进行数据处理的 MapReduce,负责集群和资源管理的 YARN;
数据访问层:Hive、Pig、Mahout……
大数据处理模式
单一数据处理
复制模式(Copier Pattern)
过滤模式(Filter Pattern)
分离模式(Splitter Pattern)
合并模式(Joiner Pattern)
人工智能
26-人工智能基础课
37-AI技术内参
技术管理
29-朱赟的技术管理课
软件研发品质管理方案
18-技术管理实战36讲
技术判断力
这个技术解决了哪些痛点
别的技术为什么不能解决
这个技术用怎么样的方法解决问题
采用这个技术真的是最好的吗?
如果不用这个技术,你会怎么独立解决这类问题
数据存储知识
引用的使用规则
分桶模式
列转行
版本字段
事务
写操作
写操作时可能存在数据丢失
Write Concern
只是增加了写操作的等待时间,不会增加数据库的压力,因为最终写操作都会同步到节点上
journal
true时必须要写到日志文件才算成功
false写到内存才算成功
读数据
从哪里读,读的位置
readpreference
primary
primaryPrefered
优先从主节点读
Mysql
MySQL原理架构
架构图
长连接,段链接
查询缓存
分析器
词法分析
语法分析
优化器
执行器
日志系统
redo log
属于MySQL 存储层的日志
属于innodb
属于物理日志,记录了数据页上做了什么修改
循环写,覆盖写
bin log
属于MySQL server层的日志
属于逻辑日志,记录的是sql的操作
追加写
MySQL事务隔离级别
原子性,隔离性,一致性,持久性
隔离级别
读未提交
读提交
读可重复
串行化
索引
MySQL索引模型
InnoDB模型
B+树索引模型
索引类型
主键索引,又称聚簇索引
索引的叶子节点存放的是整行的数据
覆盖索引
联合索引
建立联合索引时如何安排索引字段的顺序
最左前缀原则
索引下推原则
锁
全局锁
Flush tables with read lock
表级锁
行锁
myisam不支持
innodb支持
分布式搜索引擎
基本概念
es
solr
lucene
倒排序索引
es的分布式架构原理
index
type
mapping
document
架构设计方法论
DDD领域驱动设计
领域、子域、核心域、通用域和支撑域
范围,范围类型
安全知识体系
105-安全攻防技能30讲
安全原则
CIA
机密性,完整性,可用性
机密性用一句话来说就是,确保数据只被授权的主体访问,不被任何未授权的主体访问
数据的存储、传输和处理过程也需要受到应有的保护。这些保护技术包括:加密、隔离、混淆、隐藏等等
黄金法则,IAAA
识别、认证、授权、审计、问责
加解密
对称加密算法
代表加密和解密使用的是同一个密钥
非对称加密算法
非对称加密代表加密和解密使用不同的密钥
授权&访问控制
模型
主体
人
客体
资源
请求
增删改查
访问控制机制
DAC:就是让客体的所有者来定义访问控制规则
第三方授权登录
Linux中文件控制机制
role-BAC:基于角色的访问控制
基于角色的权限
图解
威胁评估
识别数据,识别攻击,识别漏洞
安全攻防
XSS
0 条评论
下一页
为你推荐
查看更多