爲何要用elixir編寫併發應用

隨着cpu數量的增多,程序愈來愈強調併發。

而提到併發,就常常會提到函數式編程。node

函數式與面向對象的主要區別

函數式更強調精確性。
函數式用變形替代了修改。編程

Elixir中的進程

Elixir中的process只佔用不多的資源,它們是相互獨立的,經過收發消息來交流。
利用process咱們能在一個節點上保持大量的鏈接。網絡

用什麼語法來編寫併發

一般人們不會用順序代碼來編寫併發的程序,而Elixir包含了順序代碼。併發

Fail Fast原則

在併發的程序中,當一個進程出現問題,咱們會遵循Fail Fast(或者說Let Crash)原則。讓這個進程從新啓動,這樣就能不影響到其它進程。函數式編程

Elixir中的監督者supervisor

supervisor負責監視和重啓進程。而在上級還有sup的sup來監視sup,最終邊界就是咱們的Application。函數

進程之間的通訊

不管進程是在同一個應用內,仍是在不一樣的應用中,或是不一樣機器上,它們通訊的方式都是相同的。工具

Elixir的三個優點

  • 兼容性 :Elixir與Erlang完美兼容,可使用Erlang中的全部庫
  • 擴展性 :帶有方便的元編程能力,即macro。適用於編寫DSL。
  • 生產力 :完善的文檔,工具,hex包。

新建包含Supervisor的項目

mix new foo --supspa

在同一個網絡下新建進程

iex --sname foo
iex --sname bar對象

以後咱們就能夠在一個進程中執行另外一個進程裏定義的函數。 Node.spawn_link(node, fun)進程

相關文章
相關標籤/搜索