Erlang在付款系统中的使用

时间:2016-04-29 22:26:14

标签: erlang

我正在尝试实现支付消息传递中间件,并希望探索使用Erlang / OTP的选项。 该应用程序将用于银行业,与EFT支付网络和核心银行系统连接,以处理卡交易。

负责执行以下任务:

  1. 使用外部网络(如VISA和MasterCard)进行通信 ISO 8583消息格式。
  2. 通过套接字接收大量数据(HEX,BINARY,EBCIDIC) 代表金融交易。
  3. 解析/解码收到的数据。
  4. 在数据库中执行一些检查以进行验证
  5. 与主机安全模块接口以验证客户PIN和 其他安全检查。
  6. 通过XML或Web服务将请求发送到核心银行系统 调用
  7. 通过制定响应来回应外部接口 ISO 8583格式的消息
  8. 显然,这些应用程序必须同时且足够快,以便在几秒钟内处理交易 现在我的问题是,Erlang是实现此类应用程序的不错选择吗? Erlang能否有效地处理字符串处理而不影响系统性能?

    如前所述,将会有很多字符串操作来解码通过网络接收的数据,所以我不确定erlang是否完全适合。

2 个答案:

答案 0 :(得分:2)

您的问题在某种程度上意味着处理ISO 8583意味着处理文本。 Erlang代表two different ways中的文字:

  1. List - 是各个字符的链接列表。占用更多空间(每个元素都是char和下一个元素的地址),处理长文本的速度很慢,但在函数式语言中使用lists are the basic types非常容易。

  2. Binary - 是一组字节stored in memory,类似于C / C ++中的数组,但更好support for processing and pattern matching

  3. 两种类型support Unicodeincluding UTF-8)非常好。

    Erlang在原始文本处理方面并不擅长(Perl可以说更好),但Erlang擅长有效实现和处理各种协议,包括文本协议。它是爱立信发明的handle data in telecommunication系统,它充满了协议。核心Erlang库OTP包含大量模块,可实现最流行协议的处理程序:ASN.1Base64CorbaLDAP, HTTP,SNMP,TCP,UDP,SCTP等。

    一些最流行的消息传递系统,出于显而易见的原因处理文本消息,是用Erlang编写的:RabbitMQEMQTTejabberd

    Gihub还有一个library to process ISO 8583分叉:1st fork2nd fork

    但是选择Erlang的最重要原因可能不是它对协议实现的支持,而是它的扩展能力。 Erlang实现了own processes,它与系统进程不同。 Erlang可以在适度的CPU上创建数百万个进程,以同时处理数百万个作业。了解它在WoogaWhatsApp以及其他方面的使用情况。

答案 1 :(得分:1)

你听说过Klarna吗?他们正在使用Erlang完全用于此目的。它们在Erlang社区非常active。您还可以查看他们的GitHub repositories

  1. Erlang是实现协议和与外部资源通信的完美工具。
  2. Erlang是实现协议和与外部资源通信的完美工具。
  3. 我是否提到过Erlang是实现协议的完美工具?
  4. 对于Erlang来说,这不是问题,即使在Erlang中实现了一些高性能和高可伸缩性的数据库。
  5. Erlang有一定的实施安全措施的能力。例如,您可以设置sensitive标志,该标志禁用进程的每个调试和跟踪信息,因此它不再显示其状态,包括消息队列。对于更高的标准,您始终可以使用用C编写的代码并使用操作系统级保护。我是否提到Erlang是与外部资源进行通信的完美工具?
  6. Erlang也支持XML。
  7. 我是否提到过Erlang是实现协议的完美工具?
  8. 更多问题:

    • 同时且足够快 - 检查。
    • 实施此类应用程序的不错选择 - 请问Klarna。
    • 在不影响系统性能的情况下有效处理字符串处理 - 我不知道处理字符串的系统比使用二进制文件的iolist更好 - 检查