HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

计算机网络基础知识总结

苹果看辽宁体育

计算机网络 计算机

十八、深入Python函数

刘润森

Python

速度(Velocity)不背这个锅

BY林子

敏捷开发 估算与计划

spring-boot-route(二十)Spring Task实现简单定时任务

Java旅途

Java Spring Boot Spring Task

金九银十期间成功斩获58万架构师Offer!六面字节跳动面经和面试题分享

Java架构追梦

Java 学习 架构 面试 JVM

云原生在京东丨基于 Tekton 打造下一代云原生 CI 平台

京东科技开发者

ci 云原生 Tekton

sync-player:使用websocket实现异地同步播放视频

GoEasy消息推送

websocket 数据同步 实时通信

老公熬夜都要看的:从基础到进阶的Java面试题,助你2021年金三银四拿下大厂offer。

996小迁

Java 编程 架构 面试 计算机

黄金圈法则:成功者必备的深度思考方法

陆通

黄金圈法则 厉害 牛逼

iOS底层原理之—dyld与objc的关联

iOSer

ios开发 iOS Developer dyld objc

go-zero 如何应对海量定时/延迟任务?

万俊峰Kevin

定时任务 时间轮 microservice 延迟任务 Go 语言

蘑菇街大牛熬夜整理的Spring MVC知识点总结(思维导图+源码笔记),免费分享文档资料

Java架构之路

Java 程序员 架构 面试 编程语言

发挥区块链技术优势 确保食品安全

CECBC

区块链技术 信任机制

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(四)

陈泽云

人工智能 大数据 数据结构 操作系统 数据存储

手把手带你玩转 openEuler | openEuler 的使用

openEuler

操作系统 openEuler

架构师第一期作业(第5周)

Cheer

作业

忘记MySQL密码怎么办?一招教你搞定!

王磊

MySQL

java安全编码指南之:ThreadPool的使用

程序那些事

java安全编码 java编码指南 java安全编码指南 java代码规范

MySQL-技术专题-联合索引最左前缀匹配原则

洛神灬殇

MySQL-技术专题-聚集索引和慢查询

洛神灬殇

深度详解企业CRM系统,体验软件快速开发平台

Marilyn

敏捷开发 快速开发 CRM

架构师训练营第五周学习总结

邓昀垚

极客大学架构师训练营

详解GaussDB(DWS) explain分布式执行计划

华为云开发者联盟

数据库 计划 数据

关注你自己,如同篮球巨星一样,让身体最佳化,持续投入最爱的事情。

叶小鍵

健康 科普 王立铭 肥胖

Servlet-技术专题-Servlet3异步原理与实践

洛神灬殇

最新版MySQL在MacOS上的安装与使用

王磊

MySQL

APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!

程序员小航

Java bug Header携带签名 工作笔记 问题排查

PLSQL 过程语言-结构化查询语言

Flychen

帆软授权失效处理

Flychen

目标2025:通信产业在能源变局中拥抱智能未来

脑极体

在算力“沃土”上,种植互联网下一个奇迹十年

脑极体

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