大作业
架构师
是什么
做架构设计、对系统架构负责的那个人
一顶帽子,而不是一把椅子
一个角色而不是一个职位
定律
康威定律
设计系统的架构受制于产生这些设计的组织的沟通结构
第一定律
组织沟通方式决定系统设计
架构设计不仅仅是关于系统的设计,也是关于开发组织方式的设计
架构师要关注公司的组织结构,公司的运行方式
架构师要关注团队的成员构成,技术水平
架构师要对项目计划负责
第二定律
时间再多一件事情也不可能做的完美,但总有时间做完一件事情
架构是权衡的艺术,没有正确的架构,只有合适的架构;没有完美的架构,但是有灵活的架构
架构师如何面对压力,保守还是激进,目光长远还是只看眼前,将反映在他的架构设计中
真正重要的事,只有一件:完成任务
第三定律
线形系统和线型组织架构间有潜在的异质同态特性
如果你的团队成员职责混乱,那么你将会设计出一个混乱的系统
每个设计混乱、故障不断的系统背后,都有一个混乱、没有战斗力的团队。重构这样的系统,首先要重构开发团队
架构师不是救世主,在拯救项目之前,先拯救自己
第四定律
大的系统总是比小系统理倾向于分解
随着系统变得更大、更复杂,系统重构拆分是一种必然的冲动
所有能持续发展的系统,都必然变得更大、更复杂
架构师将在系统重构拆分中奠定(失去)自己的技术威望
随着系统发展,微服务架构是一种必然的架构选择,但并不一定是一开始最好的选择。
架构方法
如何成为架构师
什么是软件架构
有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计
架构设计文档包含哪些方面
单例
cap原理
性能测试
流程
指标
数据库索引如何存储
Java虚拟机垃圾回收原理
DDD
是什么
优缺点
系统故障
单向散列加密
为什么可以保护用户密码安全
spark
为什么比MapReduce快
推荐
不同用户不同商品,如何做到
使用哪些算法
Google排序
区块链
无法被篡改
边缘计算
是什么
重构
如何说服
子主题 18
工作职责
编写架构设计文档 w1
4+1视频模型
逻辑视图
从静态结构的角度描述系统的功能
过程视图
从动态行为的角度描述系统的功能
物理视图
从部署角度描述系统
哪台设备部署什么程序
程序之间如何通信
开发视图
从开发者的角度描述系统,主要包括
模块划分
包划分
依赖包版本
场景视图
从外部用户的角度描述系统功能,主要包括如下内容:
系统边界
系统用户
功能场景
UML语言
何时
讨论、交流时
何处
draw.io
有哪些
静态图
用例图
对象图
类图
组件图
包图
部署图
动态图
协作图
序列图
活动图
状态图
元素
通用模型元素
类
对象
结点
包
组件
关系
关联
泛化
依赖
聚合
模型
是什么
系统的完整的抽象
目的
为了证明某件事物能否工作
为了与他人沟通
为了保存软件设计的最终成果
前提
建造模型的成本远低于建造实物的成本
模型比代码更说明问题
开发编程框架 w2
oop
目的
强内聚
低耦合
易扩展
更强壮
可移植
更简单
原则
开/闭原则(OCP)
对扩展开放
对更改封闭
依赖倒置(DIP)
里氏替换(LSP)
单一职责(SRP)
接口分离(ISP)
设计模式
创建模式
工厂模式
单例模式
适配器模式
行为模式
模板方法模式
策略模式
结构模式
组合模式
装饰器模式
重构软件代码 w3
设计系统架构 w4
挑战
高并发
大流量
高可用
海量数据
用户分布广泛,网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
渐进式发展
技术方向
垂直伸缩
水平伸缩
演化
最简单
一、应用数据分离
二、使用缓存改善系统性能
三、服务器集群增加并发能力
四、数据库读写分离
五、反向代理,CDN加速
六、分布式文件系统和分布式数据库系统
七、NoSQL和搜索引擎
八、业务拆分
九、微服务及中台化
十、大数据与智能化
架构模式
分层
分割
分布式
集群
缓存
异步
冗余
自动化
安全
核心要素
高性能
高可用
可伸缩
可扩展
安全
前端架构
App及Web开发技术
浏览器及HTTP优化技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
NoSQL数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
技术选型 w5
分布式缓存架构
缓存关键指标
命中率
一致性hash算法
缓存不适用
频繁修改
没有热点
数据不一致
缓存雪崩
缓存预热
缓存穿透
消息队列与异步架构
要素
消息生产者
消息队列
消息消费者
好处
提升性能
gqvb伸缩
削峰填谷
失败隔离和自我修复
解耦
负载均衡架构
HTTP重定向负载均衡
DNS负载均衡
反向代理负载均衡
IP负载均衡
数据链路层负载均衡
分布式数据库
MySQL复制
主从
一主多从
主主复制
数据分片
分布式数据库中间件
NoSQL
CAP原理
A可用性
C一致性
P分区耐受性
最终一致性
ZooKeeper
分布式系统脑裂
数据库主主备份
Zab协议
搜索引擎
文档矩阵与倒排索引
Lucene
ElasticSearch
PageRank算法
Doris
海量KV Engine
解决技术问题 w6
优化系统性能 w7-9
性能测试
视角
主观:用户感受
客观:性能指标
指标
响应时间
并发数
吞吐量
性能计数器
System Load
线路数
进程数
CPU
内存
磁盘
网络使用率
方法
性能测试
负载测试
压力测试
稳定性测试
全链路压测
数据构造
数据隔离
流量构造
全链路压测平台化
性能优化
原则
不能优化一个没有测试的软件
不能优化一个你不了解的软件
方法
性能测试,获取性能指标
指标分析,发现性能与资源瓶颈点
架构与代码分析,寻找性能与资源瓶颈关键所在
架构与代码优化,优化关键技术点,平衡资源利用
性能测试,进行性能优化闭环
分层思想
机房与骨干网络
服务器与硬件性能
操作系统性能
虚拟机性能
基础组件性能
软件架构性能
缓存
异步
集群
软件代码性能
面向对象的设计原则与设计模式
迸发编程,多线程与锁
资源复用,线程池与对象池
异步编程,生产者消费者
数据结构,数组、链表、hash表、树
穷举算法
递归算法
贪心算法
动态规划
数据库架构原理与性能优化
预编译
数据库架构
连接器
语法分析器
语义分析与优化器
执行计划
秒杀
设计原则
静态化
并发控制
限制进入秒杀页面
1000
限制进入下单页面
100
限制进入支付系统
56
简化流程
前端优化
秒杀器的预防
URL随机
订单ID随机
模块分解与微服务架构重构 w10
微服务
职责
失效转移
负载均衡
高效的远程通信
对应用最少侵入
版本管理
落地
命令与查询职责隔离(CQRS)
事件溯源
断路器
服务重度及调用超时
微服务网关
作用
统一接入
安全防护
协议适配
流量管控与容错
角色
网关
服务注册中心
服务提供者
网关管道技术
Flower异步网关与异步框架
领域驱动设计DDD
贫血模型
充血模型
子域
限界上下文
上下文映射图
实体
值对象
聚合
DDD分层架构
用户接口层
应用层
领域层
DDD六边形架构
战略设计
领域
子域
限界上下文
上下文映射图
战术设计
实体
值对象
聚合
CQRS
事件溯源
组件设计原则
软件的复杂度和它的规模成指数关系
组件内聚原则
复用发布等同原则
共同封闭原则
共同复用原则
组件耦合原则
无循环依赖原则
稳定依赖原则
稳定抽象原则
RPC协议实现原理
通讯协议
网络通信协议
编码传输协议
常见模式
定长协议
特殊结束符协议
变长协议
保障系统安全与高可用 w11
安全架构
XSS攻击
SQL注入攻击
CSRF攻击
ErrorCode
HTML注释
文件上传
路径遍历
加密
单赂散列加密
子主题 2
对称加密
非对称加密
反垃圾邮件
贝叶斯分类算法
布隆过滤器黑名单
电子商务
风险
账户风险
买家风险
卖家风险
交易风险
控制
规则引擎
机器学习
高可用
指标
多少个9
QQ:4个9(一年大约53分钟不可用)
定性描述
2个9
基本可用
年度停机时间小于88小时
3个9
较高可用
年度停机时间小于9小时
4个9
高可用
年度停机时间小于53分钟
5个9
极高可用性
年度停机时间小于5分钟
架构
解耦
隔离
异步
备份
失效转移
幂等
事务补偿
重试
熔断
限流
降级
异地多活
运维
发布
自动化测试
自动化部署
预发布验证
代码版本控制
自动化发布
灰度发布
网站运行监控
不允许没有监控的系统上线
监控数据采集
用户行为日志收集
服务器性能监控
业务运行数据报告
监控管理
报警
自动控制
价值观
保持简单
目标明确
价值回归
大数据应用 w12-13
领域
医学影像智能识别
病历大数据智能诊疗
AI外语老师
智能解题
舆情监控与分析
大数据风控
新零售
无人驾驶
HDFS
设计目标
超大文件
流式数据访问
商用硬件
不适用场景
低延迟数据访问
大量小文件
多用户随机写入修改文件
MapReduce
目的
处理海量数据
上百上千CPU实现并行处理
特性
自动实现分布式并行计算
容错
提供状态监控工具
模型抽象简洁,程序员易用
适用
TopK
K-means
Bayes
SQL
Yarn
Yet Another Resource Negotiator
下一代MapReduce框架的名称
架构
资源管理器
调度器
应用程序管理器
节点管理器
Hive
Spark
特点
DAG切分的多阶段计算过程更快速
使用内存存储中间计算结果更高效
RDD的编程模型更简单
流计算
Storm
HiBench
大数据可视化
数据大屏
互联网运营常用数据指标
新增用户数
用户留存率
用户流失率
活跃用户数
PV
GMV
转化率
大数据算法与机器学习
PageRank
KNN分类算法
数据的距离算法
TF-IDF算法
提取文本的特征值
贝叶斯分类算法
K-means聚类算法
推荐引擎算法
技术创新 w14
大数据平台
物联网平台
区块链
沟通管理 w15
成为专家
勇于承担责任
在实践中保持技能
警惕银弹陷阱
架构师的三板斧
设计文档
设计模式
架构模式
发现真正的问题
你的灯亮着吗?
问题不重要,未来才重要
技术领导者的7种武器
交际
情景
目标
资源
评估
导师
赞美
主要能力
编程能力
基础技术掌握能力
常用技术产品的理解与应用能力
性能优化与分析故障的能力
常用架构模式和框架的理解与应用能力
建模以及设计文档的方法和能力
业务理解与功能模块及非功能模块拆解能力
快速学习能力
沟通与领导能力
评论