# Airbnb Blog- 分布式支付系统中交易完整性的测量
Date: 2019-07-25


      这篇文章 [Measuring Transactional Integrity in Airbnb’s Distributed Payment Ecosystem](https://medium.com/airbnb-engineering/measuring-transactional-integrity-in-airbnbs-distributed-payment-ecosystem-a670d6926d22)   是出自 [Airbnb Blog。](https://medium.com/airbnb-engineering?source=post_page---------------------------)

      由于Airbnb的全球品牌， 其支付生态系统也异常复杂，目前支持190多个国家和全球40种货币， Airbnb与少数网关以及十多个支付机构对接，实现全球支付的覆盖。但是对接的系统中成熟度不通， 对接模式不通， 清算方式不通，而且由于其业务模式要求， 对于一笔付款需要其拆分成两笔交易， 一笔是旅行者支付到平台， 另一个笔是平台支付给房东。 在旅行者支付过程中还会涉及更改， 存款， 分期， 增值税等相对负责的交易， 在通过银行给房主付款过程中由于大多数银行采取批量模式，使得清算过程异常艰辛和漫长。 

       在此情况下Airbnb打造了自己新的支付网关

       参考现有支付平台以及银行系统方式，新的支付网关提供商户，对账报表和流水。 但是传统的工具对账并不充分。尤其是对一些历史交易，比如撤销授权， 虽然不涉及资金但是由于是跨天交易，所以也会影响我们对账交易的范围， 数据量的增加， 从而影响系统性能。

        Airbnb这里采用 Hive ， Hadoop， HDFS， Airflow， S3 系列工具包， Hive提供类似SQL的界面查询数据，可以大规模的执行map-and-reduce作业。 Hadoop提供可扩展性， 适用于大型不断增长的数据集之间比较， HDFS使我们能够定期快照事务完整性， S3可以做为经济性的数据存储。Airflow是Airbnb自己开发调度工具， 用于协调各个计算步骤从而生产相关报告。 

        除了保障性机制外， 其还有对应的监控机制主要是通过Druid获取香瓜事务数据， Superset生成自动报告， 通过灵活配置异常检测算法， 能够支持email/slack通知。

       交易完整性分析帮助识别调整问题 并有助对系统参数进行微调。 通过以上辅助工具的在保障完整性使得财务报告准确简化运营， 深度学习分析帮助轻松监控分析问题并进行报警 。 

        未来的一些展望， 针对自动重试， 幂等性（idempotence guarantee ）事务跟踪进行了一些探讨。

        由于本身工作原因也接触了银行收单方面的工作，接触过银行收单系统， 清算机构，第三方支付系统，在银联出现之前， 普通商户银行卡支付支付要支持多家银行，是需要分别对接各家银行的， 后来出现了银联系统， 我理解就是文中的网关，对于接触过的一些商户对于如果需要支持银行的特殊的交易如分期， 积分， 商户还是要直接对接某一个银行， 而要做跨行，由对接银行链接银联实现跨行，再后来出现了 微信支付， 支付宝支付，其实还是由银行或第三方/第四方支付机构做了这个网关的工作。 随着不断的发展还会出现新的支付方式， 新的网关，必然使得支付系统会越来越复杂。  网关是个不错的选择， 真正能做到网关级别的都是相当多的资源， 当然也会从中获取相应的利益。  前一阵facebook推出的 Libra或许是一个新的解决方案。

