我正在開發erlang/elixir中的應用程序。我想從erlang訪問Couchbase 2.0。我找到了erlmc項目(https://github.com/JacobVorreuter/erlmc),它是一個二進制協議的memcached客戶端。筆記說:「你必須有一個版本1.3或更高版本的memcached。」可以通過erlmc&memchache 1.3協議從erlang訪問Couchbase 2.0嗎?
據我所知,Couchbase 2.0使用memcached二進制協議來訪問數據,我正在尋找從erlang做到這一點的最佳方式。
本手冊討論8092上的「Couchbase API端口」,並將11210(接近11211 memcached正常端口)稱爲「內部羣集端口」。 http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-network-ports.html
所以,問題是這樣的:
是建立erlmc交談端口8092 Couchbase 2.0正確的路要走呢?
Erlmc談論它如何散列鍵來找到正確的服務器,這讓我認爲它可能已經過時了memcached協議的版本(或者在我應該連接的couchbase 2.0中有內置的MOXI到?如果是這樣的端口?)
哪個是erlang視圖的端口?據推測,視圖的REST界面不支持直接鍵查找,所以我需要編寫代碼來訪問它,對吧?
我很想使用一個純粹的erlang解決方案,因爲NIF不是併發的,我會有一些想要同時訪問Couchbase 2.0的未知數量的進程。
上次我和Couch一起工作的是CouchDB,所以我試圖在Couch和Membase合併後把事情拼湊起來。
如果我在錯誤的軌道上,請告知從erlang以高度協調的方式訪問Couchbase 2.0的最佳方式。 memcached協議應該非常穩定,因此可能有幾年的圖書館應該可以工作,對吧?
謝謝!
我是cberl的維護者。您可以在https://github.com/aliyakamercan/cberl/上找到更新的(並破壞:))版本。 make文件已損壞,無法構建。我會在本週或下一週修復它。您無法同時訪問它,但您可以使用Poolboy或類似的東西創建一個連接池。在我的測試中,一個實例能夠在虛擬機上每秒處理〜1.5k次操作。 – cashmere
如果你想回答這個問題,並將它充實一點,你可能會獲得賞金。 (我不能評論賞金。) Poolboy會創建一個連接池。我的各種客戶可以從該池中取出連接,然後通過它們與cberl通信 - 但這將同時訪問它。當你說你「無法併發訪問」時,聽起來像我需要一個池的對立面 - 一個與CBERL進行對話的進程,它將來自各種客戶進程的訪問進行多路複用(這與我認爲libcouchbase的工作方式一致。) – nirvana
我更新了cberl以使用最新版本的libcouchbase進行編譯。 https://github.com/xcrdev/cberl – Xavier