架构师 0 期 | 架构师大作业(架构师技术图谱)

用户头像
刁架构
关注
发布于: 2020 年 09 月 17 日
架构师 0 期 | 架构师大作业(架构师技术图谱)

架构师训练营所有技术知识点

用一张思维导图画出所有训练营知识点。

提交xmind格式的思维导图文件或思维导图导出的图片文件。

知识点细节程度不低于以下示例:



XMind格式

架构师训练营技术相关的内容已全部结束,现对本课程中全部知识点进行了总结。

一来做一个整体回顾,二来作为日后架构的一个参考手册查阅。

具体内容如下,请查阅:





Markdown格式

架构师技能栈



1. 架构方法



架构师如何做架构?



如何成为架构师?



架构师的主要职责



  • 编写架构设计文档

  • 开发编程框架

  • 重构软件代码

  • 设计系统架构

  • 技术选型,解决技术问题

  • 优化系统性能

  • 模块分解、微服务架构重构

  • 保障系统的安全、高可用

  • 大数据应用

  • 技术创新

  • 沟通管理



架构师的主要能力



  • 编程

  • 基础技术掌握

  • 常用技术产品的理解与应用

  • 性能优化、分析故障

  • 常用架构模式、框架的理解和应用

  • 建模、设计文档的方法

  • 业务理解、功能模块和非功能模块拆解

  • 快速学习

  • 沟通、领导力



架构师的特点



  • 一定要关注场景

  • 训练的是思维

  • 构建知识体系

  • 是一顶帽子、不是椅子

  • 是一个角色、不是职位

  • 是做架构设计、对系统架构负责的那个人



4+1 架构视图



  • 逻辑视图

  • 过程视图

  • 物理视图

  • 开发视图

  • 场景视图



UML 统一建模语言



  • 静态图

  • 动态图

  • 模型元素

  • 关系(也是模型元素)



康威定律



  • 第一定律:组织沟通方式决定系统设计

  • 第二定律:时间再多一件事也不可能做的完美,但总有时间做完一件事

  • 第三定律:线型系统和线型组织架构有潜在的异质同态特性

  • 第四定律:大的系统总比小的系统更倾向于分解



架构师层次划分



  • 只关注功能

  • 还关注非功能

  • 关注团队和管理

  • 关注产品运营

  • 关注产品和团队未来



2. 软件设计原则



历史



  • 莱布尼兹 1700年

  • Ada

  • 图灵

  • 冯诺依曼



编程语言



  • 汇编语言

  • Basic语言

  • 结构化的Basic

  • Perl 脚本语言

  • C语言(结构化语言)

  • C++(兼容C,提供面向对象机制)

  • Java(完全面向对象)



抽象种类



  • 对机器抽象

  • 对处理逻辑抽象

  • 对问题领域抽象

  • 直接表达问题空间内的元素



面向对象三要素



  • 封装

  • 继承

  • 多态



面向对象编程



  • 目的

  • 原则



设计模式



  • 创建模式

  • 行为模式

  • 结构模式



框架



  • 对某一类架构方案的可复用的设计和实现



工具 VS 框架



  • 框架调用应用代码

  • 工具被应用调用

  • 

  • 架构师用框架保证架构落地

  • 用工具提高开发效率



OOD原则



  • OCP 开闭原则 Open/Closed Principle

  • DIP 依赖倒置原则 Dependency Inversion Principle

  • LSP 里式替换原则

  • SRP 单一职责原则 Single Responsibility Pinciple

  • ISP 接口分离原则 Interface Segregation Principle



3. 设计模式



创建模式



  • 工厂模式

  • 单例模式

  • 适配器模式



结构模式



  • 组合模式

  • 装饰器模式



行为模式



  • 模板方法模式

  • 策略模式



4. 系统架构



高并发



  • 垂直伸缩

  • 水平伸缩



高可用



海量数据



分布广泛、网络复杂



安全环境恶劣



需求快速变更、发布频繁



渐进发展



架构演化



  • 0:最简单

  • 1:应用数据分离

  • 2:使用缓存

  • 3:应用服务器集群

  • 4:数据库读写分离

  • 5:反向代理、CDN加速

  • 6:分布式 文件系统、数据库系统

  • 7:NoSQL、搜索引擎

  • 8:业务拆分

  • 9:微服务、中台化

  • 10:大数据、智能化



架构模式



  • 分层

  • 分割

  • 分布式

  • 集群

  • 缓存

  • 异步

  • 冗余

  • 自动化

  • 安全

  • 子主题 10



核心要素



  • 高可用

  • 高性能

  • 可伸缩

  • 可扩展

  • 安全



前端架构



  • App、web技术

  • 浏览器、HTTP优化

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DNS



网关机应用层架构



  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分



服务层架构



  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性(锁)服务



存储层架构



  • 分布式文件

  • 分布式关系数据库

  • NoSQL数据库



后台架构



  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库



运维与安全



  • 数据采集、展示

  • 数据监控、报警

  • 攻击、防护

  • 数据加密、解密



5. 技术选型



缓存



  • 缓存类型

  • 关键指标(缓存命中率)



消息队列、异步架构



  • 构成

  • 模型(方案)

  • 好处

  • 主要产品



负载均衡



  • 架构

  • 算法

  • 应用服务器集群的Session管理



分布式数据库



  • MySQL复制

  • 数据分片



NoSQL



  • CAP原理

  • 最终一致性

  • 最终一致性写冲突



Hbase 架构



