不論是java仍是.net基礎設施必不可少。java
MQ:程序員
若是發現MQ是瓶頸。無論用的是rabbitmq仍是kafka,其餘的也好。做爲生產者要確認超時時間、重試機制、異步線程池。消費方要作兩件事:發現和解決。發現的主要是經過積壓閾值最快發現問題。解決的方法主要有:短時間方案:增大線程數,增長服務器。長期須要優化邏輯。積壓閾值的設置主要取決於對積壓的容忍程度,好比咱們的服務對延時很敏感,那麼設置積壓閾值爲50或者100。這樣有問題能夠快速發現。面試
緩存:redis
緩存的話,不論是tair仍是redis或者memcached。咱們對緩存的寫入成功和數據存在性都不能強依賴。因此基本要作到緩存讀取不成功就須要再次查DB。並且無論出什麼問題,對程序來講,就是拋異常了。因此必定要異常捕獲。數據要用異步線程池異步寫入。監控要作好。咱們有個服務要作一層緩存。咱們組的兄弟比較擔憂,問我瞭解不瞭解冷熱啓動的概念。這個其實須要去諮詢維護服務的人怎麼定義這個概念。通常來說:冷啓動數據是從磁盤加載的,熱啓動是從內存加載的。數據庫
超時和重試:apache
爲了防止別的服務出問題,必定優化好超時時間和重試機制。超時時間的定義通常設置爲一個請求處理99.9%的耗時時間的5到10倍。這是由於考慮到跨機房等網絡耗時的問題。雖然運維的同事會告訴說跨機房之間的時延也就是1ms或者2ms的事情,可是實際值要大於這個值,因此通常設置超時時間是100ms起步。不少請求設置了這個值仍是超時了,不要緊,就是截獲一個異常而後重試。若是服務不重要,好比展現的時候,去取一個展現的key的字典值,也能夠不重試。通常的RPC組件默認重試是3次。緩存
通常超時的異常有如下特徵:服務器
java.lang.reflect.UndeclaredThrowableException at com.sun.proxy.$Proxy67.xxxx(Unknown Source) at Caused by: org.apache.thrift.TException: tthrift remote(IP:端口) invoke(xxxx) timeout, traceId:-2093033244087395764, timeout:100
Unknown Source:遠程問題的特徵之一微信
timeout是超時的特徵網絡
服務隔離:
服務隔離是爲了減小損失的影響範圍,避免雪崩效應。好比咱們有一些外部的依賴:咱們依賴微信支付的穩定性、支付寶支付的穩定性、銀聯支付的穩定性。那麼我須要按照這幾種通道作物理隔離,能夠部署相同的代碼可是部署在不一樣的機器羣。
組件版本及時升級:
好比httpclient4.3的版本有個bug併發量大的時候會阻塞。以前在樂視的時候,部門有個小組的服務就發生過這樣的線上問題。
及時下線再也不使用的代碼:
可能在一個團隊中不少程序bug都是由於存在太多的兼容邏輯和臨時代碼,寫這些邏輯的人若是沒有加上很好的註釋,在用完的時候也沒有及時清理。後來維護的人看到這段毫無道理的代碼不敢動。程序裏大量的IF和ELSE,很容易踩坑。招聘的時候卡的很嚴,不少面試者不服氣,我也能寫出來代碼。可是會寫代碼和會寫代碼是不同的。咱們需求很急,可是寧願不作也不要一個寫出一堆問題代碼,到處是坑,難以維護代碼的程序員。
數據庫:
一個數據表的數據過多,對更新和查詢性能都有影響。對於再也不使用的數據要及時備份清走。通常數據庫的容量剩餘不到60%, 就要考慮分庫分表了。通常一臺物理機寫入能力也不能高於QPS1500。因此對於主從延時不是很敏感的業務場景,必定要作好讀寫分離。雖然作了讀寫分離,若是讀和寫的代碼在一個事務裏,其實都是走的主庫。杜絕慢查詢。
梳理好依賴:
開發一個系統,最忌諱的是沒有靈魂。來什麼需求都接。把系統搞得很亂。梳理好系統的邊界和定位。咱們應該依賴什麼服務,是強依賴仍是能夠降級的弱依賴。調用系統的調用方須要什麼東西,咱們是應該給提供,仍是讓他們本身去解決。
總結:
上面提到的哪一步沒有作好,均可能引起蝴蝶效應。好比:一個MQ的消費能力差,積壓了,生產者同步寫入,寫入等待。另一個服務調用了這個接口,還把這個調用包裹到事務裏,致使這個事務長時間不提交。這樣的請求來幾個,線程池滿了,整個服務就掛了。若是別人調用這個服務,超時時間設置的過長,別的服務也跟着線程池滿,掛掉了。若是沒作好物理隔離,全部服務都掛了。
跑題時間:
瑪格麗特.米切爾寫的《飄》英文原名是《gone with the wind》,意思是美國南部的奴隸制文明一去不返,中文的翻譯徹底沒有這種韻味。女主人公斯嘉麗愛慕阿希禮的高貴氣質,冒着生命危險爲他作了不少的事情。而阿希禮只在斯嘉麗須要的時候給了她一把土。當時光沉澱了一切,斯嘉麗意識到本身愛上的只是本身想象出來的一我的,基於阿希禮。阿希禮只是空有一副皮囊,他的靈魂基於他的妻子梅蘭。而斯嘉麗本身的丈夫白瑞德才更配的上本身的靈魂。愛情來的時候原本就是毫無道理,而本身困境中望着你,你一次次將我逼進絕望。我一次次從絕望中翻身的強大會將你從內心擠走。一個再堅強的女孩子最後也會愛上讓本身不用堅強的人。
喜歡作魚頭雞湯。魚肉能夠作出不少種花樣,而魚頭吃起來比較費勁,骨頭多,作湯最好。雞片入鍋,加上水豆豉,枸杞、薑片、甘草。將魚頭放到笊籬裏,水煮到笊籬裏只剩魚骨,將笊籬拿出。關火裝盤便可。好湯關鍵是食材,食材越好,調料能夠越少。
世界上最遙遠的距離是魚和飛鳥的距離,一個在天際一個卻深潛水底。我卻恰恰想讓他們在一塊兒。即便不用一塊兒成爲湯,他們也能夠在水面的一瞬間相遇。世界上最遙遠的距離是我變成了你最喜歡的樣子站在你面前,卻不喜歡你。