架构师成长之路(4)--架构师知识体系(方法)
前言:
哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。
如果我们要成为架构师,我们自己要面临的三大问题:
找准自己定位:我是谁?在哪里?
怎样做好架构师:我要做什么?
如何搭建架构师知识体系:我该怎么做?
8. 这里面就是做事方法论:**目标(我要做什么),方法(计划)(我该怎么做), 执行/行动**
找准自己定位:我是谁?在哪里?
怎样做好架构师:我要做什么?
如何搭建架构师知识体系:我该怎么做?
代码解释
俗语有云:站在巨人肩膀上的角度看世界,在学习过程中:把握全局框架,在分步骤深入分析每一个具体环节的基础上构建清晰的解题思路:全面理解问题本质,并深入掌握各个知识点的具体内容与应用方法。
互联网思维不单是工具,它属于现代认知模式。从今天开始这篇文章之后,你可以试着建立自己的知识网络
互联网思维不单是工具,它属于现代认知模式。从今天开始这篇文章之后,你可以试着建立自己的知识网络
愿每个人都能像一个存储设备一样,内置操作系统随心所欲地插入和提取。愿每个人都能够与众不同而不雷同。

越是基础层面上的可迁移能力,在程度上就越具有普遍适用性,在性质上也表现出基础性特征;而越是顶端层面的可迁移能力,在程度上就越具有独特性,在应用范围内就越局限于特定领域或场景。


