2017-08-07 77 views
0

每次在我的網站上發出請求時,都會將有關該事件的某些數據記錄到數據庫(Yandex ClickHouse)中。如果以大小至少爲1000的塊進行插入,ClickHouse的工作速度將大大加快。在每個請求中,我希望將數據發送到另一臺要存儲數據的計算機,然後在緩衝區達到某些大小時將其清除到數據庫,說1000.我正在考慮使用RabbitMQ消息傳遞/緩衝,但我不知道這是正確的工具。有什麼建議麼?用於批量插入的緩衝區數據

回答

1

我們選擇了讓nginx的發送訪問日誌JSON格式到系統日誌服務器(syslog-ng的) syslog-ng可以使用外部應用程序。並且可以將STDIN數據導入到應用程序中。所以我們寫了一個golang實用程序來批量插入clickhouse。

這對我們很有幫助。

Ofcrouse你也可以編寫一個golang工具來從rabbitmq和bulk插入到clickhouse。

在高峯期我們每秒處理140 k條消息,所以我寫了golang每秒處理一條查詢。所以它會根據每秒消息的數量自動縮放。直接創建用於此目的

https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/configuring-destinations-program.html

http://nginx.org/en/docs/syslog.html

1

Buffer臺發動機。 不久之後,您將使用此類引擎創建表並寫入此表/從此表中讀取。 所有記錄將被緩存在RAM中,並根據設置自動刷新到源表。