架構師須要具有的知識體系

前言:php

哲學家常思考的問題:" 我是誰?"" 我從哪裏來?"" 要到哪裏去?不僅是哲學家,我想每一個人都有本身對這三個問題的認知。html

若是咱們要成爲架構師,咱們本身要面臨的三大問題:前端

找準本身定位:我是誰?在哪裏?java

怎樣作好架構師:我要作什麼?node

如何搭建架構師知識體系:我該怎麼作?mysql

這裏面就是作事方法論:目標(我要作什麼),方法(計劃)(我該怎麼作),  執行/行動ios

要成爲優秀合格的架構師,必須具有前瞻性的眼光和系統性的思考能力。而擁有這些能力的前提是你必須完善本身的知識體系。nginx

互聯網思惟不是工具,它是世界觀。這篇文章以後,你能夠嘗試構建本身的知識體系了。git

願每一個人均可以像一個U盤同樣,自帶系統隨處插拔。程序員

願每一個人均可以和別人不同。

1、通用技能表

一、作事方法論:目標、方法、執行。

     我是誰:思惟方式,不將就認真作事的人

     如何作事:1)總體把握,找到方法論(解決方案),

               2)思路:分而治之,優先排列,計劃進行(排期完成)。

               3)及時溝通,反饋,敢於承擔責任

               4)團隊意識

     成長:1)和優秀的人在一塊兒

           2)不斷學習充電

     完成定義:瞭解基礎原理,自測經過,及時跟蹤反饋問題,文檔更新

     作一個靠譜的人:「凡事有交代,件件有着落,事事有迴音。」

二、思惟結構:   

        《金字塔原理》

《結構化思惟》

        系統思惟

三、文檔能力:熟練使用excel,ppt

四、協做

     相似Trello的在線協同平臺

     Slack

     微信

     例會

五、溝通能力:

六、業務能力:該行業和本公司的業務邏輯

七、計劃推動:質量控制、進度控制、人員組織、資源協調。

    1)、可以有效的組織各種資源,經過說服、協調等方式獲得相關部門或人員的支持,以使計劃順利的推行下去;

    2)、說服力、協調力、推進力、監控與反饋

八、項目管理能力

架構評審

代碼規範

代碼 Review

看板管理

SCRUM

敏捷開發

極限編程(XP)

結對編程

FMEA管理模式

2、專業技能表 

一、基礎知識

計算基礎

計算機原理

數據結構和經常使用算法

操做系統:進程,線程,內存

網絡

TCP/IP協議

TCP/IP網絡模型

HTTP協議原理

網絡IO模型

Socket網絡編程

二、編程語言

java

java基礎類庫、異常

JVM原理和調優《深刻理解java虛擬機》《java性能優化權威指南》

框架

併發《java併發編程實戰》

多線程

php

異常

經常使用框架

php

php基礎

經常使用框架

異常處理機制

深刻php內核

三、程序設計

高質量編碼能力:

重用性

低耦合

可擴展性

可維護性

高性能

安全性高

面向對象編程:

MVC編程思想

掌握建模語言和建模工具:UML

面向對象思想

設計模式:

基礎設計模式和設計原則:單一職責、開放封閉原則等.

經常使用設計模式

重構

四、研發能力

瀑布模型:需求->需求分析->設計->開發->測試->上線->運維/運營

調試和解決問題能力

敏捷思想:快速迭代,任務細分,wiki更新

五、安全知識

web安全:xss,sql注入,ddos攻擊

安全維度:漏洞,風險,事件

https協議

安全書:  《黑客攻防技術寶典(Web實戰篇)》

          《白帽子講Web安全》

          《Web前端黑客技術揭祕》

          《Web之困》

          《SQL注入攻擊與防護》

六、Linux知識

七、運維能力

監控

持續集成:jenkins

自動化運維工具:ansible,saltstack

虛擬化:kvm,vm

容器docker

雲技術openstack

DevOps

八、數據庫

基礎理論

數據庫設計的三大範式

MySQL原理

MySQL優化

mysql引擎:

InnoDB

MyISAM

NoSQL:redis/mongo

九、經常使用應用軟件

 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實現讀均衡負載

九、性能

性能優化方法論

容量評估

CDN 網絡

鏈接池

性能調優

十、大數據

大數據

Hadoop

Storm

Kafka Stream

十一、工程化

maven

git

jenkins

3、架構基礎知識

一、架構演進

初始階段:LAMP,部署在一臺服務器

應用服務器和數據服務器分離

使用緩存改善性能

使用集羣改善併發

數據庫地讀寫分離

使用反向代理和cdn加速

使用分佈式文件和分佈式數據庫

業務拆分

分佈式服務

二、架構模式

分層:橫向分層:應用層,服務層,數據層

分割:縱向分割:拆分功能和服務

分佈式

分佈式應用和服務

分佈式靜態資源

分佈式數據和存儲

分佈式計算

集羣:提升併發和可用性

緩存:優化系統性能

cdn

方向代理訪問資源

本地緩存

分佈式緩存

異步:下降系統的耦合性 

提供系統的可用性

加快響應速度

冗餘:冷備和熱備,保證系統的可用性

自動化:發佈,測試,部署,監控,報警,失效轉移,故障恢復

安全:

三、架構核心要素

高性能:網站的靈魂

性能測試

前端優化

應用優化

數據庫優化

可用性:保證服務器不宕機,通常經過冗餘部署備份服務器來完成

負載均衡

數據備份

自動發佈

灰度發佈

監控報警

伸縮性:建集羣,是否快速應對大規模增加的流量,容易添加新的機器

集羣

負載均衡

緩存負載均衡

可擴展性:主要關注功能需求,應對業務的擴展,快速響應業務的變化。是否作法開閉原則,系統耦合依賴

分佈式消息

服務化

安全性:網站的各類攻擊,各類漏洞是否堵住,架構是否能夠作到限流做用,防止ddos攻擊。

xss攻擊

sql注入

csr攻擊

web防火牆漏洞

安全漏洞

ssl

4、架構設計

一、設計原則

一、冗餘設計  

二、回滾設計  

三、監控設計

四、故障隔離

五、可獨立部署

六、無狀態設計

七、成熟技術

八、異步設計

九、禁用設計

十、服務可降級

十一、服務可限流

十二、水平擴展

二、接入層設計

DNS輪詢

動靜分離

方向代理:LVS,NGINX

CDN

接入層安全:DNS劫持、限流,防刷。

三、應用層設計

通訊機制:RPC,MQ

異步

鏈接池

配置中心

四、數據庫層設計

高可用數據庫架構

雙主架構

主從同步

讀寫分離

分表分庫

5、互聯網公司經典技術架構

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繪圖庫,後來發現百度指數的圖形就是用它繪出來的

相關文章
相關標籤/搜索