1. 程式人生 > >【node】記錄項目的開始與完成——pipeline_kafka流式數據庫管理項目

【node】記錄項目的開始與完成——pipeline_kafka流式數據庫管理項目

可能 gui sasl認證 header dex images ref 最好的 最好

前言:

  我始終堅信的一點是,學習的效果80%來自總結,甚至全部都是。總結的好處就是讓你能翻出你的過往,指出其中的不足,看到未來的改進方法,好的總結更能讓知識產生飛躍,所以在工作之余,部署項目之際,總結一番。

架構處理:

  一、背景

    公司數據量龐大,萬花筒一樣的領導隨即用上了pipeline_kafka這樣的流式數據架構。其實在接手項目之前,作為一個應用開發、我是不太清楚kafka是什麽鬼的,還有stream、transform、等等一系列名詞,聽起來很高大上,但是很懵比=-=。

    領導的目標是做一個數據流管理系統,目的是關聯postgresql+kafka+流;通過平臺的方式管理kafka的關聯、流的數據規則、轉換數據的操作,簡單的來說就是集成一下數據工程師平時的sql操作,用可視化平臺的方式提高工作效率。

  二、前端結構

   前端框架,選用了React.js,淺略的使用一下便感受到了react作為一個視圖庫的魅力,它將前端變得更優雅。因為React.js只能處理視圖層,而具體的controller我只是使用了jQuery作為補充,項目的體量不大,變動較多,使用jquery是最好的選擇。

列出使用到的技術:

    ① React.js

    ② jQuery

    ③ react-tools 打包jsx

    ④ sass對css模塊化處理

  看前端效果點擊》》》

  由於項目足夠簡單,React也是淺略的使用了一下,並沒有用到es6,也沒有用到webpack打包,算是一邊做項目,一邊入了門,構思簡單,實用為上,且看代碼結構:

  以首頁為例子:

  首先一個公共的index.html文件 引入需要的文件資源:

  技術分享

  css的處理,[email protected]

  技術分享

這麽做的好處是可以按需加載,並且一個index.scss就可以解決所有的依賴關系,在引入時也可以減少請求數量。

再看react:

  component.js 將所有組件打包,頁面公用

  技術分享

 index.js承載了頁面主要組件,交互處理。

技術分享

跑完所有頁面之後,部署到node中 開啟react-tool,移除browser.js進行應用開發。

  個人覺得這種前端結構的亮點在於,前端結構清晰,組織邏輯比較易懂,適合用作從傳統開發轉入自動化開發的過度結構,也適合開發環境特殊,使用npm苦難的群眾,比如我的公司,工作電腦是完全隔絕互聯網的,使用webpack打包極為不便。另外一個項目如果不確定將來會落到哪位程序員的手裏維護,使用webpack打包有可能造成困擾,畢竟維護代碼的人,他可能是個java開發......

參考資料:

  

React JSX編譯為JavaScript

React 入門實例教程

 三、server端結構

  經典的express框架mvc結構,將前端代碼拿到node中,入口文件看起來是這樣的:

技術分享

pageName變量由router的render決定,這樣做引出的優化點是,頁面由react托管,獨立的js文件可修改性能更強,也加強了邏輯性。

經典的express入口文件

技術分享

router路由控制:

技術分享

參考資料

  Express 開發與部署最佳實踐

  Nodejs進階:如何玩轉子進程(child_process)

  Node.js最新技術棧之Promise篇

nodejs:

  項目需要跨域,通過token做登陸驗證

  項目需要跨域請求,因此如何遠程登錄成了問題,谷歌很久采用了token機制,生成token這一步並沒有使用第三方包,而是耍了下花槍,且看代碼實現:

 技術分享

將token掛在global上,setTimeout延時刪除,獲取時再根據name獲取token對比,跨域時設置credentials獲取cookie,或者通過headers獲取token,安全性能良好,後期我將它掛在了另一個進程中,獲取和設置使用另一個進程進行管理。

更多我將另開文章慢慢的說。〓

數據:

  一、kafka

  nodejs連接kafka我使用的node-rdkafka組件,這個組件只能在linux環境下編譯使用,node-rdkafka git地址

使用它的原因,是它支持sasl認證,這個組件找了很久才找到,具體的連接代碼在工作環境拿不出來,這裏也就不演示介紹,github上有詳細的說明。

  二、postgresql

  用pg組件連接postgresql,封裝出增刪改查方法:

  技術分享

技術分享

三、其他

  更多的細節,因為篇幅太大,放到其他文章中講述,這裏略略的總結一下項目主要結構。

總結:

  總的來說,項目不大,能玩的花樣不多,其中的技術要點,點透也就得心應手了,博主從接到任務到部署,花了十天的時間才開發完成,感覺各個地方還是有很多的不足之處。總結寫在博客上和大家探討。

  有什麽建議,歡迎留言。

  需要了解其中更詳細的知識點,可以聯系我。

【node】記錄項目的開始與完成——pipeline_kafka流式數據庫管理項目