大數據分析中Redis怎麼做到220萬ops

来源:https://www.cnblogs.com/nnhy/archive/2018/01/16/Redis220.html
-Advertisement-
Play Games

大數據時代,海量數據分析就像吃飯一樣,成為了我們每天的工作。為了更好的為公司提供運營決策,各種抖機靈甚至異想天開的想法都會緊跟著接踵而來!業務多變,決定了必須每天修改系統,重新跑數據,這就要求極高的海量數據讀取和存儲速度! 公司每天增加幾億行的業務日誌數據,我們需要從中分析出各種維度的業務畫像。經過 ...


大數據時代,海量數據分析就像吃飯一樣,成為了我們每天的工作。為了更好的為公司提供運營決策,各種抖機靈甚至異想天開的想法都會緊跟著接踵而來!業務多變,決定了必須每天修改系統,重新跑數據,這就要求極高的海量數據讀取和存儲速度!

公司每天增加幾億行的業務日誌數據,我們需要從中分析出各種維度的業務畫像。經過很長時間的摸索,選擇了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#大數據


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在創建表是預設為加上數據引擎和字元集,如創建一個student表,代碼如下: 插入數據(insert和replace) 1.insert命令直接在表的插入一條記錄。 2.replace命令在插入記錄時判斷主鍵是否相同,相同就修改,否則插入一條新記錄。 用select 結果集創建一個表 修改表名 有兩 ...
  • Sutdent表的定義 欄位名 欄位描述 數據類型 主鍵 外鍵 非空 唯一 自增 Id 學號 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性別 VARCHAR(4) 否 否 否 否 否 Birth 出生年份 YEAR 否 否 否 否 否 D ...
  • 一、概述 在上一篇文章中已經介紹了審計的概念;本篇文章主要介紹如何創建審計,以及該收集哪些審核規範。 二、常用的審核對象 2.1、伺服器審核對象 1.FAILED_LOGIN_GROUP( Audit Login Failed Event Class) 指示主體嘗試登錄到 SQL Server,等效 ...
  • 背景 目前對於時序大數據的存儲和處理往往採用關係型資料庫的方式進行處理,但由於關係型資料庫天生的劣勢導致其無法進行高效的存儲和數據的查詢。時序大數據解決方案通過使用特殊的存儲方式,使得時序大數據可以高效存儲和快速處理海量時序大數據,是解決海量數據處理的一項重要技術。該技術採用特殊數據存儲方式,極大提 ...
  • 本文主要列舉兩張和三張表來講述多表連接查詢。 新建兩張表: 表1:student 截圖如下: 表2:course 截圖如下: (此時這樣建表只是為了演示連接SQL語句,當然實際開發中我們不會這樣建表,實際開發中這兩個表會有自己不同的主鍵。) 一、外連接 外連接可分為:左連接、右連接、完全外連接。 1 ...
  • 在sql語句中指定了含有中文的列進行排序,但排序結果看起來毫無規則,並不是按照拼音進行排序的檢查了DB的Collation後,發現是SQL_Latin1_General_CP1_CI_AS解決方法: 在sql語句中指定排序列的collation為Chinese_PRC_CI_AS ...
  • Case具有兩種格式 簡單Case函數和Case搜索函數: 這兩種方式,可以實現相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式。 還有一個需要註意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。 下麵我們來 ...
  • 一、數據定義 1、創建新資料庫:CREATE DATABASE database_name2、創建新表:CREATE TABLE table_name (column_name datatype,column_name datatype,...)3、修改數據表: 添加列:ALTER TABLE ta ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...