免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

在 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:371182
用户头像

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

关注

评论

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

项目管理系列(3)-如何开好一个项目启动会

Ian哥

项目管理 28天写作

短视频+直播=最自然的表达方式?| 视频号 28 天 (09)

赵新龙

28天写作

区块链介绍

v16629866266

区块链

CMS系统——登录功能

程序员的时光

程序员 七日更 28天写作

正则表达式匹配ini文件的section

老王同学

从硅谷到小米,崔宝秋的25年开源人生

李忠良

28天写作

像用户一样测试:别掉链子

QualityFocus

软件测试 用户体验 回归测试

生产环境全链路压测建设历程 29:FAQ 之 评估方法论、改造、痛点

数列科技杨德华

28天写作

Java 程序经验小结:接口只用于定义类型

后台技术汇

28天写作

精选算法面试-数组III

李孟聊AI

面试 算法 数组 28天写作

坚持写作靠什么?

石君

输入 输出 28天写作

五种IO模型

懒AI患者

io nio AIo bio IO多路复用

聚焦目标,团队工作不再一盘散沙(下)

一笑

管理 目标管理 复盘 28天写作

28天瞎写的第二百一九天:包辆三轮车上班的日子

树上

28天写作

【CSS】文字特效(text-shadow)

德育处主任

CSS css3 html/css CSS小技巧 28天写作

JavaScript05 - JavaScript数据类型

Mr.Cactus

JavaScript

日语复习 Day02【~あっての】

IT蜗壳-Tango

程序员 七日更 日语语法

读书笔记:《激荡三十年》下

lidaobing

28天写作 激荡三十年

[6/28]产品业务数据分析的质量实践

L3C老司机

创业失败启示录|校园微生活之留学生面对面

阿萌

28天写作 创业失败启示录 青城

想象力,科幻与其他「关于科幻 8/28」

道伟

28天写作

胆大无险,脚踏实地

.

28天写作

低代码是在炒概念,炒得不错

Justin

低代码 28天写作

如何通过即构小程序组件实现直播带货功能?

ZEGO即构

小程序 直播带货

重学JS | 箭头函数为什么不能用做构造函数?

梁龙先森

面试 大前端 编程语言 28天写作

【计算机内功修炼】六:10张图让你彻底理解回调函数

码农的荒岛求生

异步 同步 异步IO 回调函数 异步编程

【Mysql-InnoDB 系列】事务提交过程

程序员架构进阶

MySQL 架构 innodb 事务 28天写作

Soul 网关实践 02|选择器&规则介绍

哼干嘛

Java 探索与实践 Soul网关

Soul 网关实践 03|http 请求接入网关

哼干嘛

Java 探索与实践 Soul网关

早上听了一场关于财富的线上专题分享

熊斌

财富自由 28天写作

智能building之 园区

张老蔫

28天写作

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