ZooKeeper



搜索引擎



  • 倒排索引

  • 网页排序

  • PageRank算法(网页排名算法)



ElasticSearch 架构



Doris 案例讲解(真实案例)



6. 性能优化



性能测试



  • 指标

  • 种类

  • 全链路压测的挑战



软件优化的2个基本原则



  • 不能优化一个没有测试的软件

  • 不能优化一个你不了解的软件



性能优化的一般方法



  • 性能测试、获得性能指标

  • 指标分析、发现瓶颈点

  • 架构、代码分析、找到瓶颈关键所在

  • 架构、代码优化、优化关键点、平衡资源利用

  • 性能测试、闭环



性能优化的分层思想



  • 机房、骨干网络

  • 服务器、硬件

  • 操作系统

  • 虚拟机

  • 基础组件

  • 软件架构

  • 软件代码



性能优化三把斧



  • 缓存

  • 异步

  • 集群



操作系统



  • 





  • 锁原语CAS(V,E,N)

  • 种类



文件、硬盘



  • 硬盘

  • RAIID 独立硬盘冗余阵列



数据结构、算法



  • 时间复杂度

  • 空间复杂度

  • NP问题

  • 数组

  • 链表

  • Hash表

  • 队列

  • 跳表

  • 递归算法

  • 贪心算法

  • 动态规划

  • 遗传算法



7. Java 虚拟机JVM



JVM



  • Java栈

  • 方法区

  • 程序计数寄存器



JVM垃圾回收



JVM性能诊断工具



  • JPS

  • JSTAT

  • JMAP

  • JSTACK



JAVA代码优化



  • 合理谨慎使用多线程

  • 竞态条件、临界区

  • 线程安全

  • 内存泄露



计算机任何问题都可以通过增加 中间层 解决



  • 面向接口编程

  • 7层网络协议

  • JVM

  • 编程框架

  • 一致性Hash算法的虚拟化实现



8. 秒杀



设计原则



  • 静态化

  • 并发控制、防秒杀器

  • 简化流程

  • 前端优化



9. 微服务



框架要满足的需求



  • 服务的注册和发现、基本的服务调用

  • 

  • 失效转移

  • 负载均衡

  • 高效的远程通信

  • 对应用最少侵入

  • 版本管理



Dubbo 框架



  • 服务注册中心 服务器

  • 服务消费者 服务器

  • 服务提供者 服务器



落地



  • 命令与查询职责隔离(CQRS)

  • 事件溯源

  • 断路由

  • 服务重试和调用超时



最重要的是需求



  • Needs

  • Values

  • Principles

  • Practices

  • Tools



微服务网关



  • 网关作用

  • 网关管道技术



10. DDD



领域驱动设计



  • 战略设计

  • 战术设计



组件设计原则



  • 组件内聚原则

  • 组件解耦原则



11. 系统安全与高可用



安全架构



  • XSS 攻击

  • SQL注入攻击

  • CSRF 攻击

  • 其他



高可用



  • 指标

  • 引起故障的原因

  • 高可用架构

  • 高可用系统的运维



12. 大数据



发展史



  • Google三驾马车

  • 大数据应用发展史



应用领域



  • 医学影像智能识别

  • 病例大数据智能诊疗

  • AI外语老师

  • 智能解题

  • 舆情监控和分析

  • 大数据风控

  • 新零售

  • 无人驾驶



技术



  • HDFS

  • MapReduce

  • Yarn

  • Hive

  • Spark

  • Hadoop

  • Storm

  • Flink

  • HiBench

  • 大数据可视化

  • 大数据算法、机器学习

  • 大数据平台



13. 区块链



比特币



  • 工作量证明

  • 旷工



以太坊



Facebook 发布的 LIbra



  • 稳定币

  • 许可型区块链



联盟链技术



  • HyperLedger

  • Tairuem



14. 如何成为专家



技术等级



  • 行业开创者

  • 领域开创者

  • 关键开创者

  • 全球影响者

  • 公司影响者

  • 团队影响者



德雷福斯模型



  • 专家

  • 精通者

  • 胜任者

  • 高级新手

  • 新手



彼得定律



  • 一个优秀的员工会晋升

  • 会持续晋升,到不能胜任为止

  • 推论:所有职位都是不能够胜任的人承担着



软件开发第一性原理



  • 这个技术的核心关键点是什么? 要解决的问题是什么?

  • 过往有没有类似的技术? 核心设计是否相通?

  • 这些问题应该用何种模式解决?



第一性原理实践



  • 5分钟阅读一个 HelloWord级的文档、demo

  • 30分钟做一个 Hello Word 体验一下

  • 2小时阅读关键设计文档和代码

  • 如果我来开发、将如何设计、关键技术的如何处理



架构师的三板斧



  • 设计文档

  • 设计模式

  • 架构模式



发现问题的真正所在



  • 推荐书籍:你的灯亮着吗?

  • 问题发现模式

  • 问题提出模式

  • 问题解决模式



技术领导者的7种武器



  • 交际

  • 情景

  • 目标

  • 资源

  • 评估

  • 导师

  • 赞美



### 架构师之道



XMind - Trial Version



发布于: 2020 年 09 月 17 日 阅读数: 54
用户头像

刁架构

关注

叫我刁架构 2017.10.25 加入

预备备网红首席架构师,移动端开发者,边缘设计支持者。

评论

发布
暂无评论
架构师 0 期 | 架构师大作业(架构师技术图谱)