中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何基于MySQL做實(shí)時(shí)計(jì)算?

有時(shí)候我們會(huì)有這樣的場(chǎng)景,在某個(gè)接口中,數(shù)據(jù)已經(jīng)很規(guī)范地存入到一張MYSQL表中,現(xiàn)在想對(duì)這樣的數(shù)據(jù)做一些實(shí)時(shí)或準(zhǔn)實(shí)時(shí)處理,比如數(shù)據(jù)多模式存儲(chǔ)、異步準(zhǔn)實(shí)時(shí)業(yè)務(wù)流程、業(yè)務(wù)實(shí)時(shí)監(jiān)控等。接口中處理流程如下:

源匯網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

最原始的方法,是改動(dòng)業(yè)務(wù)代碼,將這些額外的處理流程作為同步流程,在更新MYSQL數(shù)據(jù)之后同步執(zhí)行。如下圖:

但是這樣的處理流程可能會(huì)越來(lái)越多,如果一直作為同步流程,整個(gè)接口會(huì)變得越來(lái)越龐大、并且耗時(shí)越來(lái)越長(zhǎng)、出問(wèn)題的風(fēng)險(xiǎn)越來(lái)越高。

所以我會(huì)考慮異步處理流程。如果可以改動(dòng)一下代碼,將數(shù)據(jù)額外寫(xiě)一份兒到隊(duì)列里,再用flink、storm之類(lèi)的去消費(fèi)不就好了么。如下圖:



但實(shí)際上,或許由于架構(gòu)設(shè)計(jì)的不規(guī)范、或許由于業(yè)務(wù)場(chǎng)景的繁多,導(dǎo)致在代碼中加一遍數(shù)據(jù)埋點(diǎn),就如同重構(gòu)一般的工作量。所以我們需要另一種方式,能實(shí)時(shí)感知到MYSQL中數(shù)據(jù)的變化。

MYSQL的binlog可以幫我們記錄數(shù)據(jù)的變化,我們還需要一個(gè)工具來(lái)收集binlog,并轉(zhuǎn)為我們能讀懂的數(shù)據(jù)。阿里有一款叫canal的開(kāi)源軟件正是做這個(gè)用的,可以通過(guò)修改源碼,增加監(jiān)控、告警、投遞隊(duì)列功能來(lái)實(shí)現(xiàn)。但現(xiàn)在,阿里云的日志服務(wù)為我們集成了這一功能,我們可以用更短的時(shí)間、更少的資源來(lái)獲得更穩(wěn)定、更放心的服務(wù)。如下圖:


日志服務(wù)收集binlog的功能還在內(nèi)測(cè)中,不久之后將與大家見(jiàn)面。

比如有這樣一個(gè)場(chǎng)景,我的MYSQL里有一張訂單推送記錄表,現(xiàn)在有一個(gè)需求,需要將這個(gè)表中的數(shù)據(jù),按照一定格式再寫(xiě)入一份兒到表格存儲(chǔ)TableStore中。

傳統(tǒng)的實(shí)現(xiàn)方式,是在程序有寫(xiě)入到MYSQL的地方,再加一段代碼,寫(xiě)入MYSQL成功后再寫(xiě)入到表格存儲(chǔ)中。而現(xiàn)在,為完成這個(gè)需求,我選用的技術(shù)方案是:


日志服務(wù)SLS+流計(jì)算StreamCompute+表格存儲(chǔ)TableStore

首先使用日志服務(wù),配置對(duì)mysql中訂單推送記錄表所在實(shí)例的binlog的收集。

日志服務(wù)收集binlog的原理,與canal一致。具體配置這里暫不作敘述。

收集到的日志中,包含:數(shù)據(jù)庫(kù)名、表名、事件(row_insert、row_update、row_delete)、全局事務(wù)ID、各個(gè)字段修改前的值、各個(gè)字段修改后的值。

根據(jù)場(chǎng)景,我們需要捕獲到每個(gè)row_insert和row_update操作中,各個(gè)字段修改后的值,然后寫(xiě)入到表格存儲(chǔ)中。所以我們?cè)诹饔?jì)算中,先配置好日志服務(wù)的源表、和表格存儲(chǔ)的目標(biāo)表,中間的邏輯這樣寫(xiě):

即可完成此需求。

再比如有這樣一個(gè)場(chǎng)景,我的MYSQL里有一張用戶(hù)信息表,現(xiàn)在想要實(shí)時(shí)統(tǒng)計(jì)每日注冊(cè)用戶(hù)數(shù),并通過(guò)大屏展示出來(lái)。

為完成這個(gè)需求,我選用的技術(shù)方案是:


日志服務(wù)SLS+流計(jì)算StreamCompute+表格存儲(chǔ)TableStore+數(shù)據(jù)可視化DataV

首先使用日志服務(wù),配置對(duì)mysql中user_info表所在實(shí)例的binlog的收集。

根據(jù)場(chǎng)景,我們需要捕獲到每個(gè)row_insert操作的時(shí)間,并將時(shí)間截取到日期。統(tǒng)計(jì)每天有多少條往用戶(hù)信息表中插入的操作記錄。所以我們?cè)诹饔?jì)算中,先配置好日志服務(wù)的源表、和表格存儲(chǔ)的目標(biāo)表,中間邏輯這樣寫(xiě):

即可完成需求。

異步獲取MYSQL數(shù)據(jù)變化,觸發(fā)異步流程,避免了多個(gè)同步流程可能造成的執(zhí)行時(shí)間過(guò)長(zhǎng)、或者由于網(wǎng)絡(luò)原因卡住等等導(dǎo)致的風(fēng)險(xiǎn)。同時(shí),異步流程也可以并行,總體上加快了業(yè)務(wù)流程的速度,使“一份兒數(shù)據(jù)、多種處理”變得更加方便快捷。

當(dāng)然,對(duì)于上邊作為例子的兩個(gè)場(chǎng)景來(lái)說(shuō),文中給出的方案并不是唯一的解決辦法,還可以使用函數(shù)計(jì)算代替流計(jì)算實(shí)現(xiàn)同樣的效果。

整套流程全部采用阿里云的服務(wù)化產(chǎn)品進(jìn)行,使得本來(lái)全部獨(dú)立開(kāi)發(fā)需要幾天的工作量,可以在幾分鐘之內(nèi)搞定,方便快捷,且整套流程都有完善的監(jiān)控、告警機(jī)制,安全放心。

本文來(lái)自:阿里云MVP月度分享

當(dāng)前題目:如何基于MySQL做實(shí)時(shí)計(jì)算?
路徑分享:http://www.rwnh.cn/article22/dsecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作商城網(wǎng)站、小程序開(kāi)發(fā)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
凤翔县| 东兰县| 平顶山市| 灵宝市| 收藏| 五华县| 冀州市| 石河子市| 闵行区| 盐城市| 鲜城| 隆林| 徐汇区| 米泉市| 大余县| 琼中| 会理县| 乡宁县| 绥化市| 普兰县| 永修县| 平武县| 淳化县| 沙湾县| 金门县| 安宁市| 潢川县| 合阳县| 杭锦后旗| 云和县| 兴宁市| 高邮市| 象州县| 平泉县| 云浮市| 临西县| 平昌县| 长白| 万安县| 正蓝旗| 拜泉县|