流式圖表拒絕增刪改查之框架搭建過程
前言
作為一名練習時長兩年半的夾娃工程師,常年浸泡在增刪改查的業(yè)務代碼里,每當金三銀四來臨該迭代自己簡歷的時候,面對自己的項目經(jīng)歷都十分窘迫。突然有天學弟問我在實習公司一直做縫縫補補的工作或者是一些基于封裝好的RBAC(基于角色的權限管理系統(tǒng))做業(yè)務的增刪改查,眼下又要找工作了不知道咋寫項目經(jīng)驗。
無論是功能、技術棧、設計都平淡無奇,問我咋整,我打開塵封已久的簡歷一看,操,我不也一樣嗎。

當時快畢業(yè)那會也是有點焦慮,難的項目看不懂簡單的項目看不上,難受的一批,于是決定自己搞個比較有意思的項目,起碼能用一些新穎的技術棧,給迷茫的大學生一點小小的思路。
流式圖表,顧名思義,使用流式數(shù)據(jù)做計算繪做成圖表,上游向流式圖表服務注冊并寫入數(shù)據(jù),流式圖表服務建立監(jiān)聽鏈接,監(jiān)聽到數(shù)據(jù)處理并推送給前端,使圖表流動起來。
只是突然萌生了這個想法,代碼只是完成了一半,看能不能做起來,希望能堅持搞完吧。
技術方案
- java8 + springboot2.0 + mybatis-plus搭建整體框架
- mysql業(yè)務層數(shù)據(jù)庫
- redis數(shù)據(jù)計算暫存層數(shù)據(jù)庫、模塊間消息通知、分布式鎖
- kafka流式數(shù)據(jù)組件
- guava線程池實現(xiàn)消費鏈接管理
- websocket即時通知前端數(shù)據(jù),使用netty優(yōu)化webservice
- 支持分布式擴展
- 暫時決定采用拉的模式(主要怕前端數(shù)據(jù)擠壓),前端代碼到時候寫不下去就找人幫忙...
不使用flink這種大數(shù)據(jù)引擎是因為對剛畢業(yè)的同學可能有點吃力,不是我不會,等做完了有時間精力就用flink引擎改造。
數(shù)據(jù)庫設計
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;
基礎模塊
- matrix-common 公共依賴、工具類、常量、
- matrix-core 管理消費鏈接、消費邏輯
- matrix-message 服務間通信組件
- 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>
其他的先不貼了,整的匆忙得調整到最合理的情況再展示出來,未來連更幾波。
整體流程

最終效果

以上就是流式圖表拒絕增刪改查之框架搭建過程的詳細內(nèi)容,更多關于流式圖表框架搭建的資料請關注腳本之家其它相關文章!
相關文章
SpringBoot利用EasyExcel實現(xiàn)導出數(shù)據(jù)
EasyExcel是一個基于Java的、快速、簡潔、解決大文件內(nèi)存溢出的Excel處理工具,它能讓你在不用考慮性能、內(nèi)存的等因素的情況下,快速完成Excel的讀、寫等功能看,本文就將介紹如何利用EasyExcel實現(xiàn)導出數(shù)據(jù),需要的朋友可以參考下2023-07-07
springboot 實現(xiàn)Http接口加簽、驗簽操作方法
這篇文章主要介紹了springboot 實現(xiàn)Http接口加簽、驗簽操作,服務之間接口調用,通過簽名作為安全認證來保證API的安全性,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-09-09

