QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

Node Exporter 可观测性最佳实践

观测云

Node Exporter

官方带队实测,阶梯式解锁飞桨框架3.0能力新特性,轻松上手!

飞桨PaddlePaddle

百度 飞桨AI

低代码开发平台,低成本快速搭建云MES系统

万界星空科技

低代码 低代码开发 生产管理系统 mes 万界星空科技

智能可观测护航“双十一”,电商零售高峰稳健冲刺!

博睿数据

Java实现随机抽奖的方法有哪些

不在线第一只蜗牛

Java Python

从校招生到项目经理,菜鸟如何开展项目管理

京东科技开发者

访问海外网站的网络工具: SD-WAN海外专线

Ogcloud

SD-WAN SD-WAN组网 SD-WAN国际专线 海外网络专线 跨国网络专线

1688 API接口深度解析:商品详情、关键词搜索、店铺商品列表与拍立淘

代码忍者

API 接口 pinduoduo API

淘宝商品详情数据接口(taobao.item_get)

tbapi

淘宝API接口 淘宝商品详情接口 天猫商品详情接口

JS数据类型&类型转换

EquatorCoco

JavaScript

技术干货丨助力企业研发数字化转型,Altair全新仿真管理平台解决方案

Altair RapidMiner

数据分析 仿真 智能制造 altair SPDM

实操案例|TinyVue树表+动态行合并

OpenTiny社区

开源 前端 组件库 OpenTiny TinyVue

华为之泉,涌入开源事业的大江大河

脑极体

AI 软件

京东API深度解析:精准呈现商品全网价格数据于详情页

代码忍者

API 接口 pinduoduo API

走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂

阿里巴巴云原生

阿里云 云原生

Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

快乐非自愿限量之名

Spring Boot

揭秘,实时比赛统计模块如何集成开发到体育直播平台

软件开发-梦幻运营部

Spring Cloud微服务下如何配置I8n

快乐非自愿限量之名

Java 微服务 Spring Boot

写一个Chrome浏览器插件

京东科技开发者

电商开发者必备:深入解析微店商品详情API接口

代码忍者

API 接口 pinduoduo API

淘宝/天猫商品详情API返回值深度剖析与实战运用:聚焦taobao.item_get_desc

代码忍者

API 接口 pinduoduo API

ERP系统怎么选?手把手教你选对ERP!

积木链小链

企业管理 ERP

抛开偏见,一文全新认识低代码平台

武汉万云网络科技有限公司

如何使用Python开发1688商品详情API接口?

科普小能手

API 1688 Python开发 API 接口 1688商品详情接口

想管理好团队?一定要三“靠”三“不靠”

敏捷开发

管理 团队建设 企业管理 团队协同

浅谈DNS递归解析和迭代解析之间的区别

国科云

域名解析 DNS解析

用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成

阿里巴巴云原生

阿里云 云原生

用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成

阿里云云效

阿里云 云原生

多分支组网解决方案:SD-WAN

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂

阿里云云效

阿里云 云原生

博睿数据登顶中国应用性能管理及可观测性APMO市场份额第一!

博睿数据

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