架构师技能栈
2021-06-25 15:18:44 2 举报
AI智能生成
架构师技术栈
作者其他创作
大纲/内容
架构师技能栈
架构方法
系统架构
架构师主要职责
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
技术选型、解决技术问题
优化系统性能
模块分解、微服务架构重构
保障系统安全、高可用
大数据应用
技术创新
沟通管理
架构师主要能力
编程
基础技术掌握
常用技术产品的理解与应用
性能优化、分析故障
常用架构模式、框架的理解应用
建模、设计文档的方法
业务理解、功能模块和非功能模块拆解
快速学习
沟通、领导力
架构师的特点
一定要关注场景
训练思维
构建知识体系
是顶帽子,不是椅子
是一个角色,不是一个职位
是做架构设计、对系统架构负责的那个人
4+1架构视图
4
1
逻辑视图 设计对象模型
相关方:客户、用户、开发组织管理者
视角:系统功能元素、以及他们的接口,职责、交互
主要元素:系统、子系统、功能模块、接口
主要元素:系统进程、线程、处理队列
用途:开发组织划分、成本/进度控制
过程视图 捕捉设计的并发和同步特征
相关方:性能优化、开发人员
视角:系统运行时进程、线程情况
用途:查看系统运行过程
物理视图 软件到硬件的映射,反映部署特性
相关方:系统集成商、运维人员
视角:系统逻辑组件到物理节点的物理部署, 节点直接的物理网络配置
主要元素:物理节点及节点间的通讯
用途:指导系统部署
开发视图 描述软件的静态组织结构
相关方:开发、测试人员
视角:系统如何开发实现
主要元素:系统的层、包、分区、架构、系统通用服务、业务通用服务、类、接口、系统平台、基础机构
用途:指导开发组织设计和开发实现
场景视图 用例场景
相关方:用户、设计、开发人员
视角:系统架构上最重要的场景以及非功能性需求,通过这些典型的场景实现,阐明架构的广度,众多元素的运行方式
主要元素:场景、真是场景
用途:看组织方式
UML统一建模语言
静态图
用例图
对象图
类图
组件图
包图
部署图
动态图
协作图
序列图
活动图
状态图
模型元素
类
对象
节点
包
组件
用例
接口
注释
关系
依赖
继承
实现
关联
聚合
组合
描述不变的逻辑结构
展示执行过程中变化过程
康威定律
第一定律:组织沟通方式决定系统设计
第二定律:时间在多一件事也不可能做的完美,但总有时间做完一件事
第三定律:线性系统和线性组织架构有潜在的异质同态性
第四定律:大的系统比小的系统更倾向分解
架构师层次划分
只关注功能
还关注非功能
性能
安全性
可用性
扩展性
运维管理
监控报警
故障修复
关注团队和管理
团队成员的特点
进度安排
开发过程
架构设计和项目管理完美融合
关注产品运营
运营是否合理方便
技术架构兼顾产品业务架构
关注最终价值
关注产品和团队未来
结合技术发展趋势
公司战略目标
个人及团队发展放向
产品未来发展前景
软件设计原则
好莱坞原则
历史
莱布尼兹1700年
微积分
二进制
Ada 纸带
图灵
冯诺依曼
编程语言
汇编语言
Basic语言
结构化的Basic
Perl脚本语言
C语言(结构化语言)
C++(兼容C,提供面向对象机制)
Java(完全面向对象)
抽象种类
对机器抽象
机器代码
汇编
对处理逻辑抽象
非结构化高级语言
Basic
Fortran
对问题领域抽象
结构化
C语言
直接表达问题空间内的元素
面向对象
Smaltalk
Java
C++
面向对象三要素
封装
隐藏实现
定义接口
接口重用
多态
对象交互
面向对象编程
目的
高内聚、低耦合
易扩展
更强壮
可移植
更简单
原则
23种设计模式
设计模式
创建模式
行为模式
结构模式
框架
对某一类架构方案的可复用的设计和实现
简化工作
很轻松写成结构良好的程序
例子:Mybatis、Spring、Tomcat
工具VS框架
框架调用应用代码
工具被应用调用
架构师用框架保证架构落地
用工具提高开发效率
OOD原则
OCP 开闭原则
对扩展开放
对更改关闭
抽象(接口)
DIP 依赖倒置原则
高层不依赖底层
大家都依赖抽象
抽象不能依赖实现
实现依赖抽象
LSP 里氏替换原则
继承关系的类 需要满足这个原则
即:子类必须能替换掉他们的父类
SRP 单一职责原则
一个某块里的功能应该相关
一个类智能有一个引起变化的原因
ISP 接口分类原则
不强迫客户程序 依赖他们不需要的方法
工厂模式
单例模式
适配器模式
组合模式
装饰器模式
模板方法模式
策略模式
高并发
垂直伸缩
水平伸缩
高可用
海量数据
分布广泛、网络复杂
安全环境恶劣
需求快速变更、发布频繁
渐进发展
架构演化
最简单
应用数据分离
使用缓存
应用服务器集群
数据库读写分离
反向代理、CDN加速
分布式文件系统、数据库系统
NoSQL、搜索引擎
业务拆分
微服务、中台化
大数据、智能化
架构模式
分层
分割
分布式
集群
缓存
异步
冗余
自动化
安全
核心要素
高性能
可伸缩
可扩展
前端架构
App、web技术
浏览器、http优化
cdn
动静分离
图片服务
反向代理
dns
网关应用层架构
网关架构
负载均衡
动态页面静态化
服务层架构
微服务框架
分布式消息队列
分布式缓存
分布式锁
存储层架构
分布式文件
分布式关系型数据库
NoSQL数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集、展示
数据监控、报警
攻击、防护
数据加密、解密
技术选型
缓存类型
cpu缓存
操作系统缓存
数据库缓存
jvm编译缓存
cdn缓存
代理和反向代理缓存
应用程序缓存
分布式对象缓存
关键指标(命中率)
缓存键集合大小
可使用内存空间
对象生存时间
消息队列、异步架构
构成
消息生产者
消息队列
消息消费者
模型(方案)
点对点模型
发布订阅模型
好处
异步处理、提升性能
伸缩性更好
肖峰填谷
失败隔离、自我修复
解耦
主要产品
RabbitMQ
ActiveMQ
RocketMQ
Kafka
架构
HTTP重定向
DNS
IP
数据链路层
算法
轮询
加权轮询
最少连接
源地址散列
应用服务器集群的Session管理
Session复制
Session绑定
用Cookie记录
Session服务器
分布式数据库
MySQL复制
主从复制
一主多从复制
分摊负载
专机专用
便于冷备
主主复制
数据分片
NoSQ
CAP原理
C 一致性
A可用性
P分区容错性
最终一致性
最终一致性写冲突
客户端解决
投票解决
Cassandra分布式解决
Hbase 架构
ZooKeeper
倒排索引
网页排序
PageRank算法(网页排名算法)
ElasticSearch架构
性能优化
性能测试
指标
响应时间
并发数
吞吐量
性能计数器
种类
负载
压力
稳定性
全链路压测挑战
数据构造
数据隔离
流量构造
压测平台
软件优化的一般方法
性能测试,获得性能指标
指标分析,发现瓶颈点
架构、代码分析、找到瓶颈关键所在
架构、代码优化,优化关键点,平衡资源利用
性能测试,闭环
性能优化分层思想
机房、骨干网络
服务器、硬件
操作系统
虚拟机
基础组件
软件架构
软件代码
性能优化三板斧
锁
V 要更新的变量
E 预期值
N 新值
偏向锁
轻量级锁
重量级锁
总线锁
缓存锁
公平锁
非公平锁
独享锁
互斥锁
共享锁
读写锁
乐观锁
悲观锁
分段锁
自旋锁
文件、硬盘
硬盘
机械硬盘
固态硬盘
RAIID独立硬盘冗余阵列
0
10
5
6
数据结构、算法
时间复杂度
空间复杂度
NP问题
数组
链表
Hash表
栈
队列
树
大量增删时,红黑树效率更高。红黑树平衡性差点,查找效率低
二叉排列树
不平衡的二叉排列树
平衡二叉排列树
红黑树
递归算法
贪心算法
改进的贪心算法
迪杰斯特拉算法(最快路径)
动态规划
解决背包问题
遗传算法
得到的不是最优解
选择算子
交叉遗传
Java虚拟机JVM
JVM
堆
Java栈
方法区
程序计数寄存器
JVM垃圾回收
JVM性能诊断工具
JPS
JSTAT
JMAP
JSTACK
JAVA代码优化
合理谨慎使用多线程
竞态条件、临界区
线程安全
内存泄漏
计算机任何问题都可以通过增加中间层解决
面向接口编程
7层网络协议
编程框架
一致性Hash算法的虚拟化实现
秒杀
设计原则
静态化
并发控制、防秒杀器
简化流程
前端优化
微服务
框架要满足的需求
服务的注册和发现、基本的服务调用
失效转移
高效的远程通信
堆应用的最少侵入
版本管理
Dubbo框架
服务注册中心 服务器
服务消费者 服务器
服务提供者 服务器
落地
命令与查询职责隔离
读写分离
事件朔源
断路器
服务重试和调用超时
最重要的时需求
Needs
Values
Principles
Practices
Tools
微服务网关
网关作用
统一接入
安全防护
协议适配
流量管理、容错
网关管道技术
网关本身没啥业务,主要做校验和拦截
使用责任链设计模式
DDD
组件设计原则
组件解耦原则
无循环依赖原则
稳定依赖原则
稳定抽象原则
组件内聚原则
复用发布等原则
共同封闭原则
共同复用原则
领域驱动设计
战略设计
领域
子域
界限上下文
上下文映射图
战术设计
实体
值对象
事件溯源
系统安全与高可用
安全架构
XSS攻击
SQL注入攻击
CSRF攻击
其他
Error Code错误回显
HTML注释
文件上传
路径遍历
2个9,99%一年88个小时不可用
3个9,99.9%一年大约9个小时不可用
4个9,99.99%一年大约53分钟不可用
5个9,99.999%一年大约5分钟不可用
引起的故障原因
硬件故障
软件bug
系统发布
并发压力
网络攻击
外部灾害
高可用架构
隔离
备份
幂等
事务补偿
重试
熔断
限流
自适应限流
降级
异地多活
高可用系统的运维
发布
自动化测试
自动化部署
预发布验证
代码版本控制
自动化发布
灰度发布
网站运行监控
监控数据采集
用户行为日志采集
服务器性能监控
业务运行数据报告
监控管理
大数据
发展史
Google三驾马车
GFS 分布式文件系统
MapReduce 分布式计算框架
BigTable NoSQL数据库
大数据应用发展史
搜索引擎时代
数据仓库时代
数据挖掘时代
机器学习时代
应用领域
医学影像智能识别
疾病大数据智能诊疗
AI外语老师
智能解题
舆情监控分析
大数据风控
新零售
无人驾驶
技术
HDFS
设计目标
超大文件
流式数据访问(一次写入多次读取)
商用软件
任何节点失败,不影响服务
MapReduce
处理海量数据(大于1T)
成百上千CPU并行处理
自动实现分布式并行计算
容错
提供状态监控工具
模型抽象简洁,程序员易用
Yarn
Yarn架构
资源管理器
节点管理器
Hive
Spark
为啥更快?
DAG切分的多阶段计算更快
使用内存寸中间计算结果
RDD编程模型更简单
弹性分布式数据集(Resilient Distributed Datasets)
Hadoop
Storm
实时的Hadoop
低延时
Flink
流处理计算
批处理计算
HiBench
大数据可视化
运营常用指标
新增用户数
用户留存率
活跃用户数
PV
GMV
转化率
可视化图标、监控
折线图
散点图
热力图
漏斗图
大数据算法、机器学习
网页排名算法
PageRank
让PageRank来投票
KNN分类算法
数据距离算法
提取文本特征值TF-IDF算法
贝叶斯分类算法
K-means聚类算法
推荐引擎算法
搜电影
基于人口特征推荐(打标签)
基于用户的协同过滤推荐
基于商品的协同过滤推荐
机器学习
样本
模型
神经网络
应用
识别手写数字
围棋AI
挑战
数据采集、导入
数据处理
数据输出、展示
工具
用Sqoop导入导出数据库数据
用Canal实时导入MySQL数据
用Flume从日志导入数据
Flume级联部署
Flume分布式部署
前端埋点采集数据
爬虫爬取外部数据
案例
淘宝大数据平台
美团大数据平台
滴滴实时大数据平台
区块链
比特币
工作量证明
旷工
以太坊
Facebook发布的Libra
稳定币
许可型区块链
联盟链技术
HyperLedger
Tairuem
如何成为专家
技术等级
行业开创者
领域开创者
关键开创者
全球影响着
公司影响着
团队影响者
德雷福斯模型
专家
精通者
胜任者
高级新手
新手
彼德定理
一个优先的员工会晋升
会持续晋升,到不能胜任为止
推论:所有的职位都是不能够胜任的人承担
软件开发第一性原理
这个技术的核心关键点是什么?要解决的问题是什么?
过往有没有类似的技术?核心设计是否相通?
这些问题应该用何种模式解决?
第一性原理实践
5分钟于都一个HelloWord级文档 demo
30分钟做一个Hello World 体验一下
2个小时阅读关键设计文档和代码
如果我来开发,将如何设计,关键技术如何处理
架构师的三板斧
设计文档
UML建模设计
部署图:描述系统的整体蓝图
组件图:描述系统模块关系
类图:关键类的设计和领取模型
用例图:功能和场景
逻辑流程:活动图、泳道图
时序图:参与对象之家的调用关系
状态图:复杂对象的状态变迁
作用
没有设计文档就没有设计,那就没有架构师啥事
停一下思考更好的方案
给开发着、维护者必要的资料
低耦合、高内聚
软件的核心驱动力和目标
开闭
依赖倒置
里氏替换
单一职责
接口隔离
工厂
适配器
策略
观察
模板方法
装饰
开发框架
Spring
Mybatis
反应式flower
分布式架构
分布式缓存、消息队列、负载均衡
分布式关系数据库、NoSQL、搜索引擎
分布式一致性Zookeeper
微服务架构
领域驱动设计DDD、服务复用、中台化
微服务框架Dubbo、RPC
大数据架构
大数据平台架构
数据采集、分析
数据推荐、智能化
技术领导者的7种武器
交际
情景
目标
资源
评估
导师
赞美
0-6级 每层是80%人群
很多人一生都是高级新手
0 条评论
回复 删除
下一页