【转】大数据分析中Redis怎么做到220万ops
原文:http://www.cnblogs.com/nnhy/archive/2018/01/16/Redis220.html
大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作。为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新跑数据,这就要求极高的海量数据读取和存储速度!
公司每天增加几亿行的业务日志数据,我们需要从中分析出各种维度的业务画像。经过很长时间的摸索,选择了Redis作为读写数据的缓存。
1,开发平台,C#Net,写Windows服务抓取原始日志数据,合并精简压缩后,写入Redis集群。
2,各业务系统从时间维度上遍历Redis缓存数据,逐行分析处理,中间结果和最终结果写入Redis。
3,另一套Windows服务抓取Redis里的结果数据,保存回数据库。这里有点像MQ的工作方式。
实际上,第一步只有一套系统,这是数据基础。第二第三一般每个子系统都有一对。甚至A系统的结果直接访问B系统放在Redis中的结果数据。
整体上看起来耦合度有点高,但是这一套架构得到了极高的速度,单个子系统实例每秒钟可处理1万到10万个订单!并且是很多套子系统同时工作,单一子系统因业务原因不会吃完全部Redis性能。单独对某一台Redis服务器做压力测试,最高得到了222万ops的速度,测试的是比较简单的业务,统计满足某种业务规则的订单总数。
为何需要这么高速度??
业务规则一旦改变,修改程序后,往往需要重新跑最近一周什么一个月的历史数据。如果每天改几次呢?如果赶上双十一旺季,太慢的速度恐怕连实时数据都赶不上。
Redis怎么做到220万ops
1,Redis是单线程模型,因此32核心服务器安装32个实例
2,数据分片,key散列后均分到几十个实例上
3,关闭持久化,运维和Linux保证可靠性
4,控制好数据包大小,高性能网络通信最忌收发大量小包,控制在1400字节附近最佳,最差也要pipeline
5,其它在网上能轻易找到的细小技巧
为什么不用数据库??
经过大量验证,同样32核心服务器,数据库3巨头一般得到20000qps的查询速度和接近10000tps的写入速度。这是按照单表几百万数据有两个索引的情况测试。如果数据达到几千万上亿,再多两个索引,读写同时进行,那么速度只剩下四分之一不到。真真一个惨字!
大数据分析,有很多是临时数据,需要合并、叠加、去重等等,它们的生命周期不长,一般24小时或48小时,也有不少是两三个小时,关键是数据量还特别大,每天几千万很常见。这类数据,写数据库是很不合适的。
而使用Redis,一台32U512G机器,可以装下一个月几十亿经过压缩处理的历史数据,资源占用在50%上下。
我是大石头,打1999年起,18年老码农。目前在物流行业从事数据分析架构工作。欢迎大家一起C#大数据
【转】大数据分析中Redis怎么做到220万ops的更多相关文章
- 大数据分析中Redis怎么做到220万ops
大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作.为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新跑数据,这就要求极高的海 ...
- 大数据分析中Redis应用
大数据分析中Redis 大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作.为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新 ...
- 大数据分析中数据治理的重要性,从一个BI项目的失败来分析
很多企业在做BI项目时,一开始的目标都是想通过梳理管理逻辑,帮助企业搭建可视化管理模型与深化管理的精细度,及时发现企业经营管理中的问题. 但在项目实施和验收时,BI却变成了报表开发项目,而报表的需求往 ...
- 用Storm轻松实时大数据分析【翻译】
原文地址 简单易用,Storm让大数据分析变得轻而易举. 如今,公司在日常运作中经常会产生TB(terabytes)级的数据.数据来源包括从网络传感器捕获的,到Web,社交媒体,交易型业务数据,以及其 ...
- 使用Storm实现实时大数据分析
摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Sto ...
- Net Core SignalR 测试,可以用于unity、Layair、白鹭引擎、大数据分析平台等高可用消息实时通信器。
SignalR介绍 SignalR介绍来源于微软文档,不过多解释.https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?v ...
- 企业日志大数据分析系统ELK+KAFKA实现【转】
背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...
- Impala:新一代开源大数据分析引擎--转载
原文地址:http://www.parallellabs.com/2013/08/25/impala-big-data-analytics/ 文 / 耿益锋 陈冠诚 大数据处理是云计算中非常重要的问题 ...
- 使用Storm实现实时大数据分析(转)
原文链接:http://blog.csdn.net/hguisu/article/details/8454368 简单和明了,Storm让大数据分析变得轻松加愉快. 当今世界,公司的日常运营经常会生成 ...
随机推荐
- java StringTokenizer
在java引入正则表达式和Scanner类之前分割字符串的唯一方法是使用StringTokenizer来分词,不过现在有了正则表达式和Scanner类我们可以使用更加简单更加简洁的方式来完成同样的工作 ...
- bzoj 2142
数论大集合 只要你做完了这道题,除了线性筛和降幂公式以外,所有数论noip知识点就都会了... 题意:求C(n,∑w)*C(∑w,w1)*C(∑w-w1,w2).....mod p(不保证p为质数) ...
- 有关Math数学运算的js函数
随机函数; Moth.random() //3.以下通过循环给数组每个元素赋值,随机数. // Math.random(); 可以随机0~1之间的任意数 [0,1) // alert(Math. ...
- 《转》MySQL 5.7版本新特性连载
MySQL 5.7版本新特性连载(一) 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起.根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来 ...
- 对象本田CRV
<script> window.onload = function (ev) { var vcar = new Car("本田", "CRV", 4 ...
- 小丸工具箱FAQ
下载地址:https://maruko.appinn.me/index.html 本文章是把一些使用小丸工具箱中常见的操作失误或出错的问题集中写出并提出解决方法,以便大家寻找解决并避免重复提问. 文章 ...
- C#中decimal ,double,float的区别
浮点型 Name CTS Type Description Significant Figures Range (approximate) float System.Single 32-bit sin ...
- poj 2752 求一个字符串所有的相同前后缀
求一个字符串所有的相同前后缀Sample Input ababcababababcababaaaaaSample Output 2 4 9 181 2 3 4 5 #include <iostr ...
- Mac上c语言连接mysql遇到的问题
参照<Beginning Linux Programming>上的例程写了一个连接mysql的c语言小程序connect1.c.但是按照书上的编译命令无法编译.然后经过查阅资料解决了问题. ...
- Ajax提交form表单内容和文件(jQuery.form.js)
jQuery官网是这样介绍form.js A simple way to AJAX-ify any form on your page; with file upload and progress s ...