【问题标题】:Erlang Use in Payment Systems‏Erlang 在支付系统中的使用
【发布时间】:2016-04-29 22:26:13
【问题描述】:

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

它将负责执行以下任务:

  1. 使用外部网络(如 VISA 和 MasterCard)进行通信 ISO 8583 消息格式。
  2. 通过套接字接收大量数据(HEX、BINARY、EBCIDIC) 代表金融交易。
  3. 解析/解码接收到的数据。
  4. 在数据库中执行一些检查以进行验证
  5. 与主机安全模块接口以验证客户 PIN 和 其他安全检查。
  6. 通过 XML 或 Web 服务将请求发送到核心银行系统 打电话
  7. 通过制定响应来响应外部接口 ISO 8583 格式的消息

显然,此类应用程序必须是并发的且速度足够快,才能在几秒钟内处理事务。
现在我的问题是,Erlang 是实现此类应用程序的好选择吗? Erlang 能否在不影响系统性能的情况下高效处理字符串?

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

【问题讨论】:

  • 您的应用程序是否需要某种方式的持久性?

标签: erlang


【解决方案1】:

您的问题以某种方式暗示处理 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

两种类型support Unicode (including UTF-8) 都很好。

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

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

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

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

【讨论】:

    【解决方案2】:

    你听说过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 是实现协议的完美工具?

    更多问题:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2011-04-14
      • 2011-03-04
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多