大访问量(日十亿次)接口系统设计和实现

背景:因业务需要要根据用户源IP获得全球城市信息。应用每次主动活跃都会调用接口,外部访问量日过亿次访问。还会有大量的内部访问需求。

分布式:分布式架构设计符合高并发、松耦合、高可扩展

设计和实现:

IP信息的数据信息约有2个G,一般业务都是三层架构,应用层,缓存层,数据库层。

而我将架构设计为两层,将数据文件通过IP作为索引,调整数据结构,压缩后生成二进制文件。放到共享内存中,方便应用读取。

后端应用程序通过实现二分查找算法,从共享内存中搜索IP对应的信息,然后处理相关数据处理返回给Nginx.

优势:

应用直接通过内存查找相关信息,从而减少了耗时网络调用,提高并发。

节省了数据库服务,减少系统的复杂度,降低成本。

无状态服务,更方便业务在全球分布式的部署和访问。

分布式:

负载均衡通过IP散列到不同的Nginx服务器。

Nginx将请求分片到不同的应用服务

增加Nginx Cache,减少应用请求数量,提高系统并发度。

高可用:

负载均衡的流量和响应时间等监控

接入自研的运维监控系统,Nginx Cache的命中率,应用的响应时间,应用返回的可靠性等

通过自动扩展(Auto scaling)来提高并发度和可用性,从而应对高峰期,提高业务可用性,并合理降低成本。

IP库更新相对频繁,新服务启动时候会自动拉取最新的数据文件,自动更新。

文档:

完备的系统文档和故障处理手册,即使是新员工也可以了解系统特点、做好部署和维护、故障处理等工作。

后续:

App难免会有BUG,瞬间产生连续请求(相信我,这发生过)。即使瞬时的大访问量也不会导致系统DDOS。

9b3752d964cf950c5c08a23393e9d1c8.jpeg

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值