流式图表拒绝增删改查之框架搭建过程

 更新时间:2023年04月12日 14:58:11   作者:在下uptown  
这篇文章主要为大家介绍了流式图表拒绝增删改查之框架搭建过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

作为一名练习时长两年半的夹娃工程师,常年浸泡在增删改查的业务代码里,每当金三银四来临该迭代自己简历的时候,面对自己的项目经历都十分窘迫。突然有天学弟问我在实习公司一直做缝缝补补的工作或者是一些基于封装好的RBAC(基于角色的权限管理系统)做业务的增删改查,眼下又要找工作了不知道咋写项目经验。

无论是功能、技术栈、设计都平淡无奇,问我咋整,我打开尘封已久的简历一看,操,我不也一样吗。

当时快毕业那会也是有点焦虑,难的项目看不懂简单的项目看不上,难受的一批,于是决定自己搞个比较有意思的项目,起码能用一些新颖的技术栈,给迷茫的大学生一点小小的思路。

流式图表,顾名思义,使用流式数据做计算绘做成图表,上游向流式图表服务注册并写入数据,流式图表服务建立监听链接,监听到数据处理并推送给前端,使图表流动起来。

只是突然萌生了这个想法,代码只是完成了一半,看能不能做起来,希望能坚持搞完吧。

技术方案

  • java8 + springboot2.0 + mybatis-plus搭建整体框架
  • mysql业务层数据库
  • redis数据计算暂存层数据库、模块间消息通知、分布式锁
  • kafka流式数据组件
  • guava线程池实现消费链接管理
  • websocket即时通知前端数据,使用netty优化webservice
  • 支持分布式扩展
  • 暂时决定采用拉的模式(主要怕前端数据挤压),前端代码到时候写不下去就找人帮忙...

不使用flink这种大数据引擎是因为对刚毕业的同学可能有点吃力,不是我不会,等做完了有时间精力就用flink引擎改造。

数据库设计

CREATE TABLE `STREAM_CONFIG` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `conf_id` char(100) CHARACTER,
  `name` char(100) CHARACTER NOT NULL DEFAULT '' COMMENT '流式数据源名称',
  `conn_config` text COMMENT '流式数据源配置',
  `fields` text COMMENT '流式数据源字段信息',
  `is_del` int NOT NULL DEFAULT '0',
  `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `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 '记录创建时间',
  `utime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `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 数据库增删改查

写项目最爽的阶段一是刚开始起一个很吊的名字,二是完成时的成就感,先起一个很猛的名字。代开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>

其他的先不贴了,整的匆忙得调整到最合理的情况再展示出来,未来连更几波。

整体流程

最终效果

以上就是流式图表拒绝增删改查之框架搭建过程的详细内容,更多关于流式图表框架搭建的资料请关注脚本之家其它相关文章!

相关文章

  • 解决@FeignClient注入service失败问题

    解决@FeignClient注入service失败问题

    这篇文章主要介绍了解决@FeignClient注入service失败问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java定时器通信协议管理模块Timer详解

    Java定时器通信协议管理模块Timer详解

    这篇文章主要介绍了Java定时器通信协议管理模块Timer, Timer一般指定时器(通信协议管理模块)人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的
    2022-08-08
  • IDEA打开项目所有东西都在报红报错的解决方案

    IDEA打开项目所有东西都在报红报错的解决方案

    这篇文章主要给大家介绍了关于IDEA打开项目所有东西都在报红报错的三个解决方案,文中通过图文介绍的非常详细,对大家学习或者使用idea具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • 基于Redis实现分布式应用限流的方法

    基于Redis实现分布式应用限流的方法

    本篇文章主要介绍了基于 Redis 实现分布式应用限流的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java面试题冲刺第三十天--数据库(6)

    Java面试题冲刺第三十天--数据库(6)

    这篇文章主要为大家分享了最有价值的三道关于数据库的面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 小白也可以学会的Java NIO的Write事件

    小白也可以学会的Java NIO的Write事件

    刚开始对NIO的写操作理解的不深,不知道为什么要注册写事件,何时注册写事件,为什么写完之后要取消注册写事件,今天特地整理了本篇文章,需要的朋友可以参考下
    2021-06-06
  • 基于javaweb+jsp的游泳馆会员管理系统(附源码)

    基于javaweb+jsp的游泳馆会员管理系统(附源码)

    这篇文章主要介绍了基于javaweb+jsp的游泳馆会员管理系统,开发工具eclipse/idea/myeclipse/sts等均可配置运行,此源代码社和课程设计,大作业及毕业设计项目,需要的朋友可以参考下
    2022-04-04
  • springboot环境下配置使用sqlite数据库方式

    springboot环境下配置使用sqlite数据库方式

    这篇文章主要介绍了springboot环境下配置使用sqlite数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • MybatisPlus开启二级缓存的方法详解

    MybatisPlus开启二级缓存的方法详解

    这篇文章主要介绍了MybatisPlus开启二级缓存的方法详解,二级缓存是基于mapper文件的namespace级别,也就是说多个sqlSession可以共享一个mapper中的二级缓存区域,需要的朋友可以参考下
    2023-11-11
  • Java反射机制详解

    Java反射机制详解

    Java的反射机制是在运行状态中,对于任何一个类,都可以知道这个类的所有属性和方法,对于任何一个对象,都可以调用它所有的方法和属性,修改部分类型信息,这种动态获取信息以及动态调用对象方法的功能称为Java的反射机制
    2022-09-09

最新评论