Erlang程序池(整理)

2021-06-11 05:13:17 字數 2262 閱讀 7962

關鍵字:erlang,程序池,開源

1.情景

專案中有很多連線zookeeper的地方,都是各自連線,儲存pid或者monitor,並在terminate或down的時候對連線進行關閉或者重連。可以考慮採用erlang程序池,對程序進行統一管理。

2種需要採用程序池的情景:

1.大量的普通erlang程序:雖然vm預設可以建立很多,筆者的機器可以建立大概2w個程序(程序預設大小32k,可以調整vm引數設定更大)。但不意味著可以無限使用,有時候需要對程序進行管理,避免無限制的使用。

2.重型erlang程序:簡單的說,就是啟動成本較大的程序,可以採用在程序池避免反覆的啟動和關閉,方便管理。

2.程序池解決的問題

歸納如下:

1.初始化。

2.管理(程序的進出)。

3.控制(最小,最大的數量)。

3.開源的erlang程序池

這篇文章講述了如何使用 otp 實現程序池,文章講的很清楚,這裡再補充一下整個程式的流程:

1 首先呼叫 ppool_supersup 的 start_link 方法建立超級監控程序。

2 呼叫 ppool_supersup:start_pool 建立 ppool_sub 監控程序,而在

ppool_sub 的 init 方法中又會建立 ppool_serv 程序,在 ppool_serv 

的 init 方法中向自己傳送訊息,然後引起 handle_info 得到呼叫,在

這裡建立 worker_sup 監控程序。之所以要在 ppool_serv 中啟動 woker_sup 。

是因為 ppool_serv 要和 worker_sup 通訊,因此要儲存 worker_sup 的程序 id。

原始碼請移步:

5.重型程序池poolboy

poolboy,**量很小,3個程式檔案400行的**。poolboy_sup(supervisor)是掛在poolboy(gen_fsm)下的,poolboy_sup下維護n個工作程序(worker),程序的 checkin 和 checkout 通過 gen_fsm 來維護,採用 gen_fsm 的方式,設計比較精巧,支援 max_overflow 和 full 後的等待超時。

6.固定型程序池hottub

例子如下:

hottub:start_link(demo, 5, demo_worker, start_link, ).

hottub:call(demo, ).

hottub:cast(demo, ).

hottub:stop(demo).

hottub是乙個固定個數的執行緒池,在執行過程中不可增加。在 hottub 中處理checkout_worker,checkin_worker,程序會被復用,也會可能產生阻塞的情況,比較適合輕量級的業務。

7.最完備的程序池pooly

引數支援如下:

1。initial_pool_size:初始個數。

2。max_pool_size:最大個數。

3。min_pool_size:最小個數。

4。idle_timeout:超時時間。

5。acquire_increment:額定增長。

pooly比較獨特的是採用pooly_member(gen_fsm)來維護程序的啟用和超時,和poolboy一樣,採用gen_fsm的形式來管理work程序。和ppool一樣有乙個超級監控程序:pool_sup,為了支援多個程序池。

總結:

這幾個程序池各有特色,實現的方式也不盡相同。沒有最好的,只有最合適的。

關於erlang的程序池

poolboy erlang 有兩種情況需要考慮使用程序池管理erlang程序。一種是普通erlang程序,很便宜,一次可以並行很多 預設32k,當然可以調整vm引數設定更大 但是這不意味著可以無限制的使用,實際上輕鬆的達到上限是很容易的 想想發明西洋棋的那位向國王請賞的辦法,類似的,乙個程序開兩個...

關於erlang的程序池

有兩種情況需要考慮使用程序池管理erlang程序。一種是普通erlang程序,很便宜,一次可以並行很多 預設32k,當然可以調整vm引數設定更大 但是這不意味著可以無限制的使用,實際上輕鬆的達到上限是很容易的 想想發明西洋棋的那位向國王請賞的辦法,類似的,乙個程序開兩個,兩個再開四個,四個再開8個。...

Erlang簡單介紹整理

最近在看 七周七語言 適當了解一些c語言家族以外的程式語言也很有意思,下面記錄一下各個語言的語法特點。一,erl開啟erlang互動命令列 用百分號注釋,語句用句號標誌結束 變數必須是大寫字母開頭,只可賦值一次 name ciaos ciaos name.ciaos 符號首字母小寫 color re...