每天数十亿次请求的应用经验分享,值得参考!

简介: 印度最大电商公司Snapdeal介绍了其Snapdeal Ads系统支持每天5B请求的经验分享。

印度最大电商公司Snapdeal介绍了其Snapdeal Ads系统支持每天5B请求的经验分享。


对于只有不到10个工程师的团队构建一个可伸缩的大型Web系统(web-scale)是困难的,使用正确的技术也许比你的团队成员数量多少更加重要。


关键战略:


1. 从水平和垂直两个方面扩展


2.CAP定理中选择可用性和分区容错性(AP),而不是一致性和可用性组合(CA)。因为初始目标是需要一个低延迟 高性能的拍卖服务平台。


3.没有厂商锁定保护或因为专利限制使用的情况,开源软件以前达到毫无疑问的稳定和易用程度,且低费用。因此决定不再使用软件供应厂商的专有软件。


4.基于机器同情Mechanical Sympathy法则建立系统,软件建立在深刻理解硬件工作机理上,通过软件最大发挥硬件潜能。


5.云技术的限制使用,因为亚马逊EC2比较昂贵,其次是网络不确定和磁盘虚拟化会提高延迟时间。


6.如果延迟存在就必须处理它,再试图消除它,所有的查询应该限制在1ms以下,使用RocksDB和各种其他解决方案作为初始缓存/嵌入式数据库。


7.尽可能使用SSD,也是为了降低延迟。


8.不虚拟化硬件,利用大规模硬件优点(256GB RAM, 24 core)并行化很多计算。


9.磁盘写操作,如果可能进行计时然后每隔几秒将一串数据flush写到到磁盘。


10.Nginx微调到支持keep-alive连接,Netty优化到支持大量并发负载支持模型。


11.关键数据对于广告服务器总是立即可用(微妙级),所有数据都是存储在内存in-memory的库或数据结构中。


12.架构应该总是share nothing,至少广告服务器和外部拍卖系统应该是share nothing,当我们拔掉广告服务器时,整个系统都不会眨眼受到影响。


13.所有关键数据结果必须是可复制的。


14.保持几天的原始记录备份。


15.如果数据有点过时和系统不一致,没有关系。


16.消息系统应该是失败容错,可以崩溃但是不能丢失数据。


当前基础设施:


1.跨3个数据中心的40–50节点。


2.其中是30台用于高计算(128–256G RAM, 24 cores, 当前顶级CPU,尽可能SSD)


3.其余小于32G RAM, Quadcore机器.


4.10G私有网络 + 10G 公共网络


5.小型 Cassandra, Hbase 和 Spark 集群.


关键性需求:


1.系统支持多个拍卖者发送基于HTTP(REST端口)的RTB 2.0请求。


2.系统应当能在拍卖中推出Yes/No 价格与广告的响应。


3.系统应当能处理每天数亿的事件,响应几百上千的QPS。


4.数据应该尽可能被处理,至少关键点是这样。


使用的关键技术:


1.HBase和Cassandra用于计数据和和管理用户或账户的传统数据集,选择HBase是因为高写入性能,能够几乎实时处理计数。


2.后端主要语言是Java,尽管过去有C++和Erlang经验,Java有成熟的应用技能,JVM也相当成熟。


3.Google Protobuf 用于数据传输


4.Netty作为后端主要服务器,简单高性能。


5.RocksDB作为用户资料读写服务,它是嵌入式数据库,使用Apache Kafka能够跨RocksDB同步数据。


6.Kafka是用于消息队列,流化数据处理


7.CQEngine用于主要的内存in-memory快速查询。


8.Nginx是主要的反向代理


9.Apache Spark是用户ML处理


10 Jenkins用于CI


11.Nagio和Newrelic 监视服务器


12.Zookeeper用于分布式同步


13.Dozens of third parties for audience segments, etc.


14.Bittorrent Sync用于同步跨节点和数据中心的关键数据


15.ustom built quota manger based on Yahoo white paper for budget control.


系统设计与结果:


ad服务器是使用简单非堵塞的netty构建,处理每个进来的HTTP请求,在内存的很多存储中寻找一个活动进行展示,这是使用CQ Engine查询,这种查询并不引发任何网络延迟,计算时间或堵塞过程比如磁盘写,将会整个在内存中运行,所有计算会发生在节点内存中,几乎是in process。


ad服务器和其他系统没有分享,共同组件是通过异步通讯。


ad服务器以5-15ms延迟的高性能传递结果,原始数据异步写入到Kafka处理。


原始数据被Hbase中多个Java过程消费,预算和活动状态在Cassandra集群中更新。


一些原始数据发往spark集群用于adhoc处理。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6月前
|
小程序 API Android开发
【社区每周】基础库更新;小游戏增加流量运营相关文档(11月第四期)
【社区每周】基础库更新;小游戏增加流量运营相关文档(11月第四期)
116 11
|
5月前
|
移动开发 小程序 前端开发
技术经验解读:一个简单抓取糗事百科糗事的小程序
技术经验解读:一个简单抓取糗事百科糗事的小程序
豆瓣评分9.8!阿里内部的分布式架构手册让多少人突破了瓶颈?
没有家族和宗门的帮助,多少天才卡在分布式境界不善而终,今日吾打破自身枷锁,领悟分布式系统法则,突破此境界
豆瓣评分9.8!阿里内部的分布式架构手册让多少人突破了瓶颈?
|
消息中间件 缓存 监控
GitHub热榜 这份《亿级流量并发手册》彻底揭开阿里高流量的秘密
前言 我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务和组件处理。 那我们改如何应对大流量的三种方式? 第一种方法:Scale-out。 第二种方法:使用缓存提升性能 第三种方法:异步处理 面试京东,阿里这些大厂遇到这些问题改怎么办? 秒杀时如何处理每秒上万次的下单请求? 如何保证消息仅仅被消费一次? 如何降低消息队列系统中消息的延迟? 而我今天给大家带来的这份《百亿级并发系统设计》是阿里内部的一份绝密文档,从基础开始,看
|
消息中间件 缓存 分布式计算
真牛!阿里最新发布这份《亿级高并发系统设计手册》涵盖所有操作
前言 我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务和组件处理。 那我们改如何应对大流量的三种方式? 第一种方法:Scale-out。 第二种方法:使用缓存提升性能 第三种方法:异步处理 面试京东,阿里这些大厂遇到这些问题改怎么办? 秒杀时如何处理每秒上万次的下单请求? 如何保证消息仅仅被消费一次? 如何降低消息队列系统中消息的延迟?
|
存储 算法 安全
公共医疗数据库汇总:无需实验,高效论文撰写利器
在医学研究领域,获取高质量的数据和文献资源是进行科学论文撰写的关键。随着信息技术的发展,以及公共医疗数据库的不断壮大和完善,研究人员可以轻松地获取大量的医学数据和文献信息,从而提高论文撰写的效率和质量。本文将为您介绍一系列全面的公共医疗数据库,这些数据库不仅为您提供了丰富的医学资源,还无需进行实验,成为高效论文撰写的利器。
1843 1
|
JavaScript 前端开发 开发工具
如何做到一站检索前沿主流 AIGC / GPT 文章?定时任务抓取文章!
如何做到一站检索前沿主流 AIGC / GPT 文章?定时任务抓取文章!
289 0
|
数据处理 数据库
ChatGPT学习企业产品、服务内容、往期方案,处理所输入的客户需求,定制化生成解决方案
ChatGPT学习企业产品、服务内容、往期方案,处理所输入的客户需求,定制化生成解决方案
165 0
|
SQL 数据采集 数据可视化
用户数据分析与最佳实践以手游为例|青训营笔记
在企业竞争越来越激烈,获客成本越来越高的背景下,如何高效地优化产品和精细化投放运营是当前企业竞争的关键,而用户数据分析正是我们保持此竞争力的重要手段。
250 0
用户数据分析与最佳实践以手游为例|青训营笔记
|
消息中间件 分布式计算 NoSQL
每天数十亿次请求架构经验分享
对于只有不到10个工程师的团队构建一个可伸缩的大型Web系统(web-scale)是困难的,使用正确的技术也许比你的团队成员数量多少更加重要。
157 0