官术网_书友最值得收藏!

1.2 Elasticsearch的典型接入方式

基本了解了Elasticsearch后,本節將探討適合接入Elasticsearch的幾種典型方式,幫助大家明確Elasticsearch的正確接入方法。

1.2.1 將Elasticsearch作為數據源

Elasticsearch很適合讀多寫少的數據分析型應用程序,如果你參與過OLAP數據分析相關的項目,由于數據倉庫本身就具有讀多寫少的特性,對事務管理的要求也不高,在這種情況下,考慮到Elasticsearch本身具備數據存儲的能力,可以作為數據源,使應用程序的絕大多數讀寫操作都在Elasticsearch中進行,如圖1.1所示。

圖1.1 直接用Elasticsearch作為數據源

1.2.2 給已有系統添加Elasticsearch

如果你已經有一個軟件系統,它使用了MySQL或者HBase數據庫,但是隨著數據量的不斷加大,你可能會感覺MySQL的查詢速度越來越難以接受,也可能由于業務邏輯越來越復雜,而感覺HBase的檢索方式不夠豐富。這時候你可以考慮把那些查詢速度慢或者業務邏輯復雜的數據接入Elasticsearch,使用時你需要把相關表的歷史存量數據一次性導入Elasticsearch,當增量數據寫入數據庫時,也往Elasticsearch中寫一份,這樣就能夠保證兩邊的數據是同步的,如圖1.2所示。

圖1.2 給已有系統添加Elasticsearch

注意:當關系數據庫或NoSQL數據庫能夠滿足實際需要的查詢請求時,則沒有必要接入Elasticsearch。實際上,關系數據庫和NoSQL數據庫的主鍵查詢速度本身就很快,能夠滿足部分場景的需要,可以用它們分擔一些查詢請求,減小Elasticsearch的壓力。另外,寫入Elasticsearch的字段數目并不強制要求與數據庫的一致。只有實際需要檢索、分析和前端展示的字段才必須寫入Elasticsearch。在Elasticsearch中寫入字段數目過多的文檔對性能而言是一種拖累,并且會浪費資源。

1.2.3 使用Elastic Stack

提到Elasticsearch的接入方式,怎么能不講官方的Elastic Stack呢?除了使用應用程序寫入Elasticsearch,你還可以使用官方提供的數據采集工具Logstash或者第三方的ETL工具把數據寫入Elasticsearch。這些工具除了能用來采集數據庫的數據,還可以用來采集線上的日志數據、系統的運維監控指標數據,功能十分豐富。Elastic Stack的組件Kibana提供了一個友好的圖形界面,可以用來管理和可視化分析Elasticsearch的數據,整個技術棧的數據流如圖1.3所示。

圖1.3 Elastic Stack 的數據流

Logstash是早期的數據采集、轉換工具,你只需要編寫配置文件就可以很方便地把各種數據寫入Elasticsearch。但是由于Logstash運行時比較耗資源,于是官方又推出了一系列命名包含beat的輕量級數據采集器,統稱為Beats,相當于把Logstash的數據采集功能分包給Beats工具完成。既可以把Beats采集的數據匯聚到Logstash后再寫入Elasticsearch,也可以直接采集數據然后寫入Elasticsearch。

目前為止,Beats家族的成員主要有以下幾種,種類還在不斷增多。

(1)Filebeat:用于采集各類日志文件,可以讀取并傳送日志的行,支持斷點續傳。

(2)Metricbeat:用于采集各種軟硬件的運維監控數據,例如CPU、內存、MySQL等運行時的指標數據。

(3)Packetbeat:用于采集各種網絡協議產生的流量數據,通過分析這些數據你可以及時發現網絡存在的問題和其運行狀態。

(4)Winlogbeat:用于采集Windows系統的事件日志,可以用來實時分析Windows系統中產生的各種事件。

(5)Heartbeat:能夠監測指定的服務是否可用并能將監測結果采集到Elasticsearch中進行分析。

(6)Auditbeat:用于采集Linux審計框架的事件數據,通過采集并監控用戶的行為數據和關于系統進程的數據,能夠識別出系統潛在的風險和安全問題。

主站蜘蛛池模板: 石棉县| 偃师市| 方正县| 冕宁县| 延津县| 香格里拉县| 江油市| 万荣县| 利川市| 贡山| 成安县| 翼城县| 新巴尔虎左旗| 南宫市| 尚义县| 当雄县| 沙湾县| 孙吴县| 忻州市| 台山市| 盐城市| 涡阳县| 丹寨县| 巴彦县| 贵定县| 白山市| 彭山县| 扎赉特旗| 陵水| 成安县| 乌拉特前旗| 东乌珠穆沁旗| 临潭县| 东阳市| 甘德县| 蓝山县| 石屏县| 张家口市| 德钦县| 建德市| 文山县|