相关阅读:

阿里职位层级(附P级详细要求)

互联网创业公司残酷一幕:全员降薪,裁员凶猛与一夜解散

面试字节跳动,我被怼了....

原文:http://h5ip.cn/ev8N   翻译自jdon社区

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

Snapdeal是一家类似于京东和阿里巴巴结合体的电商平台。独立商户可以借助这个平台销售高质量的商品,在Snapdeal出售的商品均为全新,并且支持七天免费退换。商家进驻Snapdeal后,随后的事宜(交易、包装和物流)都将由Snapdeal完成,也就是商家都将成为Snapdeal的“供货商”,无需与用户直接进行交易。

对于只有不到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处理。

谢谢老板,点个好看↓

架构之每天数十亿次请求的web应用经验分享相关推荐

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

    来源:https://www.jdon.com/47776 印度最大电商公司Snapdeal介绍了其Snapdeal Ads系统支持每天5B请求的经验分享. 对于只有不到10个工程师的团队构建一个可伸 ...

  2. Facebook 实时聊天架构日均处理数十亿条消息!

    摘要:Facebook 的实时聊天架构每日可处理数十亿条消息. 作者 | shivang 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 在这篇文章中,我将 ...

  3. 测试十年的前辈工作心得与经验分享

    前言 由于各种原因,大部分测试人员,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等. 长江后浪推前浪,前浪死在沙滩上",曾经一句让人会心 ...

  4. 百度十亿级流量的搜索前端,是怎么做架构升级的?

    Harttle 百度资深研发工程师,北京大学物理学学士和计算机科学硕士.2016年加入百度,曾负责和参与百度搜索Web极速浏览框架.MIP开源项目的研发,目前负责搜索结果页和搜索推荐业务.Liquid ...

  5. 腾讯云十亿级 Node.js 网关的架构设计与工程实践

    作者|王伟嘉 编辑|孙瑞瑞 本文由 InfoQ 整理自腾讯云 CloudBase 前端负责人王伟嘉在 GMTC 全球大前端技术大会(深圳站)2021 上的演讲<十亿级 Node.js 网关的架构 ...

  6. 【恩墨学院】京东618大促网关承载十亿调用量背后的架构实践

    京东618大促网关承载十亿调用量背后的架构实践 王栋 京东618大促,其网关承载了几十亿的流量和调用,在这种情况下,网关系统必须保证整个系统的稳定性和高可用,保证高性能和可靠,以支撑业务.他们面临的是 ...

  7. 第五章 业务架构,5.5 菜鸟双11“十亿级包裹”之战(作者:兰博)

    5.5 菜鸟双11"十亿级包裹"之战 前言 每年的双11都在刷新物流的世界奇迹,但由于大数据和协同,每次都将看似不可能完成的任务加速完成.以2013年-2016年的一组数据为例,从 ...

  8. 后端架构设计,如何扛住100亿次请求?

    项目地址:https://github.com/xiaojiaqi/10billionhongbaos 1. 前言前几天,偶然看到了 <扛住100亿次请求--如何做一个"有把握&quo ...

  9. Turbo Intruder 使用 - 拥抱十亿请求攻击

    ​ 在上一篇 一些相见恨晚的BurpSuite插件推荐 文章中简单介绍了下 Turbo Intruder 这个插件,这次来详细讲解下这个插件的使用,灵活运用该插件可以很好地提高我们的渗透效率. Tur ...

  10. 当我们遇到100亿次请求?该如何设计后端架构?

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:xiaojiaqi github.com/xiaojiaqi/10billionho ...

最新文章

  1. 跨链(2)跨链技术“公证人机制(Notary schemes)”
  2. 文本框输入限制【不允许空格、只允许数字】
  3. php柱形图 数据sql,ThinkPHP 5.1 读取数据库中的图片
  4. 多云平台_多云系统的授权
  5. laragon环境更新安装新的php版本操作方法
  6. 暑期训练日志----2018.8.18
  7. 有关 google analytics
  8. 华硕笔记本电池软件_华硕灵耀X逍遥测评:11代酷睿处理器加持,王者归来
  9. 如何安装python3.7.2_CentOS7下安装Python3及Pip3并保留Python2
  10. 有可能导致HttpQueryInfo 执行时出现12150 错误的一个原因
  11. jQuery文档处理
  12. 集成Android SlidingMenu(SlideMenu)
  13. (六)Value Function Approximation-LSPI code (3)
  14. 补码乘法、booth算法、Wallace树
  15. Vue 快速搭建页面模板
  16. 回溯法之旅行商问题解题思路详解
  17. Linux版本查看及PS1配置
  18. pictures for my GitHub -- Convenient Pic's URL offering
  19. js学习笔记--了解promise
  20. java计算机毕业设计医院临床管理系统录屏源码+数据库+系统+lw文档+mybatis+运行部署

热门文章

  1. 3年后,基于mysql控制vsftp的用户认证机制
  2. 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
  3. CacheCloud运维管理平台学习笔记
  4. 个人博客http转https
  5. 2016 ICPC 大连网络赛 部分题解
  6. Navicat for MySQL 64位官方中文版
  7. 三元操作符(即条件表达式)
  8. enum 在c中的使用
  9. naked 函数调用
  10. 区块链开发(三)以太坊客户端命令行选项汇总