這一章要在一個(gè)現(xiàn)有的內(nèi)部知識(shí)庫(kù)之外再開發(fā)一個(gè)公開的維基系統(tǒng)趋观,兩個(gè)項(xiàng)目相互獨(dú)立但是共享代碼庫(kù)和基礎(chǔ)設(shè)施扛禽。
兩個(gè)項(xiàng)目都有著自己的地盤,但是由于共享基礎(chǔ)設(shè)施皱坛,所以還是會(huì)有互相影響编曼。例如,如果維基系統(tǒng)受到攻擊剩辟,導(dǎo)致存儲(chǔ)空間耗盡掐场,內(nèi)部的知識(shí)庫(kù)系統(tǒng)就會(huì)崩潰往扔。文中還提到另外一個(gè)共享的組件,Markdown語(yǔ)法轉(zhuǎn)換器熊户,也可能因此受到攻擊萍膛。【這一小節(jié)的主要問(wèn)題是嚷堡,一個(gè)內(nèi)部的重要程度更高的系統(tǒng)蝗罗,可能會(huì)因?yàn)榱硪粋€(gè)公開系統(tǒng)受到攻擊而癱瘓。而當(dāng)不存在這個(gè)公開系統(tǒng)時(shí)蝌戒,內(nèi)部系統(tǒng)即使沒(méi)有經(jīng)過(guò)充分的優(yōu)化串塑,由于很少會(huì)受到攻擊,也就很少會(huì)出現(xiàn)問(wèn)題北苟。這里主角通過(guò)分析發(fā)現(xiàn)了一些隱藏的依賴并提供了解決方案拟赊。但是條件允許時(shí),最好還是隔離基礎(chǔ)設(shè)施粹淋,避免那些一時(shí)注意不到的相互依賴導(dǎo)致的問(wèn)題吸祟。】
除了基礎(chǔ)設(shè)施桃移,數(shù)據(jù)層面也可能有相互依賴屋匕。另外一個(gè)是,主角添加了一個(gè)側(cè)邊欄借杰,會(huì)根據(jù)標(biāo)題長(zhǎng)度自動(dòng)擴(kuò)展寬度过吻,當(dāng)標(biāo)題過(guò)長(zhǎng)時(shí)就會(huì)嚴(yán)重干擾頁(yè)面內(nèi)容,同屏也是一種相互依賴蔗衡∠怂洌【不太了解數(shù)據(jù)庫(kù),對(duì)文中提到的數(shù)據(jù)庫(kù)模式也不是很明白绞惦。大概理解的意思是逼纸,即使代碼是相互獨(dú)立的,也會(huì)存在依賴济蝉,一切共享的資源(甚至是屏幕)都會(huì)產(chǎn)生依賴關(guān)系杰刽。】
還有依賴外部api的情況王滤,如果請(qǐng)求比較頻繁贺嫂,會(huì)對(duì)api產(chǎn)生較大的壓力。這時(shí)候如果數(shù)據(jù)并不需要實(shí)時(shí)更新的話雁乡,可以考慮定時(shí)拉取數(shù)據(jù)第喳,然后讀取數(shù)據(jù)庫(kù)。外部api出現(xiàn)問(wèn)題時(shí)踱稍,至少還有個(gè)過(guò)時(shí)的數(shù)據(jù)可以用曲饱》园希【主角在這里用的定時(shí)方法是crontab,但是個(gè)人感覺(jué)crontab的維護(hù)性比較差渔工,不知道有沒(méi)有更好的方法锌钮。在之前的工作里也碰到過(guò)類似的問(wèn)題,其他部門頻繁拉取我們提供的一個(gè)接口導(dǎo)致我們這邊的服務(wù)崩潰引矩,然后我們反饋?zhàn)屗麄冇梦覀兊呐拷涌诤喜⒗〈螖?shù)以降低壓力梁丘。】
復(fù)用舊代碼時(shí)旺韭,由于老代碼設(shè)計(jì)時(shí)并沒(méi)有考慮現(xiàn)在的場(chǎng)景氛谜,使用時(shí)會(huì)產(chǎn)生不可預(yù)知的問(wèn)題。復(fù)用代碼時(shí)要注意使用范圍区端、性能標(biāo)準(zhǔn)或隱私安全級(jí)別的改變值漫。【最簡(jiǎn)單的場(chǎng)景就是织盼,一段只是內(nèi)部使用的代碼放到公開環(huán)境杨何,就會(huì)有很多可攻擊的漏洞。一個(gè)系統(tǒng)要公開使用時(shí)沥邻,一定要進(jìn)行充足的測(cè)試危虱,否則影響的不僅僅是單個(gè)系統(tǒng)√迫】
另外要注意的是埃跷,一定要建立監(jiān)控機(jī)制,能迅速處理異常情況邮利,而不是等到競(jìng)爭(zhēng)對(duì)手都知道了才開始處理弥雹。