为什么放弃 clojure_将API网关服务从Clojure重写为Golang:AppsFlyer体验报告

AppsFlyer的API网关因技术债务从Clojure迁移到Golang。Golang在基准测试中表现出更好的吞吐量,且其静态类型语言特性有助于代码维护。新设计的API网关提高了服务稳定性,支持更高的流量,减少了实例数量。通过逐步迁移,实现了零停机时间的更新。
摘要由CSDN通过智能技术生成

为什么放弃 clojure

重要要点

  • AppsFlyer每天使用微服务架构样式构建,处理近70亿个HTTP请求。 包装所有前端服务的系统的入口点是称为API网关的关键任务(非微型)服务。
  • 用AppsFlyer默认语言Clojure编写的原始API网关开始积累技术债务。
  • 对于新设计的API网关服务的建议,选择Golang作为与Clojure进行基准比较的语言。
  • 基准测试是通过NGINX(由Lua增强)以及Golang和Clojure进行的。 与Clojure相比,Go的吞吐量有所提高,因此被选择为实现的语言。
  • API网关现在已经以一种类型化的语言构建,这一事实使Golang的库支持和社区能够插入各种功能并更轻松地引入新技术。
  • 与以前相比,新部署的解决方案能够支持的流量成倍增长,而且随着流量和请求以10倍的规模增长,从前瞻性角度来看,这是很重要的。

AppsFlyer是领先的移动归因和营销分析平台,每天处理近70+亿个HTTP请求(每分钟约5000万个请求),并采用微服务架构样式构建。 包装所有前端服务的系统的入口点是称为API网关的关键任务(非微型)服务。 从本质上讲,这是将流量从客户路由到我们的后端服务的单点,从而为我们的客户实现了指数级的身份验证和授权,但同时也存在潜在的单点故障。

本文探讨了工程团队为何以及如何从基于Clojure的API网关实现迁移到基于Go的实现。

在API网关中积累技术债务

就像我们的API网关服务一样,我们之前已经讨论过技术债务是如何产生的,并且发生了很多次。

最初,AppsFlyer的服务是Python整体,它需要一个完整的身份验证和授权解决方案作为整体的一部分。 随着时间的流逝,流量和复杂性都在增加,我们迁移到了微服务架构。 因此,我们需要创建一个统一的API网关解决方案,以用作我们的身份验证和授权提供程序。

我们从卷起袖子并用Clojure编写代码开始,跳过设计阶段,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值