網上體育彩票行業的程式語言:Go與Erlang/Elixir比較
“針對這項工作選擇正確的工具”是網上體育博彩行業流行的諺語。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相比,這反過來會損害其整體可靠性。
相關文章
- Erlang 之父學習 Elixir 語言的一週
- Go語言的Web框架比較GoWeb框架
- 幽默:程式語言與遊戲比較遊戲
- 一個程式語言比較網站網站
- Ruby程式語言與Ruby之間的比較
- Elixir語言R語言
- 現代語言Go、Rust、Swift和Dart的比較GoRustSwiftDart
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- Rust語言與Go語言各自特點概要比較 –thenewstackRustGo
- python開發-與其他語言的比較Python
- 流行語言的比較 (轉)
- Elixir語言在Ruby社群很火,語法類似Ruby,本質卻是Erlang! - preslavR語言
- k語言和q語言的比較
- 11大類程式語言功能比較表
- Go 與 C++ 的對比和比較GoC++
- Go與C#的比較 - RedditGoC#
- Go 語言 := 的具體使用與區別Go
- Rust, Go與Hasekll比較 - RedditRustGo
- go語言與c語言的相互呼叫GoC語言
- 函數語言程式設計語言 Elixir 1.0 正式版釋出函數程式設計
- OC,swift,javascript,Dart語言比較SwiftJavaScriptDart
- 跨語言通訊方案比較
- 從商業利益看 Go 程式語言Go
- C語言的比較庫函式--qsortC語言函式
- [elixir! #0081] 編譯後的 beam code 重建為 erlang 程式碼編譯
- Erlang語言的作者教你如何入手
- Go與Node.js在網站應用上的效能比較GoNode.js網站
- 從OOP和FP看蘋果Swift語言與Scala比較OOP蘋果Swift
- Go 語言簡介(上)— 語法Go
- go語言的初體驗Go
- Go 語言的網路程式設計簡介Go程式設計
- 與其他語言的比較——瞭解ASP、PHP和JSP (轉)PHPJS
- 【Go 語言入門專欄】Go 語言的起源與發展Go
- Erlang/Elixir: 用Distillery替換Exam打包器
- ABAP, Java和JavaScript三種語言的比較JavaScript
- WhatsApp成功背後的Erlang語言APP
- 多語言永續性與資料儲存比較綜述
- 體驗go語言的風騷式程式設計Go程式設計