---
title: 使用 TiDB 作为 ZaloPay 商户平台核心数据库
author: ['Tan To Nguyen Duy']
date: 2020-07-02
summary: 未来我们可能会扩大 TiDB 在分析服务以及非交易业务中的使用。我们产品里还有许多数据挖掘系统、推荐系统等。
tags: ['金融']
category: case
url: /case/user-case-zalopay/
weight: 5
logo: /images/blog-cn/customers/zalopay-logo.png
customer: ZaloPay
customerCategory: 金融
---

>作者介绍：Tan To Nguyen Duy，VNG DevOps 工程师，参与电子钱包 ZaloPay 基础架构的开发。

首先介绍一下 VNG。VNG 是越南领先的互联网科技公司，在 2014 年，我们被评为越南唯一一家估值 10 亿美元的创业公司。VNG 推出了许多重要产品，比如 Zalo、ZaloPay、Zing 等，吸引了数亿用户。Zalo 是 VNG 集团的旗舰产品，发布于 2012 年，是越南使用最广泛的通讯 APP，目前活跃用户数达到 1 亿。而本文主角 ZaloPay 是一款移动支付应用，它建立在 Zalo 的基础上，继承 Zalo 生态中的诸多便利，满足用户的日常生活和商业需求。ZaloPay 发布于 2017 年，当时 Zalo 已经拥有大量用户，形成了一个生态系统。也就是说，ZaloPay 的系统必须能够处理非常大的用户量，并且有连续不断的扩展性。

## ZaloPay 系统的商户解决方案

2020 年初， ZaloPay 上线了一个新功能，大约 1 亿的 Zalo 用户可以使用 ZaloPay 来转账、收款等。在越南，ZaloPay是在线上聊天平台提供转账和支付功能的先驱。

为 ZaloPay 建立一个必须能够满足大量 Zalo 用户需求的基础架构，并不是一件容易的事，而是一个巨大的挑战。我们不能根据旧的模型来构建服务和设计架构，因为新的系统要有可扩展性、弹性、一直在线的可用性、性能监控功能，还要有严密的安全性。它必须适配尽可能多的云模式。

越南正融入世界上其他地区，迈向互联网时代的高峰，对电子钱包的需求日益增长。我们要推动各种体量的商户使用电子钱包，包括餐饮业、旅游业等的账单支付。这正是“无现金化”电商所普遍追求的目标，我们都知道，实现复杂的交易业务，需要复杂且一致的系统架构。

## 数据库的挑战

我们认识到业务正在迅速扩张，也清楚地意识到，在不久的将来，数据存储和数据处理会成为一个重大问题，并且这个问题需要尽早处理。随着业务的蓬勃发展，我们的系统基础架构必须能够及时响应业务的增长。

在调研数据库的解决方案时，我们发现了 TiDB，一个 NewSQL 数据库，支持 HTAP 负载，兼容流行的 MySQL 协议。在座的各位都非常了解 TiDB。我可能不需要多说 TiDB 的架构，这部分内容留给平凯星辰的专业人士，大家当然都知道 TiDB 能做到的事情。请允许我讲一讲我对 HTAP 的理解。

**HTAP 数据库的主要技术挑战在于，如何在同一个数据库里，高效处理许多高频更新的小事务和遍历多行数据的复杂查询，以及如何防止分析查询干扰业务的运行。**

HTAP 的大多数应用都是通过内存技术（in-memory）实现的，内存技术可以处理大量事务，并提供预测和模拟等功能。HTAP 通过复杂的实时海量数据分析，提供即时的商业决策能力，以此改变企业的经营模式。企业决策者可以实时获知各种问题，查看结果，了解趋势，例如风险管理和欺诈检测等领域。

TiDB 是一个支持 HTAP 工作负载的 NewSQL 数据库，旨在满足数据开发、数据可伸缩性、数据分析等需求。我最喜欢 TiDB 的一点是，我可以用 TiSpark 轻松分析数据。随着业务高速发展，我们需要不断扩展数据存储容量，同时进行大量的数据挖掘，以便迅速提供业务建议，TiSpark 在这种场景下非常有用。

让我们回到 ZaloPay 和 TiDB。Zalopay 致力于移动支付领域，这是一场全新的技术革命。Zalopay 的系统需要与许多商业交易紧密结合，并迅速提供业务分析建议。TiDB 是支持混合事务处理与分析负载的新型数据库。对，这就是我们所需要的。这正是我们现在和未来都想要的数据库。

## TiDB 在 ZaloPay 基础架构中的角色

我想谈谈我对数据的认识和理解。数据无所不有，无处不在。尽管人们将数据视为金矿，但由于技术和人力的限制，很少有人或机构能够挖掘这座金矿。

我从相关博客中了解到，东南亚知名电商巨头 Shopee 将 TiDB 用于风控系统中。他们已经从传统的分库分表 MySQL 迁移到了 TiDB。在 2019 年初，他们的 TiDB 集群已处理了大量非交易数据。他们正打算将一些交易类数据从 MySQL 迁移到 TiDB。他们还计划将 TiDB 用作 MySQL 同步方案的一部分，让 TiDB 作为 MySQL 的从库，把 MySQL 中的数据实时同步到 TiDB。

目前，ZaloPay 把 TiDB 集群运行在本地自有机器上。我刚才提到，ZaloPay 在 2020 年初推出了一项新功能，允许 1 亿多活跃用户在 Zalo 通讯 APP 中转账、支付、充值、预订酒店/旅行等。Zalo 用户可以轻松下单产品，在群聊里分享账单，在家庭群组里发红包，通过商户的 Zalo 官方账号付款，商户类型覆盖了零售业、餐饮业、服务业、电商等多个行业。商户拥有一个官方页面，就像脸书的粉丝主页一样，用户可以在 Zalo APP 中与商户网站上的产品进行交互，然后使用 ZaloPay 付款。

此外，这个功能还允许用户通过手机应用向其他人赠送礼物，比如代金券、电话卡、红包或任何东西。仅仅是常用支付领域，我们每天就有几十万笔交易。你们可以想象到，我们的 TiDB 集群工作量之大，集群每天要处理一百万个请求，令人难以置信。

**未来我们可能会扩大 TiDB 在分析服务以及非交易业务中的使用。我们产品里还有许多数据挖掘系统、推荐系统等**。我们已经知道 TiDB 是一个 HTAP 分布式数据库。我们从一开始就使用 TiDB，因此对我们来说，可以很容易地开发这些系统。

## TiDB 带来的价值

我们的口号是 “ZaloPay，两秒付款”。要实现这个口号，我们必须改善许多业务流程和技术流程。为了实现服务，我们使用了匹配 TiDB 实现的 Golang。我们的工程师熟悉 Golang，因此，他们可以轻松阅读并理解 TiDB 源码，从而提升服务性能，优化应用程序与 TiDB 数据库核心间的软件性能。

有了 TiDB，我们可以更容易地实现服务和应用的云模式，也就是可伸缩性、弹性、监控等。

感谢平凯星辰提供优秀的开源产品。我的中国朋友告诉我，平凯星辰是中国非常知名的开源公司。平凯星辰的产品可以帮助许多公司解决系统运行的问题，提供具体的数据库解决方案。在座的各位或许对 TiDB 和平凯星辰很感兴趣，我也一样。开源产品能帮助使用产品的程序员了解该产品的特性、功能以及工作原理。感谢平凯星辰的贡献。

我可能不需要讲 TiDB 如何工作了，因为平凯星辰的专业人士们无论是在文档里，还是 TiDB DevCon 2020 上，都清楚地说明了这个部分。

## 平凯星辰的社区支持

最后谈谈平凯星辰对我的支持。我很感谢平凯星辰的社区支持。不久前，我在使用和维护 TiDB 上遇到了一些麻烦，我去了 平凯星辰社区。在这里，我得到了高级工程师、工程 VP 和专业社区人员的热情帮助，帮我们排查并解决了问题，并不是每个开源组织或个人都能做到这一点。再次感谢平凯星辰成员热心帮助我们学习并使用 TiDB。也十分感谢今天来参与 DevCon 的所有人。

这就是我的全部分享，谢谢大家！

>本文整理自 Tan To Nguyen Duy 在 TiDB DevCon 2020 上的演讲。
