新聞中心
你們都是怎么確保系統(tǒng)不被突然的訪問(wèn)流量壓垮的?
在系統(tǒng)的設(shè)計(jì)之初就要想到這個(gè)問(wèn)題,建議使用微服務(wù)架構(gòu),對(duì)流量壓力大的微服務(wù),多配置服務(wù)器,沒(méi)有什么流量壓力是多配置一臺(tái)服務(wù)器不能解決的,如果不夠,那就多配10臺(tái),再不夠,就100臺(tái),簡(jiǎn)單粗暴而有效,我就不信那個(gè)邪。代碼優(yōu)化得再好,不如增加一個(gè)實(shí)例。

三河網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
兩個(gè)方向來(lái)思考和回答這個(gè)問(wèn)題:
第一點(diǎn)是努力提升整體系統(tǒng)的性能,
首先需要做壓測(cè),分析系統(tǒng)當(dāng)前的容量和瓶頸,對(duì)照對(duì)業(yè)務(wù)場(chǎng)景容量的評(píng)估,評(píng)估是否要提前做擴(kuò)容。
性能瓶頸的問(wèn)題,那就是更細(xì)的活了,需要從系統(tǒng)、架構(gòu)、接口、代碼層面來(lái)優(yōu)化。
第二點(diǎn)就是當(dāng)前系統(tǒng)總有性能的上限,遇到流量異常突增,那該怎么辦?
限流,思路是確保能處理的流量可以得到處理,超限的流量拒絕,典型場(chǎng)景是秒殺。
降級(jí),思路是保證業(yè)務(wù)的關(guān)鍵流程,舍棄分支流程。實(shí)際上降級(jí)主要用在服務(wù)不穩(wěn)定情況下,當(dāng)然高并發(fā)流量是導(dǎo)致系統(tǒng)不穩(wěn)定的一個(gè)重要因素。
另外,需要對(duì)系統(tǒng)的各個(gè)環(huán)節(jié)做好監(jiān)控,以便及時(shí)發(fā)現(xiàn)異常,及時(shí)處理。
把系統(tǒng)部署在彈性云上,則可以進(jìn)行動(dòng)態(tài)的擴(kuò)容和縮容。
最后,并不是說(shuō)上述的一個(gè)策略就能解決所有問(wèn)題,保證系統(tǒng)的高可用是一個(gè)很復(fù)雜的工作,需要方方面面的努力。
確保系統(tǒng)的高可用,要做的事情非常多,比如使用 Redis 緩存數(shù)據(jù)庫(kù)的數(shù)據(jù),降低數(shù)據(jù)庫(kù)的壓力,同時(shí)也要注意緩存穿透、雪崩、擊穿等問(wèn)題;但要是說(shuō)到“不要被突增的訪問(wèn)量擊垮”,通常就會(huì)到我們常說(shuō)的分布式架構(gòu)三板斧:限流、熔斷、降級(jí)。
限流理解起來(lái)很簡(jiǎn)單,比如故宮每天只賣八萬(wàn)張票,超過(guò)八萬(wàn)的游客,無(wú)法買票進(jìn)入,因?yàn)槿绻^(guò)八萬(wàn)人,景點(diǎn)的工作人員可能就忙不過(guò)來(lái),過(guò)于擁擠的景點(diǎn)也會(huì)影響游客的體驗(yàn)和心情,并且還會(huì)有安全隱患;只賣N張票,這就是一種限流的手段。
軟件架構(gòu)中的限流也一樣,就是流量徒增的時(shí)候,只允許一部分流量進(jìn)來(lái),而多余的那部分,就拒絕掉。
通常我們可以通過(guò)限流算法達(dá)到這樣的效果,比如計(jì)數(shù)器法、滑動(dòng)窗口法、漏桶算法、令牌桶算法,每個(gè)算法的詳解之前的文章有介紹過(guò),這里就不在占用篇幅了。上面的例子中,故宮每天只賣八萬(wàn)張票,有點(diǎn)兒類似于令牌桶算法,票就相當(dāng)于令牌,只有拿到令牌的請(qǐng)求,才能訪問(wèn)到服務(wù)。
有些程序員一直堅(jiān)持反對(duì)使用redis怎么辦?
一方面我肯定是不支持這些“上古”程序員做法的,但是另外一方面,我也是非常理解他們的想法的。
首先,有些公司的風(fēng)格就是:“可以不干,但是不能犯錯(cuò)”。
我曾經(jīng)在一家央企的 IT 部門工作,對(duì)此有著深刻的認(rèn)識(shí):你的系統(tǒng)可以一年到頭沒(méi)有什么新功能,幾年不做升級(jí),但是千萬(wàn)不能有生產(chǎn)事故,否則可能真的會(huì)“萬(wàn)劫不復(fù)”,也就是績(jī)效會(huì)低、獎(jiǎng)金會(huì)少,甚至升職無(wú)望。
在這種環(huán)境中工作的大部分老員工,除非是迫不得已,幾乎不會(huì)主動(dòng)去升級(jí)和完善系統(tǒng)的,“能穩(wěn)定運(yùn)行就行了”。
分享大佬的回答,似乎很有道理。
不要告訴我們用不用redis,你得告訴我們你為什么想要用redis,不用redis業(yè)務(wù)會(huì)有什么問(wèn)題?天下沒(méi)有免費(fèi)的午餐,不動(dòng)腦子直接上緩存/NOSQL可能會(huì)帶來(lái)更多更嚴(yán)重的問(wèn)題。
單一數(shù)據(jù)庫(kù)最大的好處在于事務(wù)性實(shí)現(xiàn)簡(jiǎn)單,由數(shù)據(jù)庫(kù)自己保證。舉個(gè)簡(jiǎn)單的例子,下訂單需要扣除一個(gè)庫(kù)存,然后插入一條訂單條目,如果庫(kù)存和訂單都是數(shù)據(jù)庫(kù)表項(xiàng)的話這個(gè)事務(wù)是無(wú)懈可擊的,如果庫(kù)存在redis里,訂單條目是MySQL,通常就需要先寫(xiě)redis,成功之后再寫(xiě)數(shù)據(jù)庫(kù),如果寫(xiě)數(shù)據(jù)庫(kù)失敗了還需要回滾redis,如果最后這個(gè)回滾因?yàn)榫W(wǎng)絡(luò)之類的原因失敗了,就會(huì)多扣一個(gè)庫(kù)存。不要以為這些事情很好解決,事務(wù)性處理的復(fù)雜性遠(yuǎn)遠(yuǎn)超過(guò)你的想象,比如說(shuō)還有寫(xiě)MySQL在提交的一瞬間連接斷了這種情況,你都沒(méi)法判斷提交到底成功了還是失敗了,那你的redis是回滾還是不回滾?
所以引入新的層一定要說(shuō)清楚,你為了什么目的一定要用緩存/NOSQL,能接受什么樣的一致性模型,否則就是在胡鬧。
這和眼鏡一樣 需要的時(shí)候 自然就會(huì)去用了 你說(shuō)我就不喜歡戴眼鏡 那可以 要不你就眼前一片模糊自己忍著 要不你就去做手術(shù) 只不過(guò)戴眼鏡是解決你近視問(wèn)題的一種比較簡(jiǎn)單高效又多人用而且成熟的手段而已
一個(gè)非常好的問(wèn)題。我是工作多年的Web應(yīng)用架構(gòu)師,來(lái)回答一下這個(gè)問(wèn)題。歡迎關(guān)注我,了解更多IT專業(yè)知識(shí)。
題主沒(méi)有說(shuō)明原因和理由,在實(shí)際項(xiàng)目中可能出現(xiàn)多種場(chǎng)景,不能一概而論。
1,前期預(yù)研項(xiàng)目,Demo演示功能,沒(méi)必要使用
如果原型驗(yàn)證的重點(diǎn)是某一項(xiàng)技術(shù),沒(méi)時(shí)間開(kāi)發(fā)那么完善的系統(tǒng),這時(shí)先不用Redis搭建緩存優(yōu)化性能什么的,是可以接受的。
2,小型單機(jī)項(xiàng)目,功能簡(jiǎn)單,業(yè)務(wù)邏輯單一
功能簡(jiǎn)單的小項(xiàng)目,用戶量少,或者對(duì)運(yùn)行效率沒(méi)那么敏感,為了保持一個(gè)簡(jiǎn)單的系統(tǒng)架構(gòu),方便運(yùn)維管理,倒是不必要引入那么多的依賴服務(wù),也不用占用不必要的服務(wù)器資源。
3,公司內(nèi)部項(xiàng)目,早期開(kāi)發(fā)階段,快速迭代,業(yè)務(wù)需求變化大
有那么一類軟件系統(tǒng),是給公司內(nèi)部自己人用的,各個(gè)部門老大就是拍腦袋定需求的核心用戶,帶來(lái)的問(wèn)題就是需求改動(dòng)大、開(kāi)發(fā)返工甚至項(xiàng)目取消都有很大的可能性。尤其是在早期開(kāi)發(fā)階段,還沒(méi)有沉淀下來(lái)一個(gè)相對(duì)明確的系統(tǒng)框架,這時(shí)的重點(diǎn)應(yīng)該放在業(yè)務(wù)需求上,不用過(guò)度設(shè)計(jì)技術(shù)架構(gòu)。
4,項(xiàng)目中已經(jīng)使用了其它類似的技術(shù)框架,比如Memcached, MongoDB,等等
Redis是一個(gè)高性能的key-value數(shù)據(jù)庫(kù),常用于搭建緩存系統(tǒng),提高并發(fā)響應(yīng)速度。Redis使用非常普遍,簡(jiǎn)單輕量,部署維護(hù)方便,是很多人使用的第一個(gè)NoSQL數(shù)據(jù)庫(kù),很受歡迎。
類似的技術(shù)解決方案也可以使用其它框架,比如Memcached,MongoDB,不同技術(shù)背景的個(gè)人和團(tuán)隊(duì)有不同偏好,很正常。
搞Linux運(yùn)維的,需要學(xué)習(xí)些什么語(yǔ)言?
Linux運(yùn)維主要學(xué)習(xí)以下語(yǔ)言:
運(yùn)維工作尤其是linux運(yùn)維,其實(shí)最考驗(yàn)?zāi)愕哪芰?,因?yàn)樾枰獙W(xué)習(xí)的東西實(shí)在太多,
你既要懂網(wǎng)絡(luò):思科華為設(shè)備的配置;
要懂性能調(diào)優(yōu):包括lamp或者lnmp的性能調(diào)優(yōu),也包括linux操作系統(tǒng)調(diào)優(yōu);
要懂?dāng)?shù)據(jù)庫(kù)mysql或者nosql(例如mongodb):
要懂編程語(yǔ)言:Shell是最基本的,還要學(xué)習(xí)perl,python,甚至ruby和C++等(因?yàn)橐恍┸浖沁@些語(yǔ)言編寫(xiě)的),還得熟練掌握awk,sed,grep以及正則表達(dá)式;
要懂一些調(diào)試排錯(cuò)的命令工具的使用,比如htop,dstat,strace,systemtap,iostat,sar等;
要有比較好的英語(yǔ)水平:因?yàn)楹芏嘬浖蛘吖ぞ咭约俺霈F(xiàn)問(wèn)題排錯(cuò)的答案都不是國(guó)人所做,甚至還需要和原作者交流,在谷歌group里面留言討論
要有堅(jiān)強(qiáng)的體魄和超時(shí)工作的心理準(zhǔn)備:升級(jí)維護(hù)都是在大家還在做夢(mèng)時(shí)候。夜里2點(diǎn)網(wǎng)站掛了你也得起來(lái),手機(jī)不停的接收各種報(bào)警短信...
要有背黑鍋的忍耐力:運(yùn)維一直是公司爹不疼娘不愛(ài)的位置,別人做好了和你無(wú)關(guān),你做差了別人作不好就是你影響的。人力和財(cái)務(wù)是技術(shù)部門的服務(wù),運(yùn)維就是各技術(shù)部門的服務(wù),大到線上操作,小到幫助公司其他使用linux桌面的同事,公司內(nèi)部機(jī)房,IDC維護(hù)(跑腿搬服務(wù)器)。
到此,以上就是小編對(duì)于mongodb數(shù)據(jù)還原的問(wèn)題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。
分享標(biāo)題:你們都是怎么確保系統(tǒng)不被突然的訪問(wèn)流量壓垮的?(mongodb還原超時(shí)如何解決)
當(dāng)前路徑:http://m.fisionsoft.com.cn/article/dpipdch.html


咨詢
建站咨詢
