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

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


咨詢
建站咨詢
