网上体育彩票行业的编程语言: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相比,这反过来会损害其整体可靠性。


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