產(chǎn)品經(jīng)理:不得不懂的基礎(chǔ)技術(shù)知識(shí)
剛?cè)腴T產(chǎn)品,和開發(fā)溝通的時(shí)候總是被懷疑智商?沒(méi)事,本文和你分享一下那些溝(si)通(bi)經(jīng)歷,并告訴你產(chǎn)品經(jīng)理必須知道的基礎(chǔ)技術(shù)知識(shí)!
一入產(chǎn)品深似海。身為產(chǎn)品汪,我想說(shuō)產(chǎn)品汪和程序猿是兩個(gè)物種,一個(gè)來(lái)自金星,一個(gè)來(lái)自火星,腦結(jié)構(gòu)、腦回路截然不同,關(guān)鍵是他們還健忘!
雖說(shuō)“人人都是產(chǎn)品經(jīng)理”,但也造成產(chǎn)品成為整個(gè)行業(yè)“鄙視鏈”的末端。
C開發(fā)看不起做C++開發(fā),C++開發(fā)看不起Java開發(fā),Java開發(fā)看不起C#開發(fā),C#開發(fā)看不起做前端開發(fā)。但他們確都有個(gè)共同點(diǎn),就是一致覺得產(chǎn)品是超低智商生物。
溝通不易,但不得不溝通!
聽不懂的時(shí)候怎么辦,如果只是干等,那等同挖坑埋自己。和開發(fā)溝通之前一定要做足功課,否則分分鐘被噴!十幾個(gè)開發(fā)一起噴你,那就是群毆。
希望這篇文章能給剛?cè)腴T的產(chǎn)品補(bǔ)點(diǎn)技術(shù)能量,關(guān)愛程序猿。
曾經(jīng)你以為,產(chǎn)品的日常黑話是:
我不管,反正你要實(shí)現(xiàn)!
做這么點(diǎn)東西要那么久嗎,分分鐘就能搞定吧!
要不你先做一版,先看看效果再說(shuō),不行再改。
我的需求很簡(jiǎn)單,很簡(jiǎn)單的,照著這個(gè)做就行了,一模一樣就好!
現(xiàn)實(shí)卻是:
好的,我今晚加班,晚上把原型和RFP郵件發(fā)給你們。
別慌,我去跟領(lǐng)導(dǎo)申請(qǐng)下增加開發(fā)資源!
穩(wěn)住,你們先榮耀一把吧,晚上一起加班呀。
如果你還行走在互聯(lián)網(wǎng)圈子里,基礎(chǔ)技術(shù)知識(shí)是產(chǎn)品必須要了解的。
我日常游走在一群前后端狂魔中,被灌輸很多毒藥,但也只能自行一一消化,現(xiàn)在一一吐露。
一、少不了的接口
說(shuō)到接口,它“無(wú)處不在”,當(dāng)打開APP的時(shí)候,你會(huì)看到一個(gè)菊花轉(zhuǎn)啊轉(zhuǎn)啊轉(zhuǎn)呀,然后加載出來(lái)的那些文字、圖表、炫酷的動(dòng)畫就是前端ajax通過(guò)接口提交數(shù)據(jù)從后端請(qǐng)求回來(lái)的數(shù)據(jù)。
一個(gè)完整的APP項(xiàng)目一般都是由客戶端(前端)和服務(wù)端(后端)相結(jié)合。
- 接口,就是后端將數(shù)據(jù)源或數(shù)據(jù)庫(kù)提供給外部應(yīng)用去調(diào)用的一段程序。
- 接口可以完成某個(gè)任務(wù),但是它需要有相應(yīng)的輸入(即入?yún)ⅲ?。在工作中,少不了要定義五花八門的接口。
后端定義好URL,前端按照規(guī)定的格式請(qǐng)求它,它就會(huì)把數(shù)據(jù)給你,這就是接口。
前端負(fù)責(zé)將數(shù)據(jù)展示給用戶并快速響應(yīng)用戶所有的操作(點(diǎn)擊、長(zhǎng)按、左滑、右滑、下拉刷新等等),后端則負(fù)責(zé)將數(shù)據(jù)在服務(wù)器上進(jìn)行一系列處理(增、刪、改、查)后返回給前端。
前端負(fù)責(zé)拿到數(shù)據(jù)并處理數(shù)據(jù)展示出來(lái)。
千萬(wàn)不要覺得前端工作簡(jiǎn)單,不就是寫個(gè)html頁(yè)面展示數(shù)據(jù),但是他們需要考慮各種瀏覽器的兼容性、各種土豪、土鱉等設(shè)備適配性,響應(yīng)式設(shè)計(jì)、VR、AI、3D效果層出不窮的新概念新挑戰(zhàn),且行且珍惜。
接口四要素:
- 方法 :Post(增)、Delete(刪)、 put(改)、Get(查)
- url: /userinfo
- 請(qǐng)求參數(shù):字段、說(shuō)明、類型、備注、是否必填
- 返回參數(shù):code/message/data
看個(gè)示例:
{
“code”:200,
“msg”:“成功”,
“time”:“677788888”,
“data”:{“name”:“張三”,“age”:“23”},
}
規(guī)范的接口得保證:
- 要保持好身材,瘦,瘦,瘦!盡量前端不要處理業(yè)務(wù)邏輯、不進(jìn)行金額計(jì)算、且減少處理請(qǐng)求參數(shù)的校驗(yàn);
- 要有可拓展性:文章、圖片最好由后端來(lái)提供;
- 要可靠安全、性能優(yōu)化、體驗(yàn)流暢。
在項(xiàng)目進(jìn)行中,接口聯(lián)調(diào)尤為關(guān)鍵。
接口聯(lián)調(diào),就是[前后端平心靜氣、坐在一起校對(duì)數(shù)據(jù)]==[一言不合就開懟、項(xiàng)目一完就吹水。
聯(lián)調(diào)主要是為了解決數(shù)據(jù)格式問(wèn)題和數(shù)據(jù)參數(shù)問(wèn)題。
這里提一下接口文檔。
接口文檔一般由后端進(jìn)行編寫,需要和前端一起協(xié)商補(bǔ)充,注意要溝通、溝通、溝通!在項(xiàng)目開發(fā)過(guò)程中,前后端工程師會(huì)根據(jù)這份文檔為主,要共同維護(hù)和更新它,直到項(xiàng)目結(jié)束。
- 它可以讓前后端工程師圍繞一個(gè)統(tǒng)一的文檔進(jìn)行溝通交流開發(fā),減少溝通成本;
- 項(xiàng)目維護(hù)中或者項(xiàng)目人員更迭,方便后期人員查看、維護(hù),減少學(xué)習(xí)成本;
- 也可一定程度上體現(xiàn)程序猿的表(wen)達(dá)(mang)能力;
- 最重要一點(diǎn),它可以是后期甩鍋的強(qiáng)有力證據(jù)。
通常,前端開發(fā)人員和后臺(tái)開發(fā)人員是不同的人。當(dāng)然,部分種子選手兩者兼顧,曰全棧工程師(仰望大神)。不過(guò),前后端的思維模式不一樣,要打造一個(gè)全棧工程師,學(xué)習(xí)成本極高。
一般來(lái)說(shuō),核心業(yè)務(wù)都會(huì)分離開,畢竟人的精力有限,要保質(zhì)保量保安全,一個(gè)人兼顧不過(guò)來(lái)。
附上一小段前后端聯(lián)調(diào)接口日常對(duì)話:
后臺(tái):接口好了,你試試。
前端:不行,500。
后臺(tái):我看看。
半個(gè)小時(shí)飄過(guò)。
后臺(tái):好了,修復(fù)了個(gè)bug,你再試試。
前端:不行呀,還是500。
過(guò)了很久……
后臺(tái):好了,我重構(gòu)了下代碼,參數(shù)改了,接口文檔有更新,你看看。
前端:好的(心里MMP)。
產(chǎn)品:下周一提測(cè)哦。
前端、后臺(tái):網(wǎng)易云音樂(lè)-涼涼……
二、坑不死你的“寫死”
不是你們說(shuō)的那個(gè)編劇又把男主角寫死的那個(gè)意思。
回到正題,我們前面說(shuō)到了接口可以請(qǐng)求到數(shù)據(jù)。
對(duì)一個(gè)頁(yè)面而言,頁(yè)面的數(shù)據(jù)一方面由前端直接寫死,也就是靜態(tài)數(shù)據(jù),另一部分需要有后端接口提供,前端需要從后端請(qǐng)求接口拿到數(shù)據(jù)并按照要求展示到頁(yè)面上,比如淘寶的商品列表。
但數(shù)據(jù)有靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù),有些數(shù)據(jù)可以由前端寫死的,雷打不動(dòng)。這就是靜態(tài)數(shù)據(jù)。
例如某些APP首頁(yè)下方的那些TAB欄,就是寫死的,因?yàn)槟切㏕AB基本不會(huì)有變化。
類比你去飯店吃飯,你點(diǎn)了個(gè)螺獅粉,老板問(wèn)你要不要辣,你腦子一熱就說(shuō)加辣,那端上來(lái)的肯定是紅通通的一端,基本就這樣了。如果你覺得辣,那你只能重新點(diǎn)一碗。
- 優(yōu)點(diǎn):減少和服務(wù)端進(jìn)行請(qǐng)求。
- 缺點(diǎn):后期如有擴(kuò)展,要填坑。
三、高逼格的組件及框架
跟前端小伙交(si)流(bi)多了,組件這個(gè)詞,除非你聾,不然一定會(huì)有所耳聞。
前端在寫頁(yè)面的時(shí)候,發(fā)現(xiàn)很多頁(yè)面有相似的地方,相似的地方功能也相同。比如都是一個(gè)表單,一個(gè)banner輪播圖,一個(gè)下拉框。So,為了提高代碼復(fù)用性,減少重復(fù)性的開發(fā),就把頁(yè)面封裝起來(lái)以便下次復(fù)用,這就是一個(gè)組件。
組件可以看作是自定義的CSS+HTML+JavaScript重新組合,它是一種可拼裝的功能集合。
簡(jiǎn)單說(shuō)下HTML+CSS+JavaScript,舉個(gè)某寶的首頁(yè),首頁(yè)看到的圖片、文字都是一個(gè)個(gè)的HTML元素,然后頁(yè)面的背景顏色、圖片大小,按鈕位于整個(gè)頁(yè)面的什么位置,這就是CSS做的。
至于JavaScript,簡(jiǎn)稱js,可以看成首頁(yè)的大腦,主要實(shí)現(xiàn)內(nèi)部的邏輯,比如按鈕點(diǎn)擊之后怎么處理,界面之間如何跳轉(zhuǎn),什么時(shí)候刷新信息,如何請(qǐng)求數(shù)據(jù)。它需要把后端返回的數(shù)據(jù)添加到頁(yè)面中,或者讓元素運(yùn)動(dòng)起來(lái),或者是改變頁(yè)面的CSS,或者是操作HTML元素。
?類比產(chǎn)品Axure作原型圖,每個(gè)頁(yè)面都需要有頂部狀態(tài)欄,我們會(huì)運(yùn)用幾個(gè)按鈕、矩形框進(jìn)行組合,命名為母版。
類比我們以前高考備戰(zhàn)采用大量的習(xí)題戰(zhàn)術(shù),我們會(huì)有一本錯(cuò)題集,學(xué)霸們會(huì)怎么利用這本錯(cuò)題集呢?他們會(huì)按照考點(diǎn)對(duì)錯(cuò)題集分類。對(duì)組件也是一樣,有相似的功能可以歸并為一類。
你寫的代碼越來(lái)越多,你封裝的組件就越來(lái)越多。慢慢的,你就有個(gè)組件庫(kù),包括樣式組件、UI組件、基礎(chǔ)組件、業(yè)務(wù)組件等等。Perfect,組件還可以進(jìn)行再組合,把組件再整合起來(lái),是一種組件間相互關(guān)系的設(shè)計(jì)。
類比你手機(jī)裝了支付寶APP,它可以用來(lái)買理財(cái)產(chǎn)品、可以用來(lái)買保險(xiǎn),可以使用第三方服務(wù),但是對(duì)一些人而言,他不需要這些功能,他只是把錢放在余額寶里,偶爾迷茫的時(shí)候去看一眼。
框架不是越大越好??蚣苤恍璞A艋镜墓δ埽撬鼤?huì)提供方式給你去擴(kuò)展,這才是好的框架。
四、天天念叨的DOM
- DOM全稱Document Object Model,翻譯就是文檔對(duì)象模型。
- DOM是一系列功能集合,是處理HTML和XML文檔的編程接口。
- DOM允許開發(fā)人員從文檔中增、刪、查、改頁(yè)面數(shù)據(jù)。直白的講,它給文檔提供了一種結(jié)構(gòu)化的表示方法,可以改變文檔的內(nèi)容和呈現(xiàn)方式。
- DOM技術(shù)使頁(yè)面可以動(dòng)態(tài)地變化,如可以動(dòng)態(tài)地顯示或隱藏一個(gè)元素,改變它們的屬性,增加一個(gè)元素等。
- 可以把DOM認(rèn)為是頁(yè)面上數(shù)據(jù)和結(jié)構(gòu)的一個(gè)樹形表示。
- DOM的功能是把瀏覽器支持的文檔(包括HTML、 XML、 XHTML)都當(dāng)成對(duì)象來(lái)解析。
請(qǐng)看下面這個(gè)HTML文件:
html
head
titleDOM/title
/head
body
h1DOM Lesson one/h1
phello world/p
/body
/html
你可以看出,最外面一層是html,html嵌套著head和body標(biāo)簽,head嵌套著title標(biāo)簽,body嵌套著p標(biāo)簽。
同理,DOM也是一層一層嵌套著,這種層級(jí)關(guān)系不是隨便定的,是有一定的規(guī)則。
- 這可類比于我們存放的文件路徑: 我的電腦-CDEFG盤-學(xué)習(xí)資料-日本語(yǔ)音-島國(guó)電影。
- 也可類比于我們博大精深的親人關(guān)系表。
DOM它易用性強(qiáng),并且遍歷簡(jiǎn)單,直接操作DOM無(wú)所不能。
但操作DOM效率低,解析速度慢,內(nèi)存占用量過(guò)高,且DOM機(jī)制中所運(yùn)用的大量對(duì)象的創(chuàng)建和銷毀影響效率。
所以出現(xiàn)了虛擬DOM。這個(gè)我就編不下去了。
五、Cookie、Session、Token哪家強(qiáng)
在傳統(tǒng)的web應(yīng)用中,服務(wù)器端通過(guò)一種存儲(chǔ)機(jī)制保存了會(huì)話信息(Session)。
Session可以理解為后臺(tái)服務(wù)器的一小片內(nèi)存。
每個(gè)會(huì)話信息都對(duì)應(yīng)一個(gè)唯一的編號(hào):Session ID,這個(gè)字符串隨機(jī)產(chǎn)生,服務(wù)器端會(huì)把Session ID放在Cookie里面,Cookie數(shù)據(jù)存放在客戶端。Session的狀態(tài)是存儲(chǔ)在服務(wù)器端,客戶端存的只有Session id。
Cookie是服務(wù)器給客戶端的憑證,可以理解為存在客戶端的一個(gè)txt文件。
里面包括你登錄信息之類,這樣你下次在登錄某個(gè)網(wǎng)站,就會(huì)自動(dòng)調(diào)用Cookie,取到Session id到后端服務(wù)器獲取對(duì)應(yīng)的Session具體信息,進(jìn)行數(shù)據(jù)的保存和修改,但Cookie存放在客戶端易被盜用篡改,不是很安全。
這類比于你去逛超市,你存放了私人物品在儲(chǔ)物柜子里,它會(huì)給你個(gè)取件的紙條,等你逛完超市后,就可以掃描紙條打開柜子。
在前后端沒(méi)有分離的時(shí)候,前端頁(yè)面往往都屬于后臺(tái)管理,這個(gè)大部分是同源請(qǐng)求。
但是在前后端分離后,這個(gè)時(shí)候一般涉及到跨域,跨域的請(qǐng)求不攜帶Cookie,要攜帶Cookie又要后臺(tái)指定允許的跨域地址,比較麻煩,于是出現(xiàn)了Token。
Token就是令牌。
Token一般是由uid+時(shí)間戳+設(shè)備號(hào)+自定義規(guī)則經(jīng)過(guò)算法加密后的一串字符串。字符串通常很長(zhǎng),難偽造。
這類比于服務(wù)器生成了一個(gè)單號(hào)返回給客戶端,客戶端帶著單號(hào)過(guò)來(lái)請(qǐng)求請(qǐng)求器,這時(shí)候怎么證明單號(hào)是服務(wù)器生成的呢,可以通過(guò)單號(hào)來(lái)檢查。
比如你授權(quán)(登錄)一個(gè)程序時(shí),它就是個(gè)依據(jù),判斷你是否已經(jīng)授權(quán)程序;Token的狀態(tài)是存儲(chǔ)在客戶端。
在APP開發(fā)中,都是使用Token作為驗(yàn)證后的憑證。
一般采取的措施是客戶端輸入用戶名和密碼,客戶端登錄后,服務(wù)器端會(huì)返回一個(gè)Token,之后所有的請(qǐng)求都會(huì)帶著Token,客戶端把Token放在請(qǐng)求頭(header)里,在應(yīng)用中一般使用https會(huì)增加安全性,拿到Token才能進(jìn)入頁(yè)面內(nèi)。
后端通過(guò)檢驗(yàn)請(qǐng)求頭判斷是否登錄、是否正常請(qǐng)求、是否安全后再提供服務(wù)。
六、程序猿又說(shuō)要重構(gòu)
開發(fā)人員經(jīng)常抱怨 :
“這么爛的代碼,維護(hù)不了啦,需要重構(gòu)!”
“這代碼怎么能這么不優(yōu)雅?誰(shuí)來(lái)重構(gòu)一下?”
我。。。。忍不住給你們這些卓越的工程師打Call。
重構(gòu)是對(duì)代碼做任何更動(dòng),以增加可讀性或者簡(jiǎn)化結(jié)構(gòu),而不影響輸出結(jié)果。
- 輕一點(diǎn):優(yōu)化原有代碼,改善代碼質(zhì)量,比如三行代碼用一行就解決,降低復(fù)雜度。
- 重一點(diǎn):完全重寫,幾乎不用原來(lái)的代碼。
- 再嚴(yán)重一點(diǎn)說(shuō):為了有事干!知道它的重要性了吧!
重構(gòu)成功的話,從長(zhǎng)遠(yuǎn)來(lái)看應(yīng)該是利大于弊的,對(duì)用戶而言:更快、更流暢、更美觀;對(duì)碼農(nóng)而言:易維護(hù),更易讀,一看就是優(yōu)雅的代碼,特別是人員流動(dòng)比較大的項(xiàng)目。
作為產(chǎn)品經(jīng)理,我表示:重構(gòu)有風(fēng)險(xiǎn),重構(gòu)需謹(jǐn)慎,得做到:
1. 充分的測(cè)試!?。?!
看似簡(jiǎn)單,但是往往都做不到,項(xiàng)目成員對(duì)于充分的定義標(biāo)準(zhǔn)都不一樣,產(chǎn)品經(jīng)理永遠(yuǎn)都覺得沒(méi)有測(cè)試足夠,也不可能百分百的覆蓋率。這個(gè)時(shí)候,利用自動(dòng)化測(cè)試工具未免不是一個(gè)有效途徑。
2. 充分的溝通?。。?!
很多需求提出方不理解為什么要重構(gòu),但他們卻要為重構(gòu)買單,在他們看來(lái)往往就像個(gè)騙局。
對(duì)于新功能的重構(gòu),應(yīng)該融入到正常開發(fā)過(guò)程中,如何讓上帝理解重構(gòu)的價(jià)值,反思一下遇到的問(wèn)題:是由于早起技術(shù)架構(gòu)的缺陷,還是業(yè)務(wù)領(lǐng)域模型變動(dòng)太大?如何避免今后再次遇到,得到上帝的理解和認(rèn)可,這至關(guān)重要。
3. 充分的思量?。。?!
考慮時(shí)間成本!人力成本!學(xué)習(xí)成本!盡量避免大的重構(gòu),這樣可以減少多方的工作量,也會(huì)減少項(xiàng)目延期的風(fēng)險(xiǎn)。
對(duì)于一些核心功能,進(jìn)行重構(gòu)之前盡早告知團(tuán)隊(duì),并重點(diǎn)闡述下重構(gòu)的周期、目的以及會(huì)涉及到的業(yè)務(wù)區(qū)域,這樣做一方面可以讓項(xiàng)目經(jīng)理合理地安排排期。盡量避免上線前進(jìn)行重構(gòu),因?yàn)轱L(fēng)險(xiǎn)無(wú)法預(yù)估。
七、調(diào)試、打包、部署
啊,不是那個(gè)你去店里點(diǎn)餐,跟老板說(shuō)的那個(gè)打包!
程序猿做項(xiàng)目的時(shí)候,會(huì)在本地搭建一個(gè)開發(fā)環(huán)境,用于調(diào)試自己的代碼。
程序猿說(shuō)的碼代碼只有程序猿自己才認(rèn)識(shí),計(jì)算機(jī)根本不認(rèn)識(shí),計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制。
打包,就是將自己寫的代碼(Bug)打包成一個(gè)文件,即二進(jìn)制文件(010101這種格式)。
但要區(qū)分下,前端的打包,實(shí)質(zhì)是合并壓縮處理前端資源文件:包含HTML文件、js文件、CSS文件、圖片、字體、svg等等。
前端的打包工具, 流行的有:Gulp、Grunt、Webpack等工具。
打包工具可以讓開發(fā)網(wǎng)頁(yè)的時(shí)候使用import export require,像后端程序員一樣進(jìn)行模塊化開發(fā),每個(gè)模塊異步請(qǐng)求加載,可以減少請(qǐng)求提高性能,這樣瀏覽器可以通過(guò)少量的請(qǐng)求獲取到所需要的前端資源,節(jié)省流量,加快頁(yè)面加載速度,關(guān)鍵還起到混淆代碼的作用。
打包是為了運(yùn)行,打包完了就代表整裝待發(fā)了。
項(xiàng)目要上線的時(shí)候,程序猿要將自己的代碼部署到生產(chǎn)環(huán)境上。這需要你準(zhǔn)備就緒:版本號(hào)要高于線上版本、去除一些調(diào)試信息、混淆、簽名、做對(duì)齊等等。
部署,一般指服務(wù)器端程序上線,但是要給程序提供所需要的資源,讓它好好的運(yùn)行起來(lái)。
就像你養(yǎng)花,你如何讓它在花盆里面存活,你得有空氣,有水,有養(yǎng)料。
同樣,要運(yùn)行起你的一大坨代碼,就要配置好環(huán)境,比如使用幾個(gè)服務(wù)器、放在什么服務(wù)器上、開什么端口、怎么才能扛住大量的請(qǐng)求等等。
八、負(fù)載均衡有一手
負(fù)載均衡(又稱為負(fù)載分擔(dān)),英文名稱為L(zhǎng)oad Balance。
官方說(shuō)法:
將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。
通俗來(lái)講:就是將用戶請(qǐng)求分發(fā)到N臺(tái)服務(wù)器,一臺(tái)服務(wù)器需要處理的任務(wù)分給N臺(tái)服務(wù)器來(lái)處理,但不能簡(jiǎn)單理解為分配給所有服務(wù)器一樣多的任務(wù),因?yàn)榉?wù)器的承載能力各不相同。N臺(tái)服務(wù)器一起處理任務(wù)叫集群。
負(fù)載均衡設(shè)備不是基礎(chǔ)網(wǎng)絡(luò)設(shè)備,而是一種性能優(yōu)化設(shè)備。
負(fù)載均衡的核心就是“分散壓力”,使所有的服務(wù)器都不會(huì)超過(guò)自己可承受的程度,避免宕(dang)機(jī)。
為什么要有負(fù)載均衡,對(duì)于網(wǎng)絡(luò)應(yīng)用而言,并不是一開始就需要負(fù)載均衡,當(dāng)網(wǎng)絡(luò)應(yīng)用的訪問(wèn)量不斷增長(zhǎng),單個(gè)處理單元無(wú)法滿足負(fù)載需求時(shí),網(wǎng)絡(luò)應(yīng)用流量將要出現(xiàn)瓶頸時(shí),負(fù)載均衡才會(huì)起到作用。
類比你每逢節(jié)假日逛超市的時(shí)候,就能看到“負(fù)載均衡“的例子,收銀員高峰期只能服務(wù)10位顧客,當(dāng)做活動(dòng)時(shí)有20位顧客需要服務(wù)的話可能就會(huì)排長(zhǎng)隊(duì),這樣購(gòu)物體驗(yàn)將會(huì)很差(類比客戶抱怨系統(tǒng)/網(wǎng)站訪問(wèn)太慢)。最簡(jiǎn)單的辦法就是再招個(gè)營(yíng)業(yè)員,重新開通一個(gè)收銀窗口。
九、F5不是一個(gè)快捷鍵
其實(shí),一說(shuō)到負(fù)載均衡,就會(huì)聯(lián)想到F5=刷新快捷鍵嗎?就服你!
其實(shí)F5是只是負(fù)載均衡產(chǎn)品的一個(gè)品牌,其地位類似于諾基亞在手機(jī)品牌中的位置。
F5作為一級(jí)路由器,它是流量總?cè)肟?,相?dāng)重要,因?yàn)樗钢饨缢械恼?qǐng)求壓力。
有人會(huì)問(wèn)?為什么不搞多臺(tái)F5?
F5如此卓越穩(wěn)定,當(dāng)然貴呀!貴呀!貴呀!死心了吧。
所以在它這里不會(huì)去做運(yùn)算,它需要做的就是轉(zhuǎn)發(fā)流量<,轉(zhuǎn)發(fā)給二級(jí)路由器nginx,nginx需要解析協(xié)議內(nèi)容,做更加精細(xì)化路由。
F5和nginx其實(shí)只是負(fù)載工具,只是分工不同而已,這是他們的價(jià)值所在。
十、負(fù)載均衡實(shí)現(xiàn)一二三
1. 重定向
這種方式,是通過(guò)將請(qǐng)求全部發(fā)送到前置機(jī),由前置機(jī)通過(guò)算法得出要分配給那臺(tái)應(yīng)用服務(wù)器,然后響應(yīng)給客戶端,由客戶端重定向到應(yīng)用服務(wù)器的一種方式。
類比個(gè)例子,一家公司舉辦招聘活動(dòng),每個(gè)人都可能要去往不同的樓層進(jìn)行投遞簡(jiǎn)歷,所有的面試者都會(huì)先集中在一樓前臺(tái)處,然后由前臺(tái)MM為大家一一查詢所對(duì)應(yīng)的樓層,然后告知每一個(gè)面試者對(duì)應(yīng)的樓層,由面試者自行前往自己的樓層投遞簡(jiǎn)歷。
你可以看到,每一個(gè)的請(qǐng)求,都要重定向一下,效率不高。
2. 反向代理
這種方式,是通過(guò)在前置機(jī)使用反向代理方式,將請(qǐng)求分發(fā)到應(yīng)用服務(wù)器,客戶端無(wú)需再請(qǐng)求一次,實(shí)現(xiàn)方式通常有兩種,一種是用交換機(jī)實(shí)現(xiàn),還有一種是用nginx實(shí)現(xiàn)。
這就相當(dāng)于前臺(tái)MM為面試者查詢到對(duì)應(yīng)的樓層之后,直接將簡(jiǎn)歷分發(fā)到對(duì)應(yīng)樓層。不需要面試者再自行跑一趟。樓層收到簡(jiǎn)歷后,也會(huì)響應(yīng)請(qǐng)求。
這種方式,對(duì)比重定向,效率較高,但是由于請(qǐng)求和響應(yīng)都是通過(guò)前置機(jī)來(lái)的,所以對(duì)前置機(jī)的考驗(yàn)很大。
3. 數(shù)據(jù)鏈路返回
這種方式,通過(guò)給應(yīng)用服務(wù)器設(shè)置虛擬IP,然后通過(guò)修改mac地址的方式,將請(qǐng)求分發(fā)出去,而應(yīng)用服務(wù)器收到請(qǐng)求后,可以直接響應(yīng)給客戶端,而不需要經(jīng)過(guò)前置機(jī)。
這類比于面試者不需要通過(guò)前臺(tái)MM,自己直接將簡(jiǎn)歷投遞到對(duì)應(yīng)樓層,樓層收到簡(jiǎn)歷后,會(huì)想要面試者的請(qǐng)求。
這種方式中,由于前置機(jī)只需要接受請(qǐng)求,不需要響應(yīng)數(shù)據(jù),所以,效率較第二種較高。
十一、風(fēng)風(fēng)火火的小程序
上次前端小伙在進(jìn)行內(nèi)部分享的時(shí)候,我去偷師了一下。
小程序=高逼格一點(diǎn)的H5頁(yè)面。
微信自己定義一套html標(biāo)簽,稱之為wxml,又封裝了一些樣式規(guī)則,叫wxss,其實(shí)就等同于html+css+js。
封裝一方面是為了降低開發(fā)成本,根本上是為了收攏控制權(quán)限,開發(fā)者能用的東西越多,微信需要操心的事情也就越少。
1.要做小程序開發(fā),你得裝個(gè)開發(fā)工具,微信提供的;
附上開發(fā)地址:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html?t=20171227
2.然后,你需要去微信公眾平臺(tái)開通個(gè)小程序賬號(hào);
3.接著你就要去學(xué)js;
微信小程序用js來(lái)作為開發(fā)語(yǔ)言,用定義的wxml來(lái)描述界面,用wxss來(lái)表達(dá)樣式,這些也是最基本的幾個(gè)要素。開發(fā)語(yǔ)言不用說(shuō),js非常成熟,解析js的引擎也有很多。
十二、寫在最后
作為打不死的產(chǎn)品,我的座右銘:與天斗 、與地斗、 與程序猿斗, 其樂(lè)無(wú)窮。
千萬(wàn)不要影響他們的開發(fā),程序猿需要一片凈土。沒(méi)有買賣就沒(méi)有傷害。
最后,腦容量有限,歡迎各位補(bǔ)充。寫這種文章,我也很慌,有不對(duì)之處請(qǐng)多多指教,謝謝!
作者:黃麗嫦,微信公眾號(hào):野生派產(chǎn)品錄
本文由 @黃麗嫦 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash ,基于 CC0 協(xié)議
為妹子打call
太優(yōu)秀了,忍不住給你留言
很棒的一篇產(chǎn)品技術(shù)入門文章,贊
我還是看不懂??怎么辦
栗子不錯(cuò)
很容易讓小白理解
贊
產(chǎn)品小白學(xué)習(xí)了,希望繼續(xù)更一些產(chǎn)品和技術(shù)的通識(shí) ??
作者您好,想轉(zhuǎn)載到公眾號(hào),請(qǐng)問(wèn)需要怎么做吶?
超級(jí)超級(jí)騷氣的一片文章, 太贊。天秀~
gooooooooooood ??
??
真的是很實(shí)用易懂,對(duì)于產(chǎn)品小白非常有幫助,感謝作者!
一看就是偏前端的妹子,后端的增刪改查是add\del之類;
我居然看完了
基礎(chǔ),常用。 ??
例子舉得很生動(dòng)!受用 ?
寫的真好!真棒!
可以看出產(chǎn)品小姐姐強(qiáng)烈的求生欲了,寫的很棒,學(xué)習(xí)了,這也是技術(shù)出生的產(chǎn)品更有優(yōu)勢(shì)的原因吧
文章風(fēng)格很逗比,但是可以說(shuō)寫的非常清晰明了了,忍不住給你這樣卓越的產(chǎn)品打call,哈哈哈哈。最后想問(wèn)一下你是有技術(shù)基礎(chǔ)嗎?
有學(xué)習(xí)到知識(shí),很棒,加油 ??
感謝分享,學(xué)到很多。
對(duì)我這種產(chǎn)品新人來(lái)說(shuō)幫助太大了,謝謝!
原來(lái)是個(gè)妹子,哈哈哈,為你打call
支持一下產(chǎn)品妹子,內(nèi)容淺顯易懂,看得出來(lái),溝通肯定是你的強(qiáng)項(xiàng),平時(shí)是不是兼職做過(guò)程序員鼓勵(lì)師? ??
好看的皮囊千篇一律,有趣的靈魂萬(wàn)里挑一!
我是技術(shù)大叔、產(chǎn)品小白,收了我吧~~
拯救產(chǎn)品小白,表白表白
比心比心
原來(lái)是個(gè)女生,加分??傮w還算看得明白,但對(duì)于一些小白有些詞句還是比較難懂
雖然我全看懂啦,但是挨懟的局面還是沒(méi)有改變,尤其評(píng)審會(huì)上!有的時(shí)候互噴! 就怕開發(fā)來(lái)句:我覺得 我認(rèn)為 ~ ?
哈哈哈哈,我上一家公司那個(gè)開發(fā)懟起人來(lái)從來(lái)不會(huì)口下留情,我的上一級(jí)產(chǎn)品總監(jiān)經(jīng)常被懟的一無(wú)是處,開發(fā)老大動(dòng)不動(dòng)就來(lái)一句“這個(gè)功能實(shí)現(xiàn)不了,你行你來(lái)寫,開發(fā)團(tuán)隊(duì)你來(lái)帶”
這個(gè)不應(yīng)該回懟一句:你寫不了,就讓能寫的人來(lái)寫
心里就是這么想的,代碼產(chǎn)品能寫還要開發(fā)干嘛 ??
總算有個(gè)真實(shí)有用的技術(shù)總結(jié)了,雖然大部分我也都知道了,但是能早幾年看到這篇文章能走好多彎路啊?。?!
很接地氣,我竟然看懂了80%。。。
可以說(shuō)是生動(dòng)形象地表達(dá)了非生動(dòng)形象的事情了
寫的非常接地氣,贊一個(gè)