流式圖表拒絕增刪改查之框架搭建過程
前言
作為一名練習時長兩年半的夾娃工程師,常年浸泡在增刪改查的業(yè)務(wù)代碼里,每當金三銀四來臨該迭代自己簡歷的時候,面對自己的項目經(jīng)歷都十分窘迫。突然有天學弟問我在實習公司一直做縫縫補補的工作或者是一些基于封裝好的RBAC(基于角色的權(quán)限管理系統(tǒng))做業(yè)務(wù)的增刪改查,眼下又要找工作了不知道咋寫項目經(jīng)驗。
無論是功能、技術(shù)棧、設(shè)計都平淡無奇,問我咋整,我打開塵封已久的簡歷一看,操,我不也一樣嗎。
當時快畢業(yè)那會也是有點焦慮,難的項目看不懂簡單的項目看不上,難受的一批,于是決定自己搞個比較有意思的項目,起碼能用一些新穎的技術(shù)棧,給迷茫的大學生一點小小的思路。
流式圖表,顧名思義,使用流式數(shù)據(jù)做計算繪做成圖表,上游向流式圖表服務(wù)注冊并寫入數(shù)據(jù),流式圖表服務(wù)建立監(jiān)聽鏈接,監(jiān)聽到數(shù)據(jù)處理并推送給前端,使圖表流動起來。
只是突然萌生了這個想法,代碼只是完成了一半,看能不能做起來,希望能堅持搞完吧。
技術(shù)方案
- java8 + springboot2.0 + mybatis-plus搭建整體框架
- mysql業(yè)務(wù)層數(shù)據(jù)庫
- redis數(shù)據(jù)計算暫存層數(shù)據(jù)庫、模塊間消息通知、分布式鎖
- kafka流式數(shù)據(jù)組件
- guava線程池實現(xiàn)消費鏈接管理
- websocket即時通知前端數(shù)據(jù),使用netty優(yōu)化webservice
- 支持分布式擴展
- 暫時決定采用拉的模式(主要怕前端數(shù)據(jù)擠壓),前端代碼到時候?qū)懖幌氯ゾ驼胰藥兔?..
不使用flink這種大數(shù)據(jù)引擎是因為對剛畢業(yè)的同學可能有點吃力,不是我不會,等做完了有時間精力就用flink引擎改造。
數(shù)據(jù)庫設(shè)計
CREATE TABLE `STREAM_CONFIG` ( `id` bigint NOT NULL AUTO_INCREMENT, `conf_id` char(100) CHARACTER, `name` char(100) CHARACTER NOT NULL DEFAULT '' COMMENT '流式數(shù)據(jù)源名稱', `conn_config` text COMMENT '流式數(shù)據(jù)源配置', `fields` text COMMENT '流式數(shù)據(jù)源字段信息', `is_del` int NOT NULL DEFAULT '0', `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時間', `utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時間', `use_count` int DEFAULT NULL, UNIQUE KEY `conf_id (`conf_id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `CHART` ( `id` bigint NOT NULL AUTO_INCREMENT, `chart_id` char(100) CHARACTER, `name` char(100) CHARACTER NOT NULL DEFAULT '' COMMENT '流式圖表名稱', `field_id` text COMMENT '流式圖表使用的窗口字段id', `is_del` int NOT NULL DEFAULT '0', `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時間', `utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時間', `use_count` int DEFAULT NULL, UNIQUE KEY `chart_id (`chart_id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
基礎(chǔ)模塊
- matrix-common 公共依賴、工具類、常量、
- matrix-core 管理消費鏈接、消費邏輯
- matrix-message 服務(wù)間通信組件
- matrix-socket 推送模塊,負責與前端交互
- matrix-web 數(shù)據(jù)庫增刪改查
寫項目最爽的階段一是剛開始起一個很吊的名字,二是完成時的成就感,先起一個很猛的名字。代開IDEA直接開擼。
用maven搭建一個多模塊項目,parent項目pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <modules> <module>matrix-common</module> <module>matrix-core</module> <module>matrix-web</module> <module>matrix-socket</module> <module>matrix-message</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.4.3</version> </parent> <groupId>com.uptown</groupId> <artifactId>matrix</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> <scope>compile</scope> </dependency> </dependencies> </project>
其他的先不貼了,整的匆忙得調(diào)整到最合理的情況再展示出來,未來連更幾波。
整體流程
最終效果
以上就是流式圖表拒絕增刪改查之框架搭建過程的詳細內(nèi)容,更多關(guān)于流式圖表框架搭建的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot利用EasyExcel實現(xiàn)導出數(shù)據(jù)
EasyExcel是一個基于Java的、快速、簡潔、解決大文件內(nèi)存溢出的Excel處理工具,它能讓你在不用考慮性能、內(nèi)存的等因素的情況下,快速完成Excel的讀、寫等功能看,本文就將介紹如何利用EasyExcel實現(xiàn)導出數(shù)據(jù),需要的朋友可以參考下2023-07-07淺談Java分布式架構(gòu)下如何實現(xiàn)分布式鎖
這篇文章主要介紹了淺談Java分布式架構(gòu)下如何實現(xiàn)分布式鎖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07java實現(xiàn)消息隊列的兩種方式(小結(jié))
本文主要介紹了兩種java實現(xiàn)消息隊列的方式,利用Spring消息模板發(fā)送消息和Apache ActiveMQ官方實例發(fā)送消息,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-12-12XFire構(gòu)建web service客戶端的五種方式
本篇文章主要介紹了XFire構(gòu)建web service客戶端的五種方式。具有很好的參考價值,下面跟著小編一起來看下吧2017-01-01springboot 實現(xiàn)Http接口加簽、驗簽操作方法
這篇文章主要介紹了springboot 實現(xiàn)Http接口加簽、驗簽操作,服務(wù)之間接口調(diào)用,通過簽名作為安全認證來保證API的安全性,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-09-09