一、通用技能表
1、做事方法论:目标、方法、执行。
我是谁:思维方式,不将就认真做事的人
如何做事:1)整体把握,找到方法论(解决方案),
2)思路:分而治之,优先排列,计划进行(排期完成)。
3)及时沟通,反馈,勇于承担责任
4)团队意识
成长:1)和优秀的人在一起
2)不断学习充电
完成定义:了解基础原理,自测通过,及时跟踪反馈问题,文档更新
做一个靠谱的人:“凡事有交代,件件有着落,事事有回音。”
2、思维结构:
《金字塔原理》、《结构化思维》、《系统思维》
3、文档能力:
熟练使用excel,ppt
4、团队协作
类似Trello的在线协同平台、 Slack、 微信、 例会
5、沟通能力:
6、业务能力:该行业和本公司的业务逻辑
7、计划推进能力:
质量控制、进度控制、人员组织、资源协调。
- 能够有效地整合各类资源,并通过其说服力和协调能力争取相关部门或人员的支持, 从而确保计划得以顺利实施;
- 具备较强的说服能力和团队协作能力;拥有推动项目执行的动力;同时具备有效的监控和反馈机制。
8、项目管理能力
系统架构的全面评估过程
软件开发中的行为规范体系
代码质量的标准审查流程
项目管理中的看板组织与运作策略
Scrum方法论的核心实践体系
敏捷开发中的迭代发布模式
Extreme Programming(XP)原则的应用框架
团队协作中的配对编程技术实施策略
故障模式与影响分析管理流程的规范化方法
二、计算机基础知识:深入本质
可被视为万物之源的原子模型与互联网的二进制架构之间存在某种联系,在这种认识下最核心的是理解事物的本质规律。架构师在面对系统设计时必须坚持这一原则:从表层需求深入挖掘其深层逻辑关系。当用户提出一个功能需求时这往往只是系统功能的一个基本起点例如远程备份数据库的自动执行功能而真正复杂化的挑战在于将这一模糊的需求转化为具体的系统设计语言即技术实现方案这一过程不仅要求我们具备高度抽象思维能力还需要建立全面的知识体系去理解支撑系统的每一个组成部分包括硬件、网络、操作系统、应用程序等进而建立全局性的问题导向开发思维模式以确保系统设计的科学性和实用性
1、计算基础
- 计算入门
- 计算机原理
- 核心数据结构与常见算法
- 操作系统中的进程管理与线程处理
2、网络
3、操作系统
- 操作系统:<>
4、linux知识
- linux知识:<>
三、专业技能
**1、**编程语言
- Java
- Java基础类库、异常
- JVM原理和调优《深入理解Java虚拟机》《Java性能优化权威指南》
- 框架体系
- 并发框架《Java并发编程实战》
- 多线程
- PHP/Python
- PHP/Python入门级
- 常用框架
- 异常处理机制
- 透彻掌握PHP核心机制《深入探究PHP内核》
**2、**程序设计
- 高质量编码能力:
- 重用性
- 低耦合
- 可扩展性
- 可维护性
- 高性能
- 安全性高
- 面向对象编程:
- MVC编程思想
- 掌握建模语言和建模工具:UML
- 面向对象思想
- 设计模式:
- 基础设计模式和设计原则:单一职责、开放封闭原则等.
- 常用设计模式
- 重构
**3、**安全知识
- 网络安全:跨站脚本漏洞(XSS)、SQL注入攻击、DDoS流量攻击等是当前网络安全领域的重点关注对象。
- 安全维度涵盖多种类型的安全问题和潜在威胁。
- 现代互联网通信的基础协议之一是https协议。
- 相关书籍推荐:
- 基于实战的Web安全技术详解(第二版)
- 白帽子视角下的Web安全实践
- 深入解析Web前端的安全威胁
- 数据驱动的DDoS防御体系构建与实践
- SQL注入攻击与防御策略优化
4、运维能力
- 监控系统
- 持续集成采用Jenkins作为核心引擎
- 自动化运维工具包括Ansible和SaltStack
- 虚拟化方案涉及KVM和VM技术
- 容器化管理采用Docker技术实现
- 云计算平台基于OpenStack架构构建
- DevOps实践融入企业级开发环境中
5、数据库
- 基础理论领域
- 数据库设计过程中涉及的三大规范体系
- MySQL运行原理解析
- MySQL性能优化策略探讨
- mysql引擎部分:
- InnoDB引擎机制分析
- MyISAM引擎特性研究
- NoSQL存储技术包括Redis和MongoDB的应用分析
6、常用应用软件
Web服务器:
-
Nginx是一种高效且灵活的服务器软件。
-
OpenResty是一种基于HTTP协议的高性能反向代理服务器。
-
Apache Httpd是基于PHP框架的高可用性Web服务器。
-
Tomcat的服务器架构设计原则及优化策略。
-
JavaBean Oriented的应用开发工具,并支持灵活配置管理
-
消息队列:
- RabbitMQ
- RocketMQ
- ActiveMQ
- Kafka
- Redis 消息推送
- ZeroMQ
-
RPC:
- Dubbo
- Thrift
- gRPC
-
数据库中间件:
- DBproxy
- Haproxy
-
软件负载均衡:
- 几种负载均衡算法: 轮询、权重、负载、最少连接、QoS
- DNS负载均衡
- Nginx
- LVS+Keepalived实现负载均衡
- HAProxy
- Haproxy+Keepalived+MySQL实现读均衡负载
-
7、性能调优
- 性能优化方法论
- 容量评估
- CDN 网络
- 连接池
- 性能调优
8、大数据
- 大数据平台
- Hadoop系统
- 基于MapReduce的大规模分布式计算平台
- 流动数据管理框架
- 提供高效的数据实时处理能力的开源技术体系
- 基于Kafka的流处理机制
- 针对高吞吐量和低延迟的应用场景优化设计的流处理方案
- Hadoop系统
9、工程化
- maven
- git
- jenkins
三、架构基础知识
1、架构演进
- 单体应用
- 分布式
- 微服务
2、架构模式
- 层次结构:水平方向上的分层层析
- 应用层面:业务核心模块
- 服务层面:系统支持组件
- 数据层面:数据存储管理
- 分解维度:
- 拆解核心功能与辅助服务
- 分布式架构设计:
- 集成应用系统与服务组件
分布式静态资源
- 分布式数据与存储机制
- 分布式计算技术
- 集群系统旨在通过优化架构来提升处理多请求的能力和可靠性。
- CDN节点将资源以特定方向进行代理访问策略。
- 本地缓存策略能够有效提升资源访问速度。
- 分布式缓存机制能够实现跨节点的数据冗余与共享。
- 异步处理有助于减少系统之间的依赖关系
- 系统冗余设计主要包含冷备与热备机制两大部分
- 冷备机制确保在主设备故障时能够快速切换至备用设备。
- 热备机制则通过硬件或软件手段实现主从系统的无缝切换。
- 自动化管理流程涵盖从发布到故障恢复的多个关键环节
- 包括但不限于版本发布操作
- 测试阶段的用例运行与结果验证
- 部署环节的脚本执行与环境配置
- 监控阶段的日志记录与异常报警
- 故障恢复过程中的自动排查与修复操作
- 安全:
3、架构核心要素
- 高性能:网站的灵魂
- 性能测试
- 前端优化
- 应用优化
- 数据库优化
- 可用性:保证服务器不宕机,一般通过冗余部署备份服务器来完成
- 负载均衡
- 数据备份
- 自动发布
- 灰度发布
- 监控报警
- 伸缩性:建集群,是否快速应对大规模增长的流量,容易添加新的机器
- 集群
- 负载均衡
- 缓存负载均衡
- 可扩展性:主要关注功能需求,应对业务的扩展,快速响应业务的变化。是否做法开闭原则,系统耦合依赖
- 分布式消息
- 服务化
- 安全性:网站的各种攻击,各种漏洞是否堵住,架构是否可以做到限流作用,防止ddos攻击。
- xss攻击
- sql注入
- csr攻击
- web防火墙漏洞
- 安全漏洞
- ssl
四、架构设计
1、设计原则
- 1、冗余机制
- 2、回滚策略
- 3、监控方案
- 4、故障定位机制
- 5、模块化架构
- 6、状态less架构
- 7、稳定可靠技术
- 8、异步处理方案
- 9、禁止配置项
- 10、服务降级保护机制
- 11、流量速率限制措施
- 12、水平扩展能力
2、接入层设计
- DNS轮询
- 动静分离
- 方向代理:LVS,NGINX
- CDN
- 接入层安全:DNS劫持、限流,防刷。
3、应用层设计
- 通信机制:RPC,MQ
- 异步
- 连接池
- 配置中心
4、数据库层设计
- 高可用数据库架构
- 双主架构
- 主从同步
- 读写分离
- 分表分库
五、互联网公司经典技术架构
六. GitHub上整理的一些工具和资源
1技术站点
- Hacker News:由Hundreds of programmers Curated的编程相关链接聚合网站
- Programming reddit:同上
- MSDN:微软官方的技术资源库,在文档方面有丰富内容
- infoq:专注于企业级软件开发领域的专家聚集地
- OSChina:开源技术社区中的佼佼者,在开源领域表现优异
- 51cto及cnblogs:综合性技术平台各有侧重
- stackoverflow:IT专家交流的重要平台,在问题解答方面效率很高
- GitHub:全球领先的源代码管理平台,在众多知名项目上有重要贡献(例如Linux内核)
- OpenStack等免费IT电子书:可访问http://it-ebooks.info/
- DevStore:开发者服务生态系统的重要组成部分
2 不错的书籍
- 人件
- 人月神话
- 代码大全2
- 计算机程序设计艺术
- 程序员的自我修养
- 程序员修炼之道
- 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系)
- 深入理解计算机系统
- 软件随想录
- 算法导论(麻省理工学院出版社)
- 离线数学及其应用
- 设计模式
- 编程之美
- 黑客与画家
- 编程珠玑
- C++ Prime
- Effective C++
- TCP/IP详解
- Unix 编程艺术
- 《精神分析引论》弗洛伊德
- 搞定:无压力工作的艺术
3 平台工具(都是开源的好东东哦)
- 基于项目的协作平台:Redmine/Trac
- 非开源持续集成解决方案:Jenkins/Jira(Apache Continuum是一个针对Apache项目的持续集成框架)
- 代码质量控制:Sonar
- Git, SVN: 开源版本控制系统
- GitLib/Gitorious: 构建个人GitHub存储空间
- GitBook: 优秀的电子书写作与文档编撰工具
- Travis-CI: 开源项目必备的持续集成服务(与GitHub完美整合)
- 开源自动化测试框架及社区支持(包括Selenium与OpenQA.org)
- Puppet: 一个强大的自动化管理解决方案(适用于Linux、Unix及Windows环境)
- 管理计算机资源:Puppet负责配置管理系统中的文件、用户、进程及软件包等资源
- 简单高效:无论一台或多台服务器都能轻松处理
- 系统状态监控:Nagios是一个专业的系统状态监控与报警工具(Icinga完全兼容所有插件功能)
- 高效易用:配置简单但功能强大
- 分布式监控:Ganglia是一个强大的分布式网络性能监控解决方案
- 分布式初始化服务:fleet提供了一个统一的多机初始化解决方案
4 爬虫相关(好玩的工具)
- phantom.js(后端项目)
- 基于phantom.js的增强版
- SmILER JS
- casper.js
- seleniumfox
2.4 Web 服务器性能/压力测试工具/负载均衡器
- http_load:http_load是一个体积极小的程序,在解压后也不超过100千字节。
- webbench:它是一个专为Linux环境设计的网站压力测试工具,在最多支持3万个并发连接的情况下能够全面评估网站负载能力。
- ab:ab是一款由Apache提供的功能强大且易于使用的测试工具。
- Siege:Seige是一款开源的压力测试解决方案,在配置适当的情况下能够模拟多个用户同时进行大量并发请求,并记录每条请求的具体时间信息。
- squid(前端缓存功能)、Nginx(负载均衡)、Node.js(支持性能优化配置):这些都是常用的负载均衡解决方案。
- Piwick:Piwick是一个开源的网站访问量统计系统。
- ClickHeat:ClickHeat是一种基于浏览器行为的数据可视化分析平台。
- HAProxy:HAProxy是一种高性能的TCP/IP/HTTP负载均衡器。
- Elasticsearch(基于Lucene):ElasticSearch提供了一种高效的搜索引擎解决方案。
- Page Speed SDK/YSLOW: 这是两个广泛应用于Web应用性能优化的技术库。
- HAR Viewer: HAR Viewer是一种专业的HTTP/HTTPS分析工具。
- Protractor: Protractor 是一种广泛应用于端到端自动化测试开发框架.
2.5 Web 前端相关
- GRUNT:JavaScript任务运行器
- Sea.js:JavaScript模块化工具
- knockout.js:基于MVVM的前端开发框架用于实现前后端数据绑定技术
- Angular.js:采用超动感的HTML与JavaScript技术构建Web应用
- Highcharts.js, Flot:广泛应用于数据可视化展示的基础类库
- Raw:一款功能强大的高级数据可视化解决方案
- Rickshaw:一款轻量级图标库支持快速构建交互式图表
- JavaScript InfoVis Toolkit(JIT):提供丰富的Web数据可视化组件
- Pdf.js:在网页中展示PDF文档的技术方案
- ACE, CodeMirror:强大的代码编辑器系统(ACE功能尤为出色)
- NProcess:提供优雅的加载进度条显示效果
- impress.js(类似reveal.js):助您轻松打造令人叹为观止的内容展示效果
- Three.js:基于OpenGL的强大三维图形渲染库
- Hightopo(Hippo):集成了2D与3D可视化的丰富UI组件集合
- jQuery.dataTables.js(jQuery DataTables):高度可定制化的表格组件库
- Raphaël(RaphaelJS):轻量级矢量绘图库适用于多种图形绘制场景
