架构师成长之路(4)--架构师知识体系(方法)

本文全面解析架构师所需技能,涵盖通用技能、底层知识、专业技能等,深入探讨架构设计原则与互联网公司经典技术架构,旨在帮助读者构建完整知识体系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

前言:


 
  1. 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。
  2. 如果我们要成为架构师,我们自己要面临的三大问题:
  3. 找准自己定位:我是谁?在哪里?
  4. 怎样做好架构师:我要做什么?
  5. 如何搭建架构师知识体系:我该怎么做?
  6. 这里面就是做事方法论: 目标(我要做什么),方法(计划)(我该怎么做),  执行/行动
找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做?

俗话说,站在巨人的肩膀上看世界,一般学习的时候先总览全局,然后逐个部分个个击破,最后形成思路,了解具体细节。

互联网思维不是工具,它是世界观。这篇文章之后,你可以尝试构建自己的知识体系了。

愿每个人都可以像一个U盘一样,自带系统随处插拔。
愿每个人都可以和别人不一样。

 

一、通用技能表


1、做事方法论:目标、方法、执行。

     我是谁:思维方式,不将就认真做事的人

     如何做事:1)整体把握,找到方法论(解决方案),

                       2)思路:分而治之,优先排列,计划进行(排期完成)。

                       3)及时沟通,反馈,勇于承担责任

                      4)团队意识

     成长:1)和优秀的人在一起

                2)不断学习充电

     完成定义:了解基础原理,自测通过,及时跟踪反馈问题,文档更新

     做一个靠谱的人:“凡事有交代,件件有着落,事事有回音。”

2、思维结构:   

        《金字塔原理》、《结构化思维》、《系统思维》


3、文档能力:

       熟练使用excel,ppt


4、团队协作

     类似Trello的在线协同平台、 Slack、 微信、 例会


5、沟通能力:

 

6、业务能力:该行业和本公司的业务逻辑

7、计划推进能力:

      质量控制、进度控制、人员组织、资源协调。

    1)、能够有效的组织各类资源,通过说服、协调等方式得到相关部门或人员的支持,以使计划顺利的推行下去;
    2)、说服力、协调力、推动力、监控与反馈

 

8、项目管理能力

     架构评审
     代码规范
     代码 Review
     看板管理
     SCRUM
     敏捷开发
     极限编程(XP)
     结对编程
     FMEA管理模式

 

二、底层知识


1、基础知识

  • 计算基础
    <ul><li><span style="color:#3e3e3e;">计算机原理</span></li>
    	<li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/category/1054628">数据结构和常用算法</a></span></li>
    	<li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/category/1253451">操作系统:进程,线程,内存</a></span></span></li>
    </ul></li>
    
  • 网络
    <ul><li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/category/1112019">TCP/IP协议</a></span></li>
    	<li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/details/7249611">TCP/IP网络模型</a></span></span></li>
    	<li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/details/8680808">HTTP协议原理</a></span></li>
    	<li><a href="https://blog.csdn.net/hguisu/article/details/7453390">网络IO模型</a></li>
    	<li><a href="https://blog.csdn.net/hguisu/article/category/1122753">Socket网络编程</a></li>
    </ul></li>
    <li><span style="color:#3399ea;">linux知识</span></li>
    

三、专业技能


2、编程语言

  • java
    <ul><li><a href="https://blog.csdn.net/hguisu/article/details/7644395">java基础类库</a>、<a href="https://blog.csdn.net/hguisu/article/details/6155636">异常</a></li>
    	<li>JVM原理和调优《深入理解java虚拟机》《java性能优化权威指南》</li>
    	<li>框架</li>
    	<li>并发《java并发编程实战》</li>
    	<li><a href="https://blog.csdn.net/hguisu/article/details/7490616">多线程</a></li>
    </ul></li>
    <li>php/python
    <ul><li>php/python基础</li>
    	<li>常用框架</li>
    	<li>异常处理机制</li>
    	<li><span style="color:#3e3e3e;">深入php内核</span></li>
    </ul></li>
    

2、程序设计

  • 高质量编码能力:
    <ul><li><span style="color:#3e3e3e;">重用性</span></li>
    	<li><span style="color:#3e3e3e;">低耦合</span></li>
    	<li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;">可扩展性</span></span></li>
    	<li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><span style="color:#3e3e3e;">可维护性</span></span></span></li>
    	<li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><span style="color:#3e3e3e;">高性能</span></span></span></span></li>
    	<li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><span style="color:#3e3e3e;"><span style="color:#3e3e3e;">安全性高</span></span></span></span></span></li>
    </ul></li>
    <li><span style="color:#3e3e3e;"><span style="color:#3e3e3e;">面向对象编程</span>:</span>
    <ul><li><span style="color:#3e3e3e;">MVC编程思想</span></li>
    	<li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/details/7609483">掌握建模语言和建模工具:UML</a></span></li>
    	<li>面向对象思想</li>
    </ul></li>
    <li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/category/1133340"><span style="color:#3e3e3e;">设计模式</span>:</a></span>
    <ul><li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/details/7571617">基础设计模式和设计原则</a>:<span style="color:#3e3e3e;">单一职责、开放封闭原则等.</span></span></li>
    	<li><span style="color:#3e3e3e;"><a href="https://blog.csdn.net/hguisu/article/category/1133340">常用设计模式</a></span></li>
    	<li><a href="https://blog.csdn.net/hguisu/article/category/1152364">重构</a></li>
    </ul></li>
    

3、安全知识

  • web安全:xss,sql注入,ddos攻击
  • 安全维度:漏洞,风险,事件
  • https协议
  • 安全书:  《黑客攻防技术宝典(Web实战篇)》
              《白帽子讲Web安全》
              《Web前端黑客技术揭秘》
              《Web之困》
              《SQL注入攻击与防御》

 

4、运维能力

  • 监控
  • 持续集成:jenkins
  • 自动化运维工具:ansible,saltstack
  • 虚拟化:kvm,vm
  • 容器docker
  • 云技术openstack
  • DevOps

5、数据库

  • 基础理论
  • 数据库设计的三大范式
  • MySQL原理
  • MySQL优化
  • mysql引擎:
    • InnoDB
    • MyISAM
  • NoSQL:redis/mongo

6、常用应用软件

  • Web server:
    <ul><li>Nginx</li>
    	<li>OpenResty</li>
    	<li>Apache Httpd</li>
    	<li>Tomcat:架构原理,调优方案</li>
    	<li>Jetty</li>
    </ul></li>
    
  • 消息队列:
    <ul><li>RabbitMQ</li>
    	<li>RocketMQ</li>
    	<li>ActiveMQ</li>
    	<li>Kafka</li>
    	<li>Redis 消息推送</li>
    	<li>ZeroMQ</li>
    </ul></li>
    
  • RPC:
    <ul><li>Dubbo</li>
    	<li>Thrift</li>
    	<li>gRPC</li>
    </ul></li>
    <li>数据库中间件<span style="color:#3e3e3e;">:</span>
    <ul><li><span style="color:#24292e;">DBproxy</span></li>
    	<li>Haproxy</li>
    </ul></li>
    <li><span style="color:#3e3e3e;">软件负载均衡:</span>
    <ul><li>几种负载均衡算法: 轮询、权重、负载、最少连接、QoS</li>
    	<li>DNS负载均衡</li>
    	<li>Nginx</li>
    	<li>LVS+Keepalived实现负载均衡</li>
    	<li>HAProxy</li>
    	<li>Haproxy+Keepalived+MySQL实现读均衡负载</li>
    </ul></li>
    

7、性能调优

  • 性能优化方法论
  • 容量评估
  • CDN 网络
  • 连接池
  • 性能调优

8、大数据

 

9、工程化

  • maven
  • git
  • jenkins

 

 

 

三、架构基础知识


1、架构演进

  • 单体应用
  • 分布式
  • 微服务

2、架构模式

  • 分层:横向分层:应用层,服务层,数据层
  • 分割:纵向分割:拆分功能和服务
  • 分布式
    • 分布式应用和服务
    • 分布式静态资源

    • 分布式数据和存储
    • 分布式计算
  • 集群:提高并发和可用性
  • 缓存:优化系统性能
    • cdn
    • 方向代理访问资源
    • 本地缓存
    • 分布式缓存
  • 异步:降低系统的耦合性 
    • 提供系统的可用性
    • 加快响应速度
  • 冗余:冷备和热备,保证系统的可用性
  • 自动化:发布,测试,部署,监控,报警,失效转移,故障恢复
  • 安全:

3、架构核心要素

  • 高性能:网站的灵魂
    • 性能测试
    • 前端优化
    • 应用优化
    • 数据库优化
  • 可用性:保证服务器不宕机,一般通过冗余部署备份服务器来完成
    • 负载均衡
    • 数据备份
    • 自动发布
    • 灰度发布
    • 监控报警
  • 伸缩性:建集群,是否快速应对大规模增长的流量,容易添加新的机器
    • 集群
    • 负载均衡
    • 缓存负载均衡
  • 可扩展性:主要关注功能需求,应对业务的扩展,快速响应业务的变化。是否做法开闭原则,系统耦合依赖
    • 分布式消息
    • 服务化
  • 安全性:网站的各种攻击,各种漏洞是否堵住,架构是否可以做到限流作用,防止ddos攻击。
    • xss攻击
    • sql注入
    • csr攻击
    • web防火墙漏洞
    • 安全漏洞
    • ssl

四、架构设计


1、设计原则

  • 1、冗余设计  
  • 2、回滚设计  
  • 3、监控设计
  • 4、故障隔离
  • 5、可独立部署
  • 6、无状态设计
  • 7、成熟技术
  • 8、异步设计
  • 9、禁用设计
  • 10、服务可降级
  • 11、服务可限流
  • 12、水平扩展

2、接入层设计

  • DNS轮询
  • 动静分离
  • 方向代理:LVS,NGINX
  • CDN
  • 接入层安全:DNS劫持、限流,防刷。

3、应用层设计

  • 通信机制:RPC,MQ
  • 异步
  • 连接池
  • 配置中心

4、数据库层设计

  • 高可用数据库架构
  • 双主架构
  • 主从同步
  • 读写分离
  • 分表分库

 

五、互联网公司经典技术架构

 

互联网公司经典技术架构

 

六. GitHub上整理的一些工具和资源


1技术站点

  • Hacker News:非常棒的针对编程的链接聚合网站
  • 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下的CI系统,还没来得及研究)
  • Sonar:代码质量管理平台
  • git,svn:源代码版本控制系统
  • GitLib/Gitorious:构建自己的GitHub服务器
  • gitbook:https://www.gitbook.io/写书的好东西,当然用来写文档也很不错的
  • Travis-ci:开源项目持续集成必备,和GitHub相结合,https://travis-ci.org
  • 开源测试工具、社区(Selenium、OpenQA.org)
  • Puppet:一个自动管理引擎,可以适用于Linux、Unix以及Windows平台。所谓配置管理系统,就是管理机器里面诸如文件、用户、进程、软件包这些资源。无论是管理1台,还是上万台机器Puppet都能轻松搞定。
  • Nagios:系统状态监控报警,还有个Icinga(完全兼容nagios所有的插件,工作原理,配置文件以及方法,几乎一模一样。配置简单,功能强大)
  • Ganglia:分布式监控系统
  • fleet:分布式init系统

 

4 爬虫相关(好玩的工具)

  • Phantomjs
  • berserkJS(基于Phantomjs的改进版本)
  • SlimerJS
  • CasperJS
  • selenium

 

2.4 Web 服务器性能/压力测试工具/负载均衡器

  • http_load:程序非常小,解压后也不到100K
  • webbench:是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力
  • ab:ab是apache自带的一款功能强大的测试工具
  • Siege:一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
  • squid(前端缓存),nginx(负载),nodejs(没错它也可以,自己写点代码就能实现高性能的负载均衡器):常用的负载均衡器
  • Piwik:开源网站访问量统计系统
  • ClickHeat:开源的网站点击情况热力图
  • HAProxy:高性能TCP /HTTP负载均衡器
  • ElasticSearch:搜索引擎基于Lucene
  • Page Speed SDK和YSLOW
  • HAR Viewer:HAR分析工具
  • protractor:E2E(end to end)自动化测试工具

 

2.5 Web 前端相关

  • GRUNT:js task runner
  • Sea.js:js模块化
  • knockout.js:MVVM开发前台,绑定技术
  • Angular.js:使用超动感HTML & JS开发WEB应用!
  • Highcharts.js,Flot:常用的Web图表插件
  • Raw:非常不错的一款高级数据可视化工具
  • Rickshaw:图标库,可用于构建实时图表
  • JavaScript InfoVis Toolkit:另一款Web数据可视化插件
  • Pdf.js,在html中展现pdf
  • ACE,CodeMirror:Html代码编辑器(ACE甚好啊)
  • NProcess:绚丽的加载进度条
  • impress.js:让你制作出令人眩目的内容展示效果(类似的还有reveal)
  • Threejs:3DWeb库
  • Hightopo:基于Html5的2D、3D可视化UI库
  • jQuery.dataTables.js:高度灵活的表格插件
  • Raphaël:js,canvas绘图库,后来发现百度指数的图形就是用它绘出来的

 

 

 

 

1 操作系统 操作系统是计算机系统中的核心系统软件,负责管理和控制计算机系统中硬件和软件资源,合理组织计算机工作流程和有效利用资源,在计算机与用户之间起接口的作用 1.1 操作系统的类型 操作系统的类型(依据使用环境和对作业的处理方式)分为批处理、分时、实时、网络和分布式等。 1、批处理:把作业分类,把一批作业编成一个作业执行序列。可分联机和脱机。特征为脱机使用计算机、成批处理和多道程序运行。 2、分时:采用分时技术,使多个用户同时以会话控制自己程序的运行,每个用户都认为拥有各自独立的、支持自己请求服务的系统。特征有交互性、多用户同时性和独立性。 3、实时:专用,系统与应用难分离。并不强调资源利用率,更关心及时性、可靠性和完整性。分实时过程控制和实时信息处理。特征有即时响应、高可靠性。 4、网络:按网络架构的各个协议标准制订,包括网络管理、通信、资源共享、系统安全和多种网络应用,实现协同工作和应用集成。特征有互操作性、协作处理。 5、分布式:要求一个统一的操作系统,实现系统操作的统一性,负责全系统的资源分配和调度,为用户提供统一的界面。 6、操作系统的5项基本功能,包括处理器管理、存储管理、设备管理、文件管理和作业管理。 1.2 操作系统的结构 结构分为无序、层次、面向对象、对称多处理和微内核。 1、无序:又称整体或模块结构。以大型表格和队列为中心,操作系统各个部分围绕着表格运行,整个系统是一个程序。模块结构相对独立,模块之间通过规定的接口相互调用。优点为缩短开发周期。缺点是模块之间调用关系复杂、相互依赖,使分析、移植和维护系统较易出错。 2、层次:操作系统分解成若干个单向依赖的层次,由多层正确性保证操作系统的可靠性。优点层次结构清晰,简化了接口设计,有利于系统功能的增加或删改,易于保证可靠性,便于维护和移植。 3、面向对象:基于面向对象程序设计的概念,采用了各种不同的对象技术。把对象最为系统中的最小单位,由对象、对象操作、对象保护组成的操作系统。优点适用于网络操作系统和分布式操作系统。 4、对称多处理:所有多处理运行且共享同一内存(内存储器、主存、实存)。优点适合共享存储器结构的多处理机系统。 5、微内核:把系统的公共部分抽象出来,形成一个底层核心,提供最基本的服务,其他功能以服务器形式建立在微内核之上。具有良好的模块化和结构化特征,模块之间和上下层之间通过消息来通信。 操作系统大多拥有两种工作状态:核心态和用户态。一般的应用程序工作在用户态,内核模块和最基本的操作系统核心工作在核心态。 微内核结构由一个简单的硬件抽象层和一组比较关键的原语(仅仅为建立系统必须的部分,包括线程管理、地址空间和进程间通信)或系统调用组成。 微内核的目标将系统服务的实现和系统的基本操作规则分离开来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值