這很技術(shù)丨3分鐘了解Web架構(gòu)小知識(shí)
很多初創(chuàng)的小團(tuán)隊(duì)并沒(méi)有架構(gòu)師,而且就算有,人家講話的時(shí)候你一臉懵逼也不合適啊。
一開(kāi)始你只是參與一個(gè)小項(xiàng)目,架構(gòu)好像對(duì)你來(lái)說(shuō)并不是什么重要的事,大家討論下就馬上開(kāi)發(fā),一臺(tái)服務(wù)器輕松搞定操作系統(tǒng)+開(kāi)發(fā)語(yǔ)言+應(yīng)用程序+數(shù)據(jù)庫(kù)??墒?,突然有一天你的項(xiàng)目突然由于什么不可知的原因你的項(xiàng)目收到廣泛專注?。?!使用人數(shù)激增!?。?/p>
于是就很容易涌現(xiàn)各種性能問(wèn)題、負(fù)載問(wèn)題,如果處理不當(dāng)也許就錯(cuò)失風(fēng)投良機(jī)了。。。(就快要成為下一個(gè)facebook了!)
所以,你說(shuō)架構(gòu)重不重要!
但是你也許會(huì)說(shuō),我只是一只產(chǎn)品狗子,做架構(gòu)有架構(gòu)師啊~~但是,我要說(shuō)的是,很多初創(chuàng)的小團(tuán)隊(duì)并沒(méi)有架構(gòu)師,而且就算有,人家講話的時(shí)候你一臉懵逼也不合適啊。。。
既然這樣,快點(diǎn)來(lái)看看架構(gòu)的小知識(shí)!??!
(這里講的架構(gòu)并非傳統(tǒng)產(chǎn)品經(jīng)理喜歡研究的那種信息架構(gòu)或者業(yè)務(wù)架構(gòu))
web前端
運(yùn)行環(huán)境:
其實(shí)就是提供程序運(yùn)行環(huán)境的Web服務(wù)器,可以向?yàn)g覽器等Web客戶端提供文檔文件讓全世界瀏覽和下載。使用最多的 web服務(wù)器軟件有兩個(gè):微軟的信息服務(wù)器(iis),和Apache。
Facebook采用的技術(shù)架構(gòu)LAMP(Linux、Apache、MySQL、PHP),其中就有Apache。Apache是目前世界使用排名第一的Web服務(wù)器軟件,它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。
編碼開(kāi)發(fā):
這個(gè)很容易引起 “哪種編程語(yǔ)言是最好的?”世界之爭(zhēng)。。。大家可以直接看2016編程語(yǔ)言排行榜,但并不代表本主編立場(chǎng)。
值得一提的是,F(xiàn)acebook作為開(kāi)源第一大廠,自家開(kāi)發(fā)并且開(kāi)源了HipHop for PHP,(yoyoyo很嘻哈么)這是一個(gè)PHP到C++的轉(zhuǎn)換程序,目的是旨在加速和優(yōu)化PHP,HipHop for PHP 比純PHP有高一倍的效能,從而大大減少了服務(wù)器的需求,流弊啊。。。
類庫(kù)框架:
類庫(kù)解決代碼或者是模塊級(jí)別的復(fù)用或者對(duì)復(fù)雜度的封裝問(wèn)題??蚣軇t是對(duì)模式級(jí)別的復(fù)用和對(duì)程序組織的規(guī)范。常用的框架有,Spring Framework (Java開(kāi)源 J2EE框架)Struts (Java開(kāi)源 Web框架)Hibernate (Java開(kāi)源 持久層框架)。
而facebook使用的是Thrift框架,對(duì)了,也是他們自己開(kāi)發(fā)的。。。thrift是一個(gè)軟件框架,用來(lái)進(jìn)行可擴(kuò)展且跨語(yǔ)言的服務(wù)的開(kāi)發(fā)。如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 可以在這些編程語(yǔ)言間無(wú)縫結(jié)合、高效的服務(wù)。
負(fù)載均衡
硬件負(fù)載均衡:
是一種把網(wǎng)絡(luò)請(qǐng)求分散到一個(gè)服務(wù)器集群中的可用服務(wù)器上去,通過(guò)管理進(jìn)入的Web數(shù)據(jù)流量和增加有效的網(wǎng)絡(luò)帶寬的硬件設(shè)備。能夠直接通過(guò)智能交換機(jī)實(shí)現(xiàn),處理能力更強(qiáng),但問(wèn)題就是:貴!如圖傳說(shuō)中的f5
軟件負(fù)載均衡:
價(jià)格低,甚至有免費(fèi)開(kāi)源的負(fù)載均衡策略,但效果肯定不如硬件,但一般中型網(wǎng)站夠用。目前使用最為廣泛的負(fù)載均衡軟件是Nginx、LVS、HAProxy。
數(shù)據(jù)庫(kù)和緩存
數(shù)據(jù)庫(kù)方案:
選擇數(shù)據(jù)庫(kù)需要考慮數(shù)據(jù)的量級(jí)、計(jì)算場(chǎng)景和處理數(shù)據(jù)的頻次來(lái)選擇。
facebook使用MySQL、Memcached、Hadoop’s HBase實(shí)現(xiàn)持久化。memcached是一套分布式的快取系統(tǒng)通過(guò)緩存數(shù)據(jù)庫(kù)查詢結(jié)果,減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù),以提高動(dòng)態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性。
分布式存儲(chǔ)服務(wù)器
分布式存儲(chǔ)系統(tǒng),是將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上。分布式網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,利用位置服務(wù)器定位存儲(chǔ)信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。
Facebook用戶所發(fā)布的照片數(shù)以億計(jì),其存儲(chǔ)由Haystack這個(gè)ad-hoc存儲(chǔ)解決方案(由Facebook開(kāi)發(fā))來(lái)處理——包括對(duì)其進(jìn)行低級(jí)別優(yōu)化與只擴(kuò)展寫(xiě)入方式。
TAO是Facebook一種用來(lái)處理社交圖形信息的分布式數(shù)據(jù)庫(kù)。針對(duì)讀取進(jìn)行優(yōu)化的數(shù)據(jù)存儲(chǔ)機(jī)制,并以單一地理分布實(shí)例的方式部署在Facebook當(dāng)中。 Tao系統(tǒng)的設(shè)計(jì)初衷在于為“數(shù)PB級(jí)別”的龐大數(shù)據(jù)集提供每秒超過(guò)十億次讀取操作。
Facebook擁有超過(guò)6萬(wàn)臺(tái)服務(wù)器。最近發(fā)布的數(shù)據(jù)中心位于俄勒岡州普賴恩維爾市,硬件完全自行設(shè)計(jì),并被歸為Open Compute Project。
源代碼管理和版本控制
源碼管理工具是一種記錄代碼更改歷史,可以無(wú)限回溯,用于代碼管理,多個(gè)程序員開(kāi)發(fā)協(xié)作的工具。幾種常用的有:svn、cvs、hg、git、vss。
作為工程師的天堂(產(chǎn)品經(jīng)理的火葬場(chǎng)),facebook是這樣做的
- 有非常牢靠的安全體系,以免有人不小心/故意做了些不好的事。
- 每個(gè)工程師可以修改facebook的任何代碼,隨時(shí)可以遷入。
- 所有的代碼修改都要進(jìn)行審核(通過(guò)一個(gè)或多個(gè)工程師),但News Feed是個(gè)例外,因?yàn)樘匾?,Zuckerberg會(huì)親自review。
- 所有的修改至少要被一個(gè)人審核,而且這個(gè)系統(tǒng)可以讓任何人很方便地審核其他人的代碼,即使你沒(méi)有邀請(qǐng)他。
- 工程師負(fù)責(zé)測(cè)試,代碼修復(fù),和維護(hù)自己的項(xiàng)目。
- 運(yùn)維組是受過(guò)嚴(yán)格訓(xùn)練,倍受尊敬,而且有商業(yè)意識(shí)的。他們的工作包括分析錯(cuò)誤日志,負(fù)載和內(nèi)存狀態(tài)等等。還包括用戶行為。
另外:
- 產(chǎn)品經(jīng)理與工程師的比例大約為1-7到1-10。
- 濃厚的工程師驅(qū)動(dòng)文化。”產(chǎn)品經(jīng)理基本可以被忽略”,這是facebook一名員工的話。工程師可以修改流程的細(xì)節(jié),重新安排工作任務(wù),隨時(shí)植入自己的想法。
- 對(duì)于某個(gè)特性是否值得開(kāi)發(fā)的爭(zhēng)論,通常是這么解決的:花一個(gè)星期的時(shí)間完成他,并在小部分人群中(如1%)進(jìn)行測(cè)試。
參考:http://www.yixieshi.com/21053.html
作者:lottelyn江琳。公眾號(hào):這個(gè)產(chǎn)品超難用(chaonanyong233),企業(yè)級(jí)軟件產(chǎn)品經(jīng)理
本文由 @lottelyn江琳 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
服務(wù)器用什么軟件,服務(wù)器硬件,這些都和軟件架構(gòu)沒(méi)關(guān)系。
架構(gòu)師只關(guān)注軟件的架構(gòu),顧名思義。PM也一樣。
運(yùn)維有運(yùn)維的活兒,專業(yè)的事交給專業(yè)的人員。后端一般不會(huì)去涉及運(yùn)維的。
此外,版本控制是項(xiàng)目經(jīng)理的事情……
有一些確實(shí)是架構(gòu)的活兒,但有一些沒(méi)關(guān)系。
分得清楚一點(diǎn)的目的,是至少出了問(wèn)題,知道去找誰(shuí)。
你說(shuō)的這些,說(shuō)實(shí)話沒(méi)多大用啊。
知識(shí)倒是知識(shí),但感覺(jué)不成體系。光是列舉名詞,連我都不知道有什么用處。
而且facebook等等自己研發(fā)的框架,沒(méi)必要說(shuō)出來(lái)。用戶量少,沒(méi)有意義。
說(shuō)白了,重要的是思想,體系。
MVC框架的內(nèi)涵是什么?彼此怎么通信,交流?
前后端的連接和通信是怎么通信的,哪些屬于前端,哪些屬于后端,數(shù)據(jù)庫(kù)要怎么設(shè)計(jì)?
這些才是架構(gòu)師工作中比較重要的一部分。
而且架構(gòu)師說(shuō)白了,也不會(huì)負(fù)責(zé)運(yùn)營(yíng)維護(hù)這一塊啊。。。。。服務(wù)器選擇什么軟件。。這個(gè)無(wú)所謂啊。架構(gòu)師不會(huì)關(guān)注。一般有專業(yè)的運(yùn)維人員。這里真心寫(xiě)得比較蒙。。。
單獨(dú)列舉N多的名詞沒(méi)有意義。
產(chǎn)品的火葬場(chǎng) ?
是不是應(yīng)該換個(gè)題目叫Facebook的XXXX,感覺(jué)會(huì)誤導(dǎo)人
一臉懵逼啊親
看完真的是一臉懵逼,沒(méi)有g(shù)et到點(diǎn)
什么鬼
EXM??
以為只有我一臉懵逼。
關(guān)注了你的公眾號(hào),為什么會(huì)講星座學(xué)啊。。。。這樣很不專業(yè)啊。跟產(chǎn)品有什么關(guān)系。。。
一臉懵逼的我。要加油充電了。
只有我是程序轉(zhuǎn)的產(chǎn)品嗎 ??
產(chǎn)品自學(xué)技術(shù)+1
求推薦自學(xué)材料 ??
產(chǎn)品自學(xué)技術(shù)+2
求推薦自學(xué)材料 ??
網(wǎng)上好多免費(fèi)視頻,像慕課網(wǎng),還有實(shí)戰(zhàn)訓(xùn)練的。找正規(guī)系統(tǒng)的,從頭看起,跟著裝軟件配環(huán)境。先從最簡(jiǎn)單的前端看起吧
一臉懵逼的看完了
看不懂
就這也叫web架構(gòu)?作者你在逗我?
作者只是簡(jiǎn)單描述一下 facebook的 基礎(chǔ)架構(gòu)
咱倆同感,我也是不想一臉懵比,所以買(mǎi)了一本架構(gòu)的書(shū)······于是更是一臉懵比 ??
來(lái)點(diǎn)APP的
不是很能看懂………