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

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

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

设计和实现:

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

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

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

优势:

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

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

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

分布式:

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

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

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

高可用:

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

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

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

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

文档:

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

后续:

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

9b3752d964cf950c5c08a23393e9d1c8.jpeg

猜你喜欢

转载自blog.csdn.net/lxw1844912514/article/details/130998626