为了从零开始建立一家全新的银行所需的技术(来自Monzo官方博客)

スクリーンショット 2016-10-01 2.34.26 PM.png

概要

今年(2016年)8月10日,英国迎来了一家全新的银行。
英国金融监管机构PRA以限制条件批准了“Monzo Bank Ltd”。自2015年2月成立以来,该银行与另一家卡片公司合作发行预付卡,并为部分客户提供即时通过智能手机等确认交易记录的服务。接下来,他们将继续与监管机构协商,预计在2017年上半年开始作为一家银行开展业务,并正在积极准备。

技術構成要素

过去,曾在Uber的竞争对手Hailo和英国的在线卡拉OK服务等公司担任工程师职务的Oliver Beattie先生,现任Monzo的工程总监,他在官方博客上发表了一篇名为《构建现代化的银行后端》的文章,介绍了其中的技术要素。下面简要概述其内容。

微服务架构

为了提供全球24小时服务,夜间批处理是不可能的。必须排除单点故障。另外,由于需要灵活、即时地满足各个国家不同用户的要求,并且需要可伸缩性,所以从一开始就设计成微服务。据说在Beta版开始时有100个服务,目前有150个服务正在运行中。

集群管理

为了确保耐障性和可扩展性,集群管理至关重要。过去我们使用过Mesos和Marathon,但最近我们改用了基于CoreOS的Kubernetes。据说基础架构成本降低了四分之一。

多语言支持

基于低延迟等原因,我们主要使用Go语言,但为了利用专有和开源的各种解决方案,吸引多样化的开发者,多语言支持至关重要。通过Docker,服务的封装是可能的,但由于在多个语言中管理共享库会变得很困难,因此共享代码本身被独立为服务。分布式锁通过RPC获取。我们计划将包括数据库和消息队列在内的“共享基础设施”全部提供为服务,并且目前可以使用Java、Python和Scala开发服务。

远程过程调用

在构建强大的微服务时,跨多种语言的连接需要一个全面的标准库,HTTP是一个不错的选择。然而,在考虑各种问题后,我们决定使用Finagle和Linkerd。

    • ロードバランス

 

    • 自動リトライ

 

    • 接続プール

 

    ルーティング

非同步消息传递

由于以下理由,选择使用Kafka。与其他消息队列不同,它实际上具有分布式提交日志的结构。

    • 高可用性:受信側の状態(障害等)に関わらずでも送信側は1度送信すればよい。

 

    • スケーラブル:サービスを止めずに水平展開可能

 

    • 完全性:ノードが落ちてもデータが消えない。受信側が死んでも再送できる。

 

    • 再現性:過去のある時点からメッセージを再送可能

 

    1回「以上」の配送保証:必ずメッセージが配送されること。複数送信を完全に防ぐのは難しいが、通常時は1回のみ配送されるべき。

有关日语的文章

「厭倦了恐龍銀行?」讓這位不像銀行家的29歲年輕人來負責吧 – Bloomberg
終於誕生了在倫敦的「手機銀行」世界 – Money Forward官方部落格

参考页面

这是关于“Monzo银行”的维基百科页面:https://en.wikipedia.org/wiki/Monzo_(bank)
这是Monzo银行的官方博客文章,标题为“我们现在是一家银行了”:https://monzo.com/blog/2016/08/11/we-are-now-a-bank/

广告
将在 10 秒后关闭
bannerAds