报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

在 Heroku 上扩展 ipify 服务

  • 2018-02-17
  • 本文字数:975 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

ipify 服务在 Heroku 上已扩展到超过 300 亿次请求。近期,该服务的开发者分享了他的经验。ipify 是一种在线服务,应用可调用ipify 提供的API,获取应用自身的外部IP 地址。该服务最初使用node.js 编写。为获得更好的可扩展性,服务已使用Go 重写。

ipify 的创建者是 Randall Degges ,最初意在解决他在一个项目开发中的需求。第一版是使用 node.js 编写的,并部署在 Heroku 上。该服务可用使用 curl 等工具访问,也可编程使用。服务网站是一个简单的前端,使用 Amazon S3 存储桶,部署在 CloudFront后端上。Heroku 提供的服务单元称为“ dyno ”,最小服务单元为 512 MB 内存和单个 CPU。dyno 的维护代价低,是一种可选方案。dyno 在进程故障时会自动重启,并且前端部署了负载均衡器。最小服务单元的费用为每月约 7 美元。Heroku宿主在AWS 上,由此可使用AWS 提供的可靠性。

ipify 已得到了广泛的使用,面临着可扩展性上的问题。虽然可以通过添加更多的硬件解决该问题,但是一些调查显示,通量仅为每秒 10 次请求。服务曾采用 node.js 的 cluster 模块做了改进,实现加载多个进程以更好地利用多核系统。但是这一改进并不足以处理不断增长的服务流量。服务进而使用 Go 做了重写。出于性能上的考虑,重写时在众多方案中选用了由 Go 提供的 httprouter 软件包。重写使服务性能得到了显著的改善,占用内存更少(仅约 5 MB),并可在单 dyno 部署上达到每秒处理超过 2000 次请求。此外,在字符串处理上的改进,进一步提高了服务的性能,使得每秒处理的请求数增加了 1000 次。服务的重写也降低了代价,ipify 的运行仅需单 dyno 部署即可。宿主在 AWS 上的 ipinfo.io 等类似服务,也面对同样的可扩展性问题。由于一种解决方案是使用付费更高的服务,因此可扩展性问题会转化为需要付出更高的代价。

ipify 现在不仅被一些软件开发人员正常使用,也被一些恶意软件编写人员利用。这导致了大量的突发峰值流量,也导致该服务被一些反病毒软件商的公共阻止列表所屏蔽。当前,服务使用的最高峰值约每月300 亿次请求,平均响应时间介于1 到20 毫秒。与其它一些服务不同, ipify 不做使用速率上的限制,同样也提供地理定位。

ipify 的客户端软件库以多种语言的形式提供

查看英文原文: Scaling the ipify Service on Heroku

2018-02-17 17:371359
用户头像

发布了 391 篇内容, 共 142.4 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

直播预告|如何节省30%人工成本,缩短80%商标办理周期?

京东科技开发者

商标 企业服务 灵活用工

谈 C++17 里的 Observer 模式 - 4 - 信号槽模式

hedzr

c++ 算法 设计模式 Design Patterns c++17

Golang正确使用kafka的姿势-细节决定成败

OpenIM

聊聊最近看的几本书

卢卡多多

读书感悟 9月日更

区块链军事应用探析

CECBC

🔥[深圳/北京/社招] 字节跳动-中台测试部门-移动端专项测试或测开,急招极速面试

管理员账号

招聘 社招

我愿意招什么样的产品经理?

石云升

产品经理 招聘 9月日更

通俗易懂 即时通讯初学者入门 WhatsApp技术架构

OpenIM

和声是容介态——为《链政经济:区块链如何服务新时代治国理政》一书作序

CECBC

服务实体经济,银行区块链应用正在画一个更大的圆

CECBC

【初恋系列】那年的雨还在下...

人工智能~~~

漏洞挖掘:一次反序列化漏洞学习

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

玩转TypeScript工具类型(下)

有道技术团队

typescript 大前端 网易有道

JDK 内置命令行工具学习笔记一

风翱

JVM 9月日更

WEB架构的演变

Regan Yue

9月日更 WEB架构

银行数字化转型指南:《区域性银行数字化转型白皮书》完整版重磅发布

百度开发者中心

最佳实践 银行数字化转型

dubbo-go github action 集成测试

apache/dubbo-go

dubbo-go Apache Dubbo Dubbo3

与顶级互联网公司技术大佬面对面聊聊RocketMQ

阿里巴巴云原生

阿里云 RocketMQ 云原生

云栖大会抢先看,提前探秘云栖数字谷

阿里巴巴云原生

阿里巴巴 云原生 云栖大会

字节跳动灵魂拷问算法,三轮面试结局我哭了,但下次还敢

android 程序员 移动开发

linux之pkill命令

入门小站

Linux

数据仓库的特性

奔向架构师

数据仓库 9月日更

在线MySQL,SQL Server建表语句生成JSON测试数据工具

入门小站

工具

Go 语言网络库 getty 的那些事

apache/dubbo-go

dubbo Go 语言 Dubbo3

【音视频专题】音频质量评估方法那些事

声网

算法 音视频

汽车之家基于dubbo-go云平台的探索和实践

apache/dubbo-go

dubbo dubbo-go dubbogo Dubbo3

Mp3文件结构全解析(一)

轻口味

android 音视频 9月日更

矿山中的鸿蒙花开

脑极体

人类高质量家庭成员:会自己赚钱的成熟卡车香吗?

脑极体

Go 语言嵌入和多态机制对比

程序员历小冰

后端 引航计划

“清洁地球日”看AI与碳中和:百度OCR成无纸化办公利器

百度大脑

人工智能

在Heroku上扩展ipify服务_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章