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

 更新时间: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>

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

整体流程

最终效果

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

相关文章

  • spring事务异常回滚实例解析

    spring事务异常回滚实例解析

    这篇文章主要介绍了spring事务异常回滚实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Spring中存取Bean的相关注解举例详解

    Spring中存取Bean的相关注解举例详解

    这篇文章主要给大家介绍了关于Spring中存取Bean的相关注解,在没有使用注解获取对象之前,我们需要在配置文件中通过添加bean来将对象存储到Spring容器中,这对于我们来说是比较麻烦的,需要的朋友可以参考下
    2023-10-10
  • Spring定时任务注解@Scheduled详解

    Spring定时任务注解@Scheduled详解

    这篇文章主要介绍了Spring定时任务注解@Scheduled详解,@Scheduled注解是包org.springframework.scheduling.annotation中的一个注解,主要是用来开启定时任务,本文提供了部分实现代码与思路,需要的朋友可以参考下
    2023-09-09
  • SpringBoot利用EasyExcel实现导出数据

    SpringBoot利用EasyExcel实现导出数据

    EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具,它能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能看,本文就将介绍如何利用EasyExcel实现导出数据,需要的朋友可以参考下
    2023-07-07
  • 浅谈Java基准性能测试之JMH

    浅谈Java基准性能测试之JMH

    JMH是Java Microbenchmark Harness的简称,一个针对Java做基准测试的工具。想准确的对一段代码做基准性能测试并不容易,因为JVM层面在编译期、运行时对代码做很多优化,当代码块处于整个系统中运行时并不一定会生效,产生错误的基准测试结果,这个问题就是JMH要解决的
    2021-06-06
  • 浅谈Java分布式架构下如何实现分布式锁

    浅谈Java分布式架构下如何实现分布式锁

    这篇文章主要介绍了浅谈Java分布式架构下如何实现分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • java加密枝术深入理解

    java加密枝术深入理解

    java.security包中的MessageDigest类提供了计算消息摘要的方法,本文将详细介绍,需要了解的朋友可以参考下
    2012-11-11
  • java实现消息队列的两种方式(小结)

    java实现消息队列的两种方式(小结)

    本文主要介绍了两种java实现消息队列的方式,利用Spring消息模板发送消息和Apache ActiveMQ官方实例发送消息,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • XFire构建web service客户端的五种方式

    XFire构建web service客户端的五种方式

    本篇文章主要介绍了XFire构建web service客户端的五种方式。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • springboot 实现Http接口加签、验签操作方法

    springboot 实现Http接口加签、验签操作方法

    这篇文章主要介绍了springboot 实现Http接口加签、验签操作,服务之间接口调用,通过签名作为安全认证来保证API的安全性,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-09-09

最新评论