Erlang在支付系统中的应用

3
我正在尝试实现支付消息中间件,并希望探索使用Erlang/OTP的选项。该应用程序将用于银行业,与EFT支付网络和核心银行系统进行接口,以处理卡交易。
它将负责执行以下任务:
1. 使用ISO 8583消息格式与外部网络(如VISA和MasterCard)通信。 2. 通过套接字接收大量数据(HEX、BINARY、EBCIDIC),这些数据代表金融交易。 3. 解析/解码接收到的数据。 4. 在数据库中执行一些检查以进行验证。 5. 通过接口安全模块与主机进行交互,以验证客户PIN和其他安全检查。 6. 通过XML或Web服务调用将请求发送到核心银行系统。 7. 通过制定ISO 8583格式的响应消息向外部接口回复。
显然,这样的应用程序必须是并发的,并且足够快,可以在几秒钟内处理交易。现在我的问题是,Erlang是否是实现此类应用程序的好选择?Erlang能否高效地处理字符串处理而不影响系统性能?
如前所述,需要对通过网络接收到的数据进行大量字符串操作,因此我不确定Erlang是否完全适合。

你的应用程序是否需要持久性? - ibizaman
2个回答

2
你听说过Klarna吗?他们正是使用Erlang来实现这些目的。他们在Erlang社区非常活跃,你也可以查看他们的GitHub存储库。
  1. Erlang是实现协议和与外部资源通信的完美工具。
  2. Erlang是实现协议和与外部资源通信的完美工具。
  3. 我有提到Erlang是实现协议的完美工具吗?
  4. 即使一些高性能和高可扩展性的数据库都是用Erlang实现的,对Erlang来说这不是问题。
  5. Erlang具有实施安全措施的能力。例如,您可以设置“敏感”标志,以禁用进程的所有调试和跟踪信息,因此它不再显示其状态,包括消息队列。如果您需要更高的标准,您总是可以使用C编写并使用操作系统级别的保护。我有提到Erlang是与外部资源通信的完美工具吗?
  6. Erlang也支持XML。
  7. 我有提到Erlang是实现协议的完美工具吗?

更多问题:

  • 并发和足够快 - 检查。
  • 实现这种类型应用的良好选择 - 请向Klarna询问。
  • 高效处理字符串而不影响系统性能 - 我不知道有什么比使用二进制的iolist更好的处理字符串的系统,可以检查。

2
你的问题似乎涉及到处理ISO 8583意味着处理文本。Erlang以两种不同的方式表示文本:
1. List-是一个字符链表。占用更多的空间(每个元素是字符和下一个元素的地址),在处理长文本时速度较慢,但非常容易使用,因为列表是函数式语言中的基本类型。
2. Binary-是存储在内存中的一组字节,类似于C / C ++中的数组,但具有更好的处理和模式匹配功能。
这两种类型都非常好地支持Unicode(包括UTF-8)。
Erlang并不擅长原始文本处理(Perl可以说更好),但是Erlang擅长有效地实现和处理各种协议,包括文本协议。它是由Ericsson发明的,用于处理电信系统中的数据,其中充满了协议。核心Erlang库OTP包含大量模块,用于实现最流行的协议处理程序:ASN.1,Base64,Corba,LDAP,HTTP,SNMP,TCP,UDP,SCTP等等。
一些最受欢迎的消息系统,出于明显的原因,处理文本消息,是用Erlang编写的:RabbitMQ,EMQTT,ejabberd。

还有一个用于处理ISO 8583的库,在Gihub上有几个分支:第一个分支第二个分支

但选择Erlang最重要的原因可能不是它对协议实现的支持,而是其可扩展性。Erlang实现了自己的进程,这些进程与系统进程不同。Erlang可以在一台普通的CPU上创建数百万个进程,以处理数百万个作业并发。请参见其在WoogaWhatsApp等公司中的应用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接