本文共 1578 字,大约阅读时间需要 5 分钟。
我是 HelloTalk 的后端技术负责人李凌,今天将分享我们在 OpenResty 和 Apache APISIX 上的实践经验。
HelloTalk 是一个全球最大的外语学习社交社区,拥有 1600 万用户。我们致力于为用户提供跨文化交流和学习的平台,支持 150 多种外语的语音改写、翻译和学习功能。用户主要分布在中国、日本、韩国、美、欧、巴西等地,海外用户占比 80%。在技术实现上,我们将系统架构与 OpenResty 结合,解决了全球化部署中的诸多挑战。
早期,我们使用 C++ 开发 IM 服务,协议设计为 TLV+PB模式,目标是实现轻量级的高效通信。然而,这种方式在外部接口暴露时需要自行开发 Proxy Server,导致协议适配成本较高。为了降低成本和提升效率,我们于 2015 年开始引入 OpenResty。
OpenResty 提供了两大核心优势:一是通过前置代理,将内部协议转换为 HTTP 协议,简化了外部接口的开发和维护;二是集成 WAF 功能,防止 PHP 业务中的注入攻击。我们通过 OpenResty 实现了协议转换和安全防护,显著降低了运维成本。
在协议解析方面,OpenResty 配合 Lua-protobuf 库,能够将 Protobuf 格式的数据直接转换为 JSON 格式,大大简化了数据处理逻辑。我们还开发了基于 cosocket 的 TCP 协议安全解析模块,确保数据包的完整性和正确性。
HelloTalk 的用户分布极为分散,海外用户占比 80%,因此我们需要解决以下挑战:
针对这些挑战,我们采取以下措施:
我们在美国东部、法兰克福、新加坡、东京、香港等地部署接入节点,通过 failover 机制和智能检测,确保多线路切换的平滑性。对于特殊地区(如巴西),我们选择 AWS 和本地云服务的混合部署,确保服务的稳定性和可靠性。
在网络质量管理方面,我们引入了以下策略:
在使用 OpenResty 的基础上,我们逐步引入 Apache APISIX 作为 API Gateway,主要原因如下:
通过 Apache APISIX,我们能够更高效地管理 API 接口,实现伪装动态化和服务治理,显著提升了系统的灵活性和可维护性。
HelloTalk 的全球化之路并非一帆风顺,但通过 OpenResty 和 Apache APISIX 的技术支持,我们成功解决了诸多技术难题。如果你对我们的实践感兴趣,欢迎在技术交流社区中深入探讨!
转载地址:http://rerfz.baihongyu.com/