elasticsearch可以代替NoSQL嗎
創(chuàng)新互聯(lián)是一家以網(wǎng)站設(shè)計(jì),開發(fā)核心業(yè)務(wù)的專業(yè)網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)為客戶提供:軟文發(fā)稿、創(chuàng)新網(wǎng)站解決方案。我們的目標(biāo)是提高客戶網(wǎng)站項(xiàng)目的專業(yè)度,以創(chuàng)新和互聯(lián)的思維增加用戶體驗(yàn)并有效提高潛在客戶。
優(yōu)點(diǎn):
1.高并發(fā)。實(shí)測es單機(jī)分配10g內(nèi)存單實(shí)例,寫入能力1200qps,60g內(nèi)存、12核CPU起3個(gè)實(shí)例預(yù)計(jì)可達(dá)到6000qps。
2.同機(jī)房單條數(shù)據(jù)寫入平均3ms(比mysql慢,mg不清楚)
3.容錯(cuò)能力比mg強(qiáng)。比如1主多從,主片掛了從片會自動頂上
4.滿足大數(shù)據(jù)下實(shí)時(shí)讀寫需求,無需分庫(不存在庫的概念)。
5.易擴(kuò)展。實(shí)例間做下配置即可擴(kuò)展并發(fā)性和容積,自動分配的寫入機(jī)制,無需操心傳統(tǒng)db中多主同步的詬病
6.支持較復(fù)雜的條件查詢,group by、排序都不是問題
7.具有一定的關(guān)系性,但不用擔(dān)心大字段的問題
人群圈選,也叫人群定向。在業(yè)界有中廣泛的業(yè)務(wù)場景。
業(yè)界比較優(yōu)秀的方案有百度基于doris來實(shí)現(xiàn)海量用戶的圈選,可以實(shí)現(xiàn)千萬級人群秒級圈選。但是這種方案比較復(fù)雜:
1、需要數(shù)倉同學(xué)加工二值化tag,構(gòu)建用戶二值化tag到用戶bitmap集合的倒排索引
2、需要通過構(gòu)建哈希分桶列,解決超大bitmap基數(shù)交并集問題
3、需要數(shù)倉同學(xué)構(gòu)建全局字典,防止不連續(xù)id帶來的roaring bitmap性能問題
4、需要通過to_bitmap函數(shù)解決動態(tài)標(biāo)簽與靜態(tài)標(biāo)簽的組合圈選問題
5、需要團(tuán)隊(duì)有doris的運(yùn)維能力
本博文介紹一種基于spark的輕量級圈選,可以實(shí)現(xiàn)千萬級人群分鐘級(5分鐘以內(nèi))圈選。
業(yè)界還有基于ES、MR、離線+服務(wù)bitmap等方案(我們選型時(shí),doris還不火,故不在此列)。
ES:大人群的滾動導(dǎo)出會給集群帶來很大壓力的;另外就是如果構(gòu)建一個(gè)大而全畫像寬表的話,這個(gè)表會很稀疏,所以我們會按業(yè)務(wù)主題構(gòu)建多個(gè)es表,這樣就會涉及到多個(gè)表之間join的問題,而es是不支持join語義的。
MR:老方案了,性能不大行
es+bitmap方案:這個(gè)方案擴(kuò)展起來有點(diǎn)doris的味道。但是自己開發(fā)的話,其實(shí)比較復(fù)雜,而且沒有居多性能優(yōu)化手段的話,性能沒那么理想,大都是比不上spark的。
因此,最后我們選擇了spark做為人群圈選的方案。
我們構(gòu)建了用戶畫像相關(guān)的一站式平臺,前端平臺包括人群管理、標(biāo)簽管理、畫像分析等相關(guān)功能。
中間層服務(wù)對應(yīng)包含人群管理中心、人群任務(wù)調(diào)度、人群解析引擎(負(fù)責(zé)前端json到Spark SQL的轉(zhuǎn)化)、標(biāo)簽管理中心的模塊;當(dāng)然也包含權(quán)限、安全、流控、人群監(jiān)控等輔助模塊。
存儲層,我們主要基于spark進(jìn)行人群定向,依托Hbase/Redis做用戶單到點(diǎn)查詢,用Mysql做配置信息存儲。
我們選取兩個(gè)主題的畫像進(jìn)行交集圈選,圈選結(jié)果千萬級,測試結(jié)果如下:
優(yōu)點(diǎn): 1.高并發(fā)。實(shí)測es單機(jī)分配10g內(nèi)存單實(shí)例,寫入能力1200qps,60g內(nèi)存、12核CPU起3個(gè)實(shí)例預(yù)計(jì)可達(dá)到6000qps。 2.同機(jī)房單條數(shù)據(jù)寫入平均3ms(比mysql慢,mg不清楚) 3.容錯(cuò)能力比mg強(qiáng)。