日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...

發布時間:2024/4/17 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在服務器建立服務端,與多個 tcp 連接保持長連接,服務端會根據客戶端發送的 token 驗證確定是否保持長連接建立“session”緩存,

在某個狀態開啟時(我稱為存儲狀態),要把接收多個不確定數量的 tcp 客戶端(不是 http,也不是 mqtt,就是純 tcp 連接)的數據存儲到服務端里,如果可以的話,一定要根據客戶端的 token+日期 分別進行保存。

那么比較合適的存儲方案或數據庫是什么?我想到的是為每個長連接,在存儲狀態開啟時,根據 token 與存儲狀態開啟時間作為文件名生成文本文件,建立文件寫入流,每次接收 tcp 數據都寫入文件,當 tcp 連接關閉時,就關閉文件寫入流。

不過除了這種方案,還有其他合適的嗎?比如數據庫?如果 sql 數據庫的話,它適合這種“在長連接環境下,不斷接收長連接發送的數據并保存“的環境么?如果可以的話,java 的 pgsql 方案一般是怎么弄的?

beginor:

建議考慮時序數據庫,如果是 pg 的話, 可以用 timescaledb 插件

crclz:

建議分塊來存,這樣就有思路了吧?例如,TCP 源源不斷地發送數據過來,然后你這邊每接收 1M 數據,就往數據庫插入( token: string, chunkId: int, data: byte[]),其中 chunkId 代表塊的序號

tctc4869:

@beginor 我去網站看了一下,有個“免費試用”按鈕?收費的?

caotian:

國產開源的 tdengine 試試

dzdh:

@tctc4869 有收費服務 不使用 cluster 的話,使用開源版本即可。有企業版。

ClarkAbe:

[bbolt] (沒有手抖就是兩個 b,一個 b 的已經歸檔了)kv 數據庫,支持時序,直接懟進去就行了,支持樹狀結構....可以用日期做桶名

opengps:

其實可以說任何數據庫都可以用,我經歷過 sqlserver 下的 20 萬 tcp 鏈接,單鏈接 10 秒間隔直接入庫。

以前那時候還沒有各種中間件的概念,用的特別簡單的做法線上實踐過

tctc4869:

@opengps 是嗎,每個 tcp 發送的數據,直接一個 insert 進去?

opengps:

@tctc4869 數據庫有自己的連接池,并不是應用層的一個 tcp 占用一個數據庫鏈接的

buf1024:

數據庫沒有你想象中那么弱,任意一個主流數據庫都能滿足你的需求。

Macv1994:

時序數據庫吧 我記得好像有個國產開源的 不記得叫啥了

xylophone21:

這不是典型的流式計算的前一半嗎?(不確定后一半是不是你沒說)可以看看 Apache Flink 等是怎么玩的

1. 數據不大怎么搞都沒事,數據大一般是用一個消息隊列異步處理

2. 并不一定要把原始數據入庫,存 S3,HDFS 等都可以

3. 不一定需要專門的 TCP 長連接(當然可能你之前就是這樣),HTTP 也是 keep-alive 的,還方便

misaka19000:

看起來是和時序

CodeCore:

需要計算數據量和數據發送頻率。

我們也是 TCP 發送數據,我就是 PG 存儲的。

每個長鏈接,每隔 10s 一次數據。數據量不大 5 KB 以內。

總結

以上是生活随笔為你收集整理的应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。