流式圖表拒絕增刪改查之框架搭建過(guò)程
前言
作為一名練習(xí)時(shí)長(zhǎng)兩年半的夾娃工程師,常年浸泡在增刪改查的業(yè)務(wù)代碼里,每當(dāng)金三銀四來(lái)臨該迭代自己簡(jiǎn)歷的時(shí)候,面對(duì)自己的項(xiàng)目經(jīng)歷都十分窘迫。突然有天學(xué)弟問我在實(shí)習(xí)公司一直做縫縫補(bǔ)補(bǔ)的工作或者是一些基于封裝好的RBAC(基于角色的權(quán)限管理系統(tǒng))做業(yè)務(wù)的增刪改查,眼下又要找工作了不知道咋寫項(xiàng)目經(jīng)驗(yàn)。
無(wú)論是功能、技術(shù)棧、設(shè)計(jì)都平淡無(wú)奇,問我咋整,我打開塵封已久的簡(jiǎn)歷一看,操,我不也一樣嗎。
當(dāng)時(shí)快畢業(yè)那會(huì)也是有點(diǎn)焦慮,難的項(xiàng)目看不懂簡(jiǎn)單的項(xiàng)目看不上,難受的一批,于是決定自己搞個(gè)比較有意思的項(xiàng)目,起碼能用一些新穎的技術(shù)棧,給迷茫的大學(xué)生一點(diǎn)小小的思路。
流式圖表,顧名思義,使用流式數(shù)據(jù)做計(jì)算繪做成圖表,上游向流式圖表服務(wù)注冊(cè)并寫入數(shù)據(jù),流式圖表服務(wù)建立監(jiān)聽鏈接,監(jiān)聽到數(shù)據(jù)處理并推送給前端,使圖表流動(dòng)起來(lái)。
只是突然萌生了這個(gè)想法,代碼只是完成了一半,看能不能做起來(lái),希望能堅(jiān)持搞完吧。
技術(shù)方案
- java8 + springboot2.0 + mybatis-plus搭建整體框架
- mysql業(yè)務(wù)層數(shù)據(jù)庫(kù)
- redis數(shù)據(jù)計(jì)算暫存層數(shù)據(jù)庫(kù)、模塊間消息通知、分布式鎖
- kafka流式數(shù)據(jù)組件
- guava線程池實(shí)現(xiàn)消費(fèi)鏈接管理
- websocket即時(shí)通知前端數(shù)據(jù),使用netty優(yōu)化webservice
- 支持分布式擴(kuò)展
- 暫時(shí)決定采用拉的模式(主要怕前端數(shù)據(jù)擠壓),前端代碼到時(shí)候?qū)懖幌氯ゾ驼胰藥兔?..
不使用flink這種大數(shù)據(jù)引擎是因?yàn)閷?duì)剛畢業(yè)的同學(xué)可能有點(diǎn)吃力,不是我不會(huì),等做完了有時(shí)間精力就用flink引擎改造。
數(shù)據(jù)庫(kù)設(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)建時(shí)間', `utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時(shí)間', `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)建時(shí)間', `utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '記錄創(chuàng)建時(shí)間', `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 管理消費(fèi)鏈接、消費(fèi)邏輯
- matrix-message 服務(wù)間通信組件
- matrix-socket 推送模塊,負(fù)責(zé)與前端交互
- matrix-web 數(shù)據(jù)庫(kù)增刪改查
寫項(xiàng)目最爽的階段一是剛開始起一個(gè)很吊的名字,二是完成時(shí)的成就感,先起一個(gè)很猛的名字。代開IDEA直接開擼。
用maven搭建一個(gè)多模塊項(xiàng)目,parent項(xiàng)目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)整到最合理的情況再展示出來(lái),未來(lái)連更幾波。
整體流程
最終效果
以上就是流式圖表拒絕增刪改查之框架搭建過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于流式圖表框架搭建的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring定時(shí)任務(wù)注解@Scheduled詳解
這篇文章主要介紹了Spring定時(shí)任務(wù)注解@Scheduled詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個(gè)注解,主要是用來(lái)開啟定時(shí)任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下2023-09-09SpringBoot利用EasyExcel實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)
EasyExcel是一個(gè)基于Java的、快速、簡(jiǎn)潔、解決大文件內(nèi)存溢出的Excel處理工具,它能讓你在不用考慮性能、內(nèi)存的等因素的情況下,快速完成Excel的讀、寫等功能看,本文就將介紹如何利用EasyExcel實(shí)現(xiàn)導(dǎo)出數(shù)據(jù),需要的朋友可以參考下2023-07-07淺談Java分布式架構(gòu)下如何實(shí)現(xiàn)分布式鎖
這篇文章主要介紹了淺談Java分布式架構(gòu)下如何實(shí)現(xiàn)分布式鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07java實(shí)現(xiàn)消息隊(duì)列的兩種方式(小結(jié))
本文主要介紹了兩種java實(shí)現(xiàn)消息隊(duì)列的方式,利用Spring消息模板發(fā)送消息和Apache ActiveMQ官方實(shí)例發(fā)送消息,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12XFire構(gòu)建web service客戶端的五種方式
本篇文章主要介紹了XFire構(gòu)建web service客戶端的五種方式。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01springboot 實(shí)現(xiàn)Http接口加簽、驗(yàn)簽操作方法
這篇文章主要介紹了springboot 實(shí)現(xiàn)Http接口加簽、驗(yàn)簽操作,服務(wù)之間接口調(diào)用,通過(guò)簽名作為安全認(rèn)證來(lái)保證API的安全性,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09