我正在尝试实现支付消息传递中间件,并希望探索使用Erlang / OTP的选项。 该应用程序将用于银行业,与EFT支付网络和核心银行系统连接,以处理卡交易。
负责执行以下任务:
显然,这些应用程序必须同时且足够快,以便在几秒钟内处理交易 现在我的问题是,Erlang是实现此类应用程序的不错选择吗? Erlang能否有效地处理字符串处理而不影响系统性能?
如前所述,将会有很多字符串操作来解码通过网络接收的数据,所以我不确定erlang是否完全适合。
答案 0 :(得分:2)
您的问题在某种程度上意味着处理ISO 8583意味着处理文本。 Erlang代表two different ways中的文字:
List - 是各个字符的链接列表。占用更多空间(每个元素都是char和下一个元素的地址),处理长文本的速度很慢,但在函数式语言中使用lists are the basic types非常容易。
Binary - 是一组字节stored in memory,类似于C / C ++中的数组,但更好support for processing and pattern matching。
两种类型support Unicode(including UTF-8)非常好。
Erlang在原始文本处理方面并不擅长(Perl可以说更好),但Erlang擅长有效实现和处理各种协议,包括文本协议。它是爱立信发明的handle data in telecommunication系统,它充满了协议。核心Erlang库OTP包含大量模块,可实现最流行协议的处理程序:ASN.1,Base64,Corba,LDAP, HTTP,SNMP,TCP,UDP,SCTP等。
一些最流行的消息传递系统,出于显而易见的原因处理文本消息,是用Erlang编写的:RabbitMQ,EMQTT,ejabberd。
Gihub还有一个library to process ISO 8583分叉:1st fork,2nd fork。
但是选择Erlang的最重要原因可能不是它对协议实现的支持,而是它的扩展能力。 Erlang实现了own processes,它与系统进程不同。 Erlang可以在适度的CPU上创建数百万个进程,以同时处理数百万个作业。了解它在Wooga和WhatsApp以及其他方面的使用情况。
答案 1 :(得分:1)
你听说过Klarna吗?他们正在使用Erlang完全用于此目的。它们在Erlang社区非常active。您还可以查看他们的GitHub repositories。
sensitive
标志,该标志禁用进程的每个调试和跟踪信息,因此它不再显示其状态,包括消息队列。对于更高的标准,您始终可以使用用C编写的代码并使用操作系统级保护。我是否提到Erlang是与外部资源进行通信的完美工具?更多问题:
iolist
更好 - 检查