java - 單例服務(wù)解決多進(jìn)程寫文件
問題描述
現(xiàn)在需要一個(gè)多進(jìn)程寫文件的程序
如果直接寫則需要保證進(jìn)程對(duì)文件句柄加鎖
現(xiàn)在想通過spring 注冊(cè)一個(gè)單例的寫入服務(wù)
多個(gè)程序在寫入文件時(shí),去請(qǐng)求spring 的接口去寫入文件
這樣的方案是否可行?
或者用一個(gè)單例的RPC服務(wù)?
單例即能保證寫文件的時(shí)候是一個(gè)實(shí)例,避免多線程、多進(jìn)程同步問題!
問題解答
回答1:我認(rèn)為這樣還是不行的,本質(zhì)上Spring只是幫你管理實(shí)例,線程安全的問題還是要自己解決
再者,你說的是多進(jìn)程寫文件,通過rpc也僅僅是多線程方式吧?
其實(shí)本質(zhì)就是想實(shí)現(xiàn)一個(gè)線程安全的文件寫接口,單例是OK的,自己的實(shí)例當(dāng)作鎖就行了
回答2:=_=! 一個(gè)多進(jìn)程的程序?
回答3:用zookeeper,zookepper一個(gè)特點(diǎn)是寫同一個(gè)znode只能有一個(gè)客戶端(進(jìn)程)寫入成功,就用這個(gè)客戶端寫文件,或者利用數(shù)據(jù)庫(kù)寫入同一個(gè)主鍵只有一個(gè)可以插入成功的特點(diǎn)
相關(guān)文章:
1. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?2. sql語(yǔ)句 - mysql中關(guān)聯(lián)表查詢問題3. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?4. css - div外層有一圈白色5. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等6. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。7. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變8. html - vue項(xiàng)目中用到了elementUI問題9. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?10. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?
