業(yè)務(wù)場景
在我們的應(yīng)用場景中經(jīng)常有這樣的需要晋修,通過模糊搜索來搜索想要的數(shù)據(jù)恒界,當(dāng)我們數(shù)量小的時(shí)候喂柒,我們完全可以利用數(shù)據(jù)庫的like幫我實(shí)現(xiàn)這個(gè)功能,但當(dāng)數(shù)據(jù)量越來越大時(shí)棚放,我們會(huì)發(fā)現(xiàn)數(shù)據(jù)庫的響應(yīng)速度越來越慢枚粘,甚至一個(gè)like語句可以查掛整個(gè)應(yīng)用。
架構(gòu)設(shè)計(jì)
我廠利用了搜索引擎來避免數(shù)據(jù)庫的like查詢席吴,架構(gòu)圖如下:
原理很簡單赌结,解析mysql的binlog日志捞蛋,然后實(shí)時(shí)同步到es中孝冒,如果我們自己解析binlog柬姚,那真是一個(gè)不小的工作量,而且我們也不必要自己造輪子庄涡,阿里開源的項(xiàng)目canal正好符合我們的需求量承。
詳細(xì)canal的資料大家可以訪問canal wiki
web app是一個(gè)服務(wù),采用了生產(chǎn)者穴店、消費(fèi)者和阻塞隊(duì)列的模型來處理撕捍,如果數(shù)據(jù)量非常大,可以引入消息隊(duì)列泣洞,