我正在Erlang編寫一個Web應用程序,並希望將我的數據存儲到PostgreSQL。在Erlang中爲PostgreSQL編寫網關是個好主意嗎?
我的應用程序中有兩種資源。一種非常重要,而另一種則不重要。
- 重要的是,不允許丟失數據。
- 對於不太重要的系統故障導致的數據丟失是可以的。
我想獲得最大的效率,想出了這樣一個想法:爲PostgreSQL寫一個網關。網關是gen_server
,業務邏輯(BL)部分可以與網關通信以存儲資源。
- 爲了存儲重要的資源,BL部件發送的資源被存儲到網關,並塊到
receive
的消息(成功或失敗),最後以與網頁用戶作出響應。 - 爲了存儲不那麼重要的資源,BL部分僅將資源發送到網關而不阻止。發送資源後,BL部分直接響應網頁。
我從這個想法期待什麼是每個請求少秒,因爲大部分資源是不太重要的。但我想知道這是一個好主意,換句話說,我真的可以得到我期待的結果嗎?
請根據您的經驗或一些可靠的「網頁搜索結果」回答。謝謝。 :-)
是的,我想產卵的過程爲DB互動的想法是比較適合。但是對於問題(1),由於我也在編寫Erlang中的BL部分,這些消息是否仍然序列化? –
gen_server網關將序列化請求,因爲它一次只處理一條消息。使用網關的阻塞進程將不得不在隊列中等待。 – Isac