摘要:現(xiàn)在使用做方面的開發(fā)工作,使用了和作為基礎(chǔ)數(shù)據(jù)的支撐,因為系統(tǒng)需要長期地運行,所以不確定當(dāng)中途某個數(shù)據(jù)庫連接斷掉之后會發(fā)生什么情況,暫時不從源代碼入手吧,先手動嘗試觀察一下,先觀察表象,再深入理解經(jīng)過測試,發(fā)現(xiàn)通過的客戶端獲取的連接在中途發(fā)
現(xiàn)在使用nodejs做tcp方面的開發(fā)工作,使用了redis和mongodb作為基礎(chǔ)數(shù)據(jù)的支撐,因為系統(tǒng)需要長期地運行,所以不確定當(dāng)中途某個數(shù)據(jù)庫連接斷掉之后會發(fā)生什么情況,暫時不從源代碼入手吧,先手動嘗試觀察一下,先觀察表象,再深入理解
經(jīng)過測試,發(fā)現(xiàn)通過nodejs的redis客戶端獲取的連接在中途發(fā)生斷線之后(模擬場景有手動Kill掉TCP連接和手動關(guān)閉redis-server兩種情況)會進(jìn)行自動重連,而且在中途進(jìn)行操作,回調(diào)函數(shù)中會返回錯誤信息,這樣的話至少代碼不會爆掉,進(jìn)程也不會掛,最神奇的是之前獲取到的操作句柄還能夠正常使用,重連發(fā)生在這個操作對象內(nèi)部,對開發(fā)者是不可見,應(yīng)該來說很友好吧,最神奇的是nodejs驅(qū)動開發(fā)者考慮到了很多細(xì)節(jié)的問題,比如開始的時候客戶端訂閱了某個頻道,在進(jìn)行重連后還會初始化一次(內(nèi)部機(jī)制之后看源代碼之后才能下結(jié)論),看來真是省心啊。
mongodb的官方nodejs驅(qū)動有個很厲害的地方,當(dāng)操作過程中連接被斷掉后(直接手動關(guān)閉mongodb-server),如果后續(xù)還有操作,將會被暫時存儲起來,當(dāng)連接被重新建立之后,所有“緩沖區(qū)”的數(shù)據(jù)將會被寫入數(shù)據(jù)庫,看來還是很不錯的哦,但是目前待思考的地方是如果有大量數(shù)據(jù),“緩存區(qū)”會在什么情況下清空呢?(看來研究一下驅(qū)動很有必要了)
他們的共同點就是第一次必須先獲取操作對象,否則代碼直接會爆掉的(不過這點上redis就做得比較好了,無論是否連接上客戶端都返回一個操作對象,看來mongodb其實還可以改進(jìn)一下),這個當(dāng)然好理解,所以現(xiàn)在系統(tǒng)在最開的時候會有一個初始化階段,負(fù)責(zé)初始化數(shù)據(jù)緩存池連接(包括redis和mongodb),接下來就不怕啦,即使是中途tcp斷掉一段時間還是可以接受的
無論在使用mongo還是redis在進(jìn)行寫操作的時候,都一定使用回調(diào)函數(shù),這樣才能更加保險,否則很有可能都沒有寫進(jìn)去,又或者是數(shù)據(jù)在重連成功前被清除掉了呢。
@todo mongodb nodejs drive buffer size before connected again...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/18708.html
摘要:關(guān)鍵概念理解觀察者設(shè)計模式中主要區(qū)分兩個概念觀察者指觀察者對象,也就是消息的訂閱者被觀察者指要觀察的目標(biāo)對象,也就是消息的發(fā)布者。 原文首發(fā)于微信公眾號:jzman-blog,歡迎關(guān)注交流! 最近補一下設(shè)計模式相關(guān)的知識,關(guān)于觀察者設(shè)計模式主要從以下幾個方面來學(xué)習(xí),具體如下: 什么是觀察者設(shè)計模式 關(guān)鍵概念理解 通知觀察者的方式 觀察者模式的實現(xiàn) 觀察者模式的優(yōu)缺點 使用場景 下面...
摘要:觀察者模式是一種使用頻率非常高的設(shè)計模式,無論是移動應(yīng)用應(yīng)用或者桌面應(yīng)用,觀察者模式幾乎無處不在,它為實現(xiàn)對象之間的聯(lián)動提供了一套完整的解決方案,凡是涉及到一對一或者一對多的對象交互場景都可以使用觀察者模式。 觀察者模式(Observer Pattern)屬于對象行為型模式的一種,定義對象之間的一種一對多依賴關(guān)系,使得每當(dāng)一個對象狀態(tài)發(fā)生改變時,其相關(guān)依賴對象皆得到通知并被自動更新。 ...
摘要:為了幫助灰太狼擺脫被老婆平底鍋抽的悲劇,發(fā)起了解救灰太狼的行動,必須要知道觀察者模式。持有觀察者對象的集合。設(shè)計模式源碼下載 相信大家都有看過《喜洋洋與灰太狼》,說的是灰太狼和羊族的斗爭,而每次的結(jié)果都是灰太狼一飛沖天,伴隨著一句我還會回來的......。為灰太狼感到悲哀,抓不到羊,在家也被老婆平底鍋虐待。灰太狼為什么會這么背? 很簡單,灰太狼本身就有暴露行蹤的屬性,羊咩咩就能知曉灰太...
摘要:實際上,設(shè)計模式就是通過面向?qū)ο蟮奶匦裕瑢⑦@些角色解耦觀察者模式本質(zhì)上就是一種訂閱發(fā)布的模型,從邏輯上來說就是一對多的依賴關(guān)系。在添加一個觀察者時,把被主題被觀察者對象以構(gòu)造函數(shù)的形式給傳入了觀察者。 每個角色都對應(yīng)這一個類,比如觀察者模式,觀察者對應(yīng)著觀察者類,被觀察者對應(yīng)著被觀察者類。實際上,設(shè)計模式就是通過面向?qū)ο蟮奶匦裕瑢⑦@些角色解耦 觀察者模式本質(zhì)上就是一種訂閱 / 發(fā)布的模...
摘要:轉(zhuǎn)載請注明出處作者地址本文出自簡書人人都會設(shè)計模式教程簡介閱讀對象本篇教程適合新手閱讀,老手直接略過教程難度初級,本人水平有限,文章內(nèi)容難免會出現(xiàn)問題,如果有問題歡迎指出,謝謝地址正文一什么是觀察者模式生活中的觀察者模式警察抓小偷在現(xiàn)實生活 showImg(https://segmentfault.com/img/remote/1460000012295892?w=1240&h=474...
閱讀 1814·2021-10-09 09:44
閱讀 2690·2021-09-22 15:38
閱讀 2451·2021-09-09 09:33
閱讀 686·2021-09-07 09:58
閱讀 1785·2021-09-02 15:41
閱讀 2485·2019-08-30 15:55
閱讀 1796·2019-08-30 15:55
閱讀 533·2019-08-30 15:44