網上體育彩票行業的程式語言:Go與Erlang/Elixir比較

banq發表於2017-12-13

“針對這項工作選擇正確的工具”是網上體育博彩行業流行的諺語。Erlang和Elixir常常是線上投注和博彩行業的正確工具,其中有三個關鍵原因:優異的併發性,可伸縮性和可靠性。

網上投注在技術和收入方面都是一個蓬勃發展的行業。例如:世界領先的博彩公司bet365擁有超過2200萬的客戶,佔據了來自國際市場15億英鎊收入的四分之三。極端的可擴充套件性、併發性和可靠性是保持bet365賺錢發動機執行的必要條件。bet365選擇了Erlang,Elixir和Go的混合技術架構

那麼什麼時候應該選擇Erlang,Elixir還是Go作為線上投注和博彩行業的技術棧呢?


併發

bet365系統在任何時候都可以為多達10萬的使用者提供直播賠率和結果,同時管理多個後端資料流。在高峰時期,像超級碗,使用者數量會膨脹一個數量級。這是一個並行工程的偉大實踐。

在併發性方面,Erlang和Elixir都建立在BEAM虛擬機器上。它們都是面向併發性的函式式語言,可以同時處理大量的使用者。Erlang使用者遍佈各個行業,如電信、adtech、財務支付;大型多人線上角色扮演遊戲;和社交媒體都利用其提供令人印象深刻的併發能力。

Go也為併發提供了很好的支援,尤其是在將其與Ruby,Python或C++進行比較時這方面更突出。然而,對於大併發請求需要高可用性和低延遲的後端,就像線上投注來說,Go並不是Erlang或Elixir的替代方案,。

可擴充套件性

現代投注的基礎架構需要大規模的可擴充套件性,速度和容錯性才能順暢執行。雖然沒有內建的可擴充套件性支援,運營商可以依靠額外的硬體進行垂直擴充套件,但這不是一個可持續的方法,也不是一個成本效益最好的方法。

Erlang和Elixir的併發性與他們的大規模可伸縮性並駕齊驅。如果Erlang不是您系統所有工作的最佳工具,那麼可以加入基於Erlang的產品的分散式架構可以使您的投注系統快速部署和縮放。使用Erlang建立的工具比如Riak KV,可以預測地向上和向下擴充套件。從而告別緊急的硬體和高峰負載下不可預測的系統效能的頭痛。

當你將Go語言與Ruby on Rails或者Django等相比的時候,Go會表現出令人印象深刻的效能,效能提高3倍。Go可以相對容易地擴充套件到數十萬,就像Erlang和Elixir擴充套件到數百萬一樣。

可靠性

像股票市場一樣,線上博彩運營商的停機時間也會帶來直接的財務和聲譽影響。對於網上體育投注,提供超可靠的實時服務現在是博彩公司和投注者的首要任務。只要看看體育賽事蓬勃發展的市場就明白這項任務的重要性了。

在這個世界上,任何型別的暫停、系統故障、垃圾收集或排隊積壓都是不可接受的。線上投注的技術棧加必須處理持續不斷的資料洪流,而且不能影響系統的流程或終端使用者。

Erlang和Elixir的非共享記憶體方法允許程式終止,同時不會破壞並行執行的其他請求的狀態。這就允許實現“故障恢復”的架構,在這個架構中,故障是孤立的,不會影響整個系統。因此,Erlang和Elixir相比其他程式語言只需要一小部分努力就能實現了“五個九”的可用性。這使得Erlang和Elixir成為投注博彩系統的理想之選。

Go非常好,但是它的一些自動觸發器可能會導致錯誤,危及需要立即響應的伺服器程式碼。與Erlang和Elixir相比,這反過來會損害其整體可靠性。




https://www.erlang-solutions.com/blog/programming-languages-for-online-betting-an-investigation-of-go-erlang-and-elixir.html

相關文章