您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

每天10亿次请求Web系统的绝佳干货分享

时间:2019-12-17 11:13:08  来源:  作者:
翻译自jdon社区
原文:http://h5ip.cn/ev8N 
每天10亿次请求的绝佳干货分享

 

印度最大电商公司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处理。



Tags:Web系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,...【详细内容】
2021-12-08  Tags: Web系统  点击:(23)  评论:(0)  加入收藏
印度最大电商公司Snapdeal介绍了其Snapdeal Ads系统支持每天5B请求的经验分享。...【详细内容】
2019-12-17  Tags: Web系统  点击:(66)  评论:(0)  加入收藏
在上图中我们描述了Web系统架构中的组成部分。并且给出了每一层常用的技术组件/服务实现。需要注意以下几点:...【详细内容】
2019-09-20  Tags: Web系统  点击:(142)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条