Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(1)-概述

連載中...
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(1)-概述
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(2)-項(xiàng)目構(gòu)建/基礎(chǔ)模塊-(上)
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(3)-項(xiàng)目構(gòu)建/基礎(chǔ)模塊-(下)
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(4)-數(shù)據(jù)流
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(5)-Function調(diào)度


1.1 為什么需要KisFlow

一些大型toB企業(yè)級(jí)的項(xiàng)目澳淑,需要大量的業(yè)務(wù)數(shù)據(jù),多數(shù)的數(shù)據(jù)需要流式實(shí)時(shí)計(jì)算的能力宜肉,但是很多公司還不足以承擔(dān)一個(gè)數(shù)倉(cāng)類似济赎,F(xiàn)link + Hadoop/HBase 等等嗅钻。 但是業(yè)務(wù)數(shù)據(jù)的實(shí)時(shí)計(jì)算需求依然存在粤剧,所以大多數(shù)的企業(yè)依然會(huì)讓業(yè)務(wù)工程師來(lái)消化這些業(yè)務(wù)數(shù)據(jù)計(jì)算的工作奕污。

而這樣只能直接查詢業(yè)務(wù)數(shù)據(jù)庫(kù),這樣會(huì)間接影響的業(yè)務(wù)能力按厘,或定時(shí)任務(wù)/腳本來(lái)做定時(shí)計(jì)算医吊,這些都不是好的辦法。本人親身經(jīng)歷過(guò)一個(gè)大規(guī)模的系統(tǒng)逮京,多達(dá)上千個(gè)需要計(jì)算的業(yè)務(wù)數(shù)據(jù)字段卿堂,而早期因?yàn)闆](méi)有規(guī)劃好,最后導(dǎo)致存在1000+的腳本在定時(shí)跑懒棉,最后導(dǎo)致了腳本之間對(duì)數(shù)據(jù)的影響御吞,數(shù)據(jù)始終無(wú)法準(zhǔn)確,導(dǎo)致業(yè)務(wù)數(shù)據(jù)經(jīng)常性的報(bào)數(shù)據(jù)問(wèn)題錯(cuò)誤漓藕。 如下面一個(gè)場(chǎng)景:某個(gè)業(yè)務(wù)計(jì)算字段的值,正確為100挟裂,錯(cuò)誤為99享钞, 但是由于歷史代碼的臃腫,會(huì)有多個(gè)計(jì)算腳本對(duì)其值做修復(fù)補(bǔ)丁計(jì)算,會(huì)有各個(gè)腳本相互沖突栗竖,在一定的時(shí)間間隔內(nèi)會(huì)存在數(shù)據(jù)值抖動(dòng)暑脆,可能最終一個(gè)補(bǔ)丁修復(fù)正確,但是這種情況就會(huì)存在一定時(shí)間范圍內(nèi)業(yè)務(wù)數(shù)據(jù)不正確狐肢,最終卻奇跡正確的情況添吗,很讓用戶苦惱。

KisFlow就是為了解決當(dāng)企業(yè)不具備數(shù)倉(cāng)平臺(tái)的計(jì)算能力份名,又依然存在大量數(shù)據(jù)實(shí)時(shí)計(jì)算的場(chǎng)景碟联,讓業(yè)務(wù)工程師可以投入到數(shù)據(jù)流式計(jì)算的業(yè)務(wù)中來(lái),并且可以復(fù)用常用和通用的計(jì)算邏輯僵腺。

1.2 KisFlow實(shí)要支持的能力

流式計(jì)算

1鲤孵、分布式批量消費(fèi)能力(基于上游ODS消費(fèi)配置:如Binlog、Kafka等)
2辰如、Stateful Function能力普监,基于有狀態(tài)的流式計(jì)算節(jié)點(diǎn)拼接,流式計(jì)算橫縱向擴(kuò)展琉兜。
3凯正、數(shù)據(jù)流監(jiān)控及修復(fù)能力,消費(fèi)服務(wù)監(jiān)控豌蟋。
4廊散、多流拼接及第三方中間件存儲(chǔ)插件化。

分布式任務(wù)調(diào)度

5夺饲、分布式定時(shí)任務(wù)調(diào)度奸汇、日志監(jiān)控、任務(wù)調(diào)度狀態(tài)往声。
6擂找、可視化調(diào)度平臺(tái)。

1.3 KisFlow系統(tǒng)定位

KisFlow為業(yè)務(wù)上游計(jì)算層浩销,上層接數(shù)倉(cāng)/其他業(yè)務(wù)方ODS層贯涎、下游接本業(yè)務(wù)存儲(chǔ)數(shù)據(jù)中心。

1.4 KisFlow整體架構(gòu)圖

層級(jí) 層級(jí)說(shuō)明 包括子模塊
流式計(jì)算層 為KisFlow上游計(jì)算層慢洋,直接對(duì)接業(yè)務(wù)存儲(chǔ)及數(shù)倉(cāng)ODS層塘雳,如上游可以為Mysql Binlog、日志普筹、接口數(shù)據(jù)等败明,為被動(dòng)消費(fèi)模式,提供KisFlow實(shí)時(shí)計(jì)算能力太防。 KisFlow:分布式批量消費(fèi)者,一個(gè)KisFlow是由多個(gè)KisFunction組合妻顶。
KisConnectors:計(jì)算數(shù)據(jù)流流中間狀態(tài)持久存儲(chǔ)及連接器。
KisFunctions:支持算子表達(dá)式拼接,Connectors集成讳嘱、策略配置幔嗦、Stateful Function模式、Slink流式拼接等沥潭。
KisConfig:KisFunction的綁定的流處理策略邀泉,可以綁定ReSource讓Function具有固定的獨(dú)立流處理能力。
KisSource:對(duì)接ODS的數(shù)據(jù)源
任務(wù)調(diào)度層 定時(shí)任務(wù)調(diào)度及執(zhí)行器業(yè)務(wù)邏輯钝鸽,包括任務(wù)調(diào)度平臺(tái)汇恤、執(zhí)行器管理、調(diào)度日志及用戶管理等寞埠。提供KisFlow的定時(shí)任務(wù)屁置、統(tǒng)計(jì)、聚合運(yùn)算等調(diào)度計(jì)算能力仁连。 任務(wù)調(diào)度平臺(tái)可視化:包括任務(wù)的運(yùn)行報(bào)表蓝角、調(diào)度報(bào)表、成功比例饭冬、任務(wù)管理使鹅、配置管理、GLUE IDE等可視化管理平臺(tái)昌抠。 執(zhí)行器管理
KisJobs:Golang SDK及計(jì)算自定義業(yè)務(wù)邏輯患朱、執(zhí)行器的自動(dòng)注冊(cè)、任務(wù)觸發(fā)炊苫、終止及摘除等裁厅。 執(zhí)行器場(chǎng)景KisScenes: 根據(jù)業(yè)務(wù)劃分的邏輯任務(wù)集合。
調(diào)度日志及用戶管理:任務(wù)調(diào)度日志收集侨艾、調(diào)度詳細(xì)执虹、調(diào)度流程痕跡等。
組成
KisFlow(1) KisFunction(V) + KisFunction(S) + KisFunction(C) + KisFunction(E)
KisFlow(2) KisFunction(V) + KisFunction(L) + KisFunction(S) + KisFunction(C) + KisFunction(E)
KisFlow(3) KisFunction(V) + KisFunction(L) + KisFunction(C) + KisFunction(E)

通過(guò) KisFunction(S) 和 KisFunction(L)的并流組合關(guān)系唠梨,各個(gè)KisFlow有如下關(guān)系:

KisFlow(2) = KisFlow(1) + KisFlow(2)
KisFlow(3) = KisFlow(1) + KisFlow(2) + KisFlow(3)

1.5 KisFlow關(guān)鍵模塊

1.5.1 KisConfig

KisConfig為KisFlow的配置模塊袋励,其中一個(gè)Config包含F(xiàn)low的配置和Function的配置等。

(1) KisFunction配置

kistype: func
fname: 測(cè)試KisFunction_S1
fmode: Save
source:
 name: 被校驗(yàn)的測(cè)試數(shù)據(jù)源1-用戶訂單維度
 must:
 - userid
 - orderid

option:
 cname: 測(cè)試KisConnector_1
 retry_times: 3
 retry_duration: 500
 default_params:
 default1: default1_param
 default2: default2_param

(2) KisFlow配置

kistype: flow
status: 1
flow_name: MyFlow1
flows:
 - fname: 測(cè)試PrintInput
 params:
 args1: value1
 args2: value2
 - fname: 測(cè)試KisFunction_S1
 - fname: 測(cè)試PrintInput
 params:
 args1: value11
 args2: value22
 default2: newDefault
 - fname: 測(cè)試PrintInput
 - fname: 測(cè)試KisFunction_S1
 params:
 my_user_param1: ffffffxxxxxx
 - fname: 測(cè)試PrintInput

KisFlow是一種流式概念形態(tài)当叭,具體表現(xiàn)的特征如下:
1茬故、一個(gè)KisFlow可以由任意KisFunction組成,且KisFlow可以動(dòng)態(tài)的調(diào)整長(zhǎng)度蚁鳖。
2磺芭、一個(gè)KisFunction可以隨時(shí)動(dòng)態(tài)的加入到某個(gè)KisFlow中,且KisFlow和KisFlow之間的關(guān)系可以通過(guò)KisFunction的Load和Save節(jié)點(diǎn)的加入醉箕,進(jìn)行動(dòng)態(tài)的并流和分流動(dòng)作钾腺。
3甘邀、KisFlow在編程行為上,從面向流進(jìn)行數(shù)據(jù)業(yè)務(wù)編程垮庐,變成了面向KisFunction的函數(shù)單計(jì)算邏輯的開(kāi)發(fā),接近FaaS(Function as a service)體系坞琴。

(3) KisConnector配置

kistype: conn
cname: 測(cè)試KisConnector_1
addrs: '0.0.0.0:9988,0.0.0.0:9999,0.0.0.0:9990'
type: redis
key: userid_orderid_option
params:
 args1: value1
 args2: value2
load: null
save:
 - 測(cè)試KisFunction_S1

(4) KisFlow全局配置

#kistype Global為kisflow的全局配置
kistype: global
#是否啟動(dòng)prometheus監(jiān)控
prometheus_enable: true
#是否需要kisflow單獨(dú)啟動(dòng)端口監(jiān)聽(tīng)
prometheus_listen: true
#prometheus取點(diǎn)監(jiān)聽(tīng)地址
prometheus_serve: 0.0.0.0:20004

1.5.2 KisFunction

KisFunction的類圖設(shè)計(jì)如下


作者:劉丹冰Aceld github: https://github.com/aceld
KisFlow開(kāi)源項(xiàng)目地址:https://github.com/aceld/kis-flow


連載中...
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(1)-概述
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(2)-項(xiàng)目構(gòu)建/基礎(chǔ)模塊-(上)
Golang框架實(shí)戰(zhàn)-KisFlow流式計(jì)算框架(3)-項(xiàng)目構(gòu)建/基礎(chǔ)模塊-(下)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哨查,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子剧辐,更是在濱河造成了極大的恐慌寒亥,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荧关,死亡現(xiàn)場(chǎng)離奇詭異溉奕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)忍啤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)加勤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人同波,你說(shuō)我怎么就攤上這事鳄梅。” “怎么了未檩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵戴尸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冤狡,道長(zhǎng)孙蒙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任悲雳,我火速辦了婚禮挎峦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怜奖。我一直安慰自己浑测,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布歪玲。 她就那樣靜靜地躺著迁央,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滥崩。 梳的紋絲不亂的頭發(fā)上岖圈,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音钙皮,去河邊找鬼蜂科。 笑死顽决,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的导匣。 我是一名探鬼主播才菠,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贡定!你這毒婦竟也來(lái)了赋访?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缓待,失蹤者是張志新(化名)和其女友劉穎蚓耽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體旋炒,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡步悠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘫镇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼎兽。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汇四,靈堂內(nèi)的尸體忽然破棺而出接奈,到底是詐尸還是另有隱情,我是刑警寧澤通孽,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布序宦,位于F島的核電站,受9級(jí)特大地震影響背苦,放射性物質(zhì)發(fā)生泄漏互捌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一行剂、第九天 我趴在偏房一處隱蔽的房頂上張望秕噪。 院中可真熱鬧,春花似錦厚宰、人聲如沸腌巾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)澈蝙。三九已至,卻和暖如春撵幽,著一層夾襖步出監(jiān)牢的瞬間灯荧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工盐杂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逗载,地道東北人哆窿。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像厉斟,于是被迫代替她去往敵國(guó)和親挚躯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái)擦秽,其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速秧均、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)号涯、易擴(kuò)展。現(xiàn)已開(kāi)放源代碼并接入多...
    Q南南南Q閱讀 22,862評(píng)論 1 7
  • 作業(yè)的必要性以及存在的問(wèn)題 1. 為什么需要作業(yè)锯七? 作業(yè)即定時(shí)任務(wù)链快。一般來(lái)說(shuō),系統(tǒng)可使用消息傳遞代替部分使用作業(yè)的...
    Sununy閱讀 6,810評(píng)論 3 25
  • 大數(shù)據(jù)技術(shù)框架 1. 簡(jiǎn)介 2. Hadoop框架2.1. Hadoop-MapReduce2.1.1. 簡(jiǎn)介:2...
    sunTengSt閱讀 12,004評(píng)論 1 78
  • 認(rèn)識(shí)Elastic-Job 1眉尸、任務(wù)調(diào)度高級(jí)需求Quartz 的不足:1)作業(yè)只能通過(guò) DB 搶占隨機(jī)負(fù)載域蜗,無(wú)法協(xié)...
    vincent浩哥閱讀 4,097評(píng)論 0 2
  • 相關(guān)軟件 作者使用的操作系統(tǒng)是 Windows,讀者也可以用 Mac噪猾,操作使用不會(huì)有明顯差異霉祸,如果有差別會(huì)額...
    wood1573閱讀 939評(píng)論 0 3