整合Kafka+Flink 實例(第二部分 設計思路)

前     言php

 

拖了蠻久了,一直說要接着上一部分寫設計思路以及代碼,由於本身技術底子薄弱,加上人又懶,因此一直沒能繼續,今天補上設計思路及部分代碼,後面有時間我會再補充一些應用性的功能,的確有些忙,但願對你們有用;歡迎你們提意見或者拍磚;瀏覽器

以前,我說了,網上蠻多例子都是基於WordCount或者基於展現內存使用率來的,也沒什麼不對,只是我我的以爲沒有太大的實用性;畢竟我們是碼農,凡事講個應用及場景,脫離場景談開發都是扯淡;服務器

 

第一部分  場景和設計思路

場景:網絡

經過爬蟲從網絡獲取數據,不停的插入Kafka中,Flink及時獲取數據,數據打印出來。時間緣由,我沒有繼續作Flink的複雜處理,例如過濾重複、統計數據等,回頭再完善,歡迎你們拍磚;併發

設計思路:學習

邏輯上,三個模塊,一個是網絡爬蟲,提供基礎數據,一個插入Kafka,一個Flink接受處理;優化

   

爲了爬數據,我花了點時間。spa

爬新聞數據,沒意思;沒有什麼加工的價值,若是要加工,還要作分詞拆解,麻煩;設計

爬圖片數據,更沒意思;3d

後來忽然想起來一個數據:股市交易數據;挺好,一個更新快,大可能是數字,加工計算仍是有點價值的;

話很少說,繼續;

1.1 網絡爬蟲及基礎數據

股市交易數據URL以下:

http://vip.stock.finance.sina.com.cn/quotes_service/view/cn_bill_all.php?num=100&page=1&sort=ticktime&asc=0&volume=200000&type=0

 這個網頁相似以下:

 

它有幾個特色:

(1)       數據條數是不停變化的;

(2)       數據可能會有重複的;

(3)       數據總條數仍是有些量的,查詢條件變化後,數據總條數能夠變得更多;

 

具體你們本身研究吧;

若是我不停的抓取這些數據,不就不用for循環10000次了嗎,再也不像網上那些WordCount的例子咯。

怎麼樣不停的抓呢?Quartz啊,每隔幾分鐘抓一次啊(若是不知道Quartz,請自行補腦)

1.2 插入數據進Kafka

這個部分,有人不停的插入數據就行了,這裏幾乎不用作啥,甚至能夠與上面的合併在一次了;

1.3 Flink處理(打印)數據

這個打印的部分,上一篇就有實現了,不贅述;

  

第二部分 開發環境和代碼結構

開發環境 

 

JDK1.8+IDEA+Maven+SpringBoot

Kafka   版本:kafka_2.12-2.4.0  ; 基於Windows

Flink   版本:flink-1.9.1  基於Windows

  

 

第三部分  部分技術點

3.1 有關Quartz

(1)Quartz自己是能夠併發的,最初我設計的時候,想經過瀏覽器發送申請,用於啓動或者暫停爬蟲抓取,自己技術上實現也不算大,可是我考慮的是,實際應用中,若是多個不一樣用戶發送不一樣命令,有的人發送開始執行,有的人發送中止執行,然後臺其實目前就規定抓一個頁面,那麼到底該聽誰的?難道要作一個每一個人啓動每一個人本身的任務?而後每一個人抓的數據只給每一個人用?想到這兒,我就暫停了這個部分的實現;

感受不是太實用;

(2)按照設計,我只考慮一個任務進行執行,因此實際執行過程當中,建議把間隔時間調的稍微長點,不然,上一個任務尚未完成,下一個任務又啓動了,這樣下去只會把服務器給玩宕機了;

(3)我以爲仍是須要有個暫停的功能,初步以爲仍是用網頁參數方式,

(4)單獨寫一個Quartz的應用沒啥意思,我以爲仍是把它放到SpringBoot,隨着系統一塊兒啓動,這樣會比較方便;

3.2 有關爬蟲

爬蟲其實沒有太多的技術難度,無非就是用HttpClient進行頁面數據解析,惟一的小難點,就是要可以自動翻頁,若是不能自動翻頁,要它何用?

 

3.3 有關Flink

(1)flink的使用,我就作了打印,實現方法學習於網絡,爲何打印4個文件,而只有第4個文件會被打印出來,還沒研究。

(2)當我把Kafka中止供應數據時,Flink會出現Reblance的異常,因此這段代碼能夠考慮再優化;

 

 

第四部分  運行結果

目前,我這裏僅僅是打印出來,後續我會找時間再作彙總加工的邏輯;

 

 

文件內容

 

 

注:

我代碼功底若,寫的又比較倉促,剛剛開始研究Kafka及Flink就不貼在此處丟臉了。

若是須要代碼,評論區留下郵件地址。我晚上抽空一併發了。

相關文章
相關標籤/搜索