架构师成长之路

前言:

哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。

如果我们要成为架构师,我们自己要面临的三大问题:
找准自己定位:我是谁?在哪里?
怎样做好架构师:我要做什么?
如何搭建架构师知识体系:我该怎么做?

这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做), 执行/行动

要成为优秀合格的架构师,必须具备前瞻性的眼光和系统性的思考能力。而拥有这些能力的前提是你必须完善自己的知识体系。

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

愿每个人都可以像一个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、基础知识

计算基础
    计算机原理
    数据结构和常用算法
    操作系统:进程,线程,内存

网络
    TCP/IP协议
    TCP/IP网络模型
    HTTP协议原理
    网络IO模型
    Socket网络编程

2、编程语言

java
    java基础类库、异常
    JVM原理和调优《深入理解java虚拟机》《java性能优化权威指南》
    框架
    并发《java并发编程实战》
    多线程
php
    异常
    常用框架
php
    php基础
    常用框架
    异常处理机制
    深入php内核

3、程序设计

高质量编码能力:
    重用性
    低耦合
    可扩展性
    可维护性
    高性能
    安全性高
面向对象编程:
    MVC编程思想
    掌握建模语言和建模工具:UML
    面向对象思想
设计模式:
    基础设计模式和设计原则:单一职责、开放封闭原则等.
    常用设计模式
    重构

4、研发能力

瀑布模型:需求->需求分析->设计->开发->测试->上线->运维/运营
调试和解决问题能力
敏捷思想:快速迭代,任务细分,wiki更新

5、安全知识

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

6、Linux知识
7、运维能力

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

8、数据库

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

9、常用应用软件

Web server:
    Nginx
    OpenResty
    Apache Httpd
    Tomcat:架构原理,调优方案
    Jetty

消息队列:
    RabbitMQ
    RocketMQ
    ActiveMQ
    Kafka
    Redis 消息推送
    ZeroMQ

RPC:
    Dubbo
    Thrift
    gRPC
数据库中间件:
    DBproxy
    Haproxy



软件负载均衡:
    几种负载均衡算法: 轮询、权重、负载、最少连接、QoS
    DNS负载均衡
    Nginx
    LVS+Keepalived实现负载均衡
    HAProxy
    Haproxy+Keepalived+MySQL实现读均衡负载

9、性能

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

10、大数据

大数据
Hadoop
Storm
Kafka Stream

11、工程化

maven
git
jenkins

三、架构基础知识
1、架构演进

初始阶段:LAMP,部署在一台服务器
应用服务器和数据服务器分离
使用缓存改善性能
使用集群改善并发
数据库地读写分离
使用反向代理和cdn加速
使用分布式文件和分布式数据库
业务拆分
分布式服务

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、数据库层设计

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

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

1.Google.Facebook.eBay.Amazon

2.微博架构

3.百度架构

4.淘宝-阿里技术架构 @ 06334a3

5.微信-腾讯技术架构 @ 3804af3

6.美团-点评技术架构 @ fc3cfc8

7.网易.技术架构

A.分布式数据库-数据平台-NoSQL

A.分布式文件系统-缓存

A.分布式系统-高可用

B.基础架构-Docker-容器架构

B.基础架构-FrontEnd

B.基础架构-及时通讯-语音-视频

B.基础架构-日志系统

B.基础架构-消息队列

C.运维架构-安全

C.运维架构-自动化运维DevOps

D.机器学习-人工智能

E.互联网公司-架构演进

F.10 papers for architect

F.10 papers for programmer

G.编程语言

H.团队与产品

I.性能优化

K.金融-支付

其他

互联网公司经典技术架构

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

2.1技术站点

Hacker News:非常棒的针对编程的链接聚合网站
Programming reddit:同上
MSDN:微软相关的官方技术集中地,主要是文档类
infoq:企业级应用,关注软件开发领域
OSChina:开源技术社区,开源方面做的不错哦
51cto,cnblogs:常见的技术社区,各有专长
stackoverflow:IT技术问答网站
GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核
OpenStack等免费的it电子书:http://it-ebooks.info/
DevStore:开发者服务商店

2.2 不错的书籍

人件
人月神话
代码大全2
计算机程序设计艺术
程序员的自我修养
程序员修炼之道
高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系)
深入理解计算机系统
软件随想录
算法导论(麻省理工学院出版社)
离线数学及其应用
设计模式
编程之美
黑客与画家
编程珠玑
C++ Prime
Effective C++
TCP/IP详解
Unix 编程艺术
《精神分析引论》弗洛伊德
搞定:无压力工作的艺术

2.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系统

2.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绘图库,后来发现百度指数的图形就是用它绘出来的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《软件架构师成长之路》是一本面向软件架构师成长指南书籍,从多个方面讲述了软件架构师的角色、工作、职业规划等方面,是一本值得软件架构师认真学习的好书。 在书中,作者通过系统性的介绍软件架构架构师角色定位、架构设计原则、架构分析、架构优化等多个方面,阐述了软件架构师学习和成长的道路。通过这些方面的学习,软件架构师可以将自己的能力逐渐提升到一个更高的水平,独当一面。 除此之外,作者还强调了软件架构师需要具备的软技能,如沟通技巧、谈判能力、领导力等,这些技能的掌握可以帮助软件架构师更好地与团队沟通合作,达成共识,减少团队出现问题的几率。 总而言之,从本书中学习可以帮助软件架构师提升自己的核心能力,成为更好的架构师,同时具备足够的软技能,处理好人际关系,使得自己在团队中立足、发展。 ### 回答2: 《软件架构师成长之路.pdf》这本书是一本很好的关于软件架构师成长的指导手册。 软件架构师是一个高级职位,需要一定的经验和技能。这本书首先介绍了软件架构师的角色和职责,以及软件架构师应该具备何种技能和素质。作者认为,软件架构师不仅应该掌握技术、设计和质量管理等方面的知识,还需要具备领导和沟通能力,能够管理团队、与客户和其他团队成员进行有效的沟通和协作。 书中接着介绍了软件架构的基础知识,如何设计和评估软件架构并选择合适的架构风格和模式。同时,还介绍了一些常用的架构工具和方法,例如UML、DDD等。 此外,书中还详细介绍了软件架构师在不同领域和技术中的应用和实践,如云计算、分布式系统、大数据等,帮助读者更好地应对实际工作中的挑战。 最后,书中提供了一些关于软件架构师成长和职业发展的建议和指导,如如何获得更多的经验、如何提高自己的领导和管理能力等。 总的来说,《软件架构师成长之路.pdf》这本书适合从事软件架构和软件设计的IT人员、技术经理、高级研发人员或正在寻求进一步发展成为软件架构师的人们阅读。通过这本书的学习和实践,读者们可以更好地了解软件架构师职业的要求和发展方向,从而更好地实现自己的职业目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值