• Stars
    star
    374
  • Rank 114,346 (Top 3 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 8 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Java & Vue.js 全栈「集群设备管理云平台『后端部分』」,使用 Spring Boot、Netty 搭建 TCP 服务器与上万设备的集群通信,基于 JavaFX 的 GUI 应用程序模拟上万台设备的行为,并可对服务器进行压力测试。

集群设备管理云平台「Java、SPA、Spring Boot 2.0、Netty、Vue.js 2.0、Element 2.0」

GitHub stars Build Status 许可证 技术

项目描述

Java & Vue.js 全栈项目,大规模集群设备管理云平台,由以下几部分组成:Java 后端服务器、基于 Vue.js 的 Web 前端「SPA」单页应用程序、JavaFX 集群设备模拟客户端、辅助工具组件「Python 脚本、基于 C# & WPF 的可视化配置工具」,简要介绍如下:

  • Java 后端服务器:使用 Spring Boot 2.0 作为基础框架,使用 Netty 搭建 TCP 服务器与上万台设备组成的集群通信,采用自定义帧格式。

  • 基于 Vue.js 的 Web 前端「SPA」单页应用程序:绚丽的现代化 SPA 应用程序,可视化展现服务器内部的各项数据,包括服务器消息队列、通信压力、实时通信信息等。

  • JavaFX 集群设备模拟客户端:使用基于 JavaFX 的图形界面应用程序模拟上万台设备的行为,并可对服务器进行压力测试。

  • 辅助工具组件:Python 编写的数据库初始化及测试脚本、C# 编写的基于 WPF 的可视化服务器配置工具。

注意:「基于 Vue.js 的 Web 前端「SPA」单页应用程序」为单独的项目,点击此处跳转

运行方法

注意:主项目正在奋力优化中,还未成熟,暂时可使用子项目进行演示,运行方法如下:

下载并进入子工程「clusterdeviceplatform-demo」的根目录:

cd clusterdeviceplatform-demo

而后在命令行执行如下命令:

gradle assemble

或者执行:

gradle build

稍后即可生成 jar 文件,找到并执行该 jar 文件即可:

cd build\libs
java -jar -Dfile.encoding=UTF-8 clusterdeviceplatform-demo-1.0.0.jar

而后进入配套的 Web 前端项目,根据该项目的说明,即可成功构建并运行 Web 页面。

当然,以上运行说明并不完善,详细的构建方法及方便的一键构建脚本,可参考如下两篇文章:

  1. 使用 Linux 子系统部署 Node、Gradle 项目的构建工具

  2. Windows 10 用于 Linux 子系统的一键构建、打包脚本「 Node、Gradle 项目」

项目图示

特别提示:如果无法查看后面的图片,可能需要科学上网。

1. 基于 Vue.js 的 Web 前端「SPA」单页应用程序

Web 登录页面

Web 登录页面

Web 单设备组详细信息显示

单设备组详细信息显示

Web 服务器压力图示

服务器压力图示

2. JavaFX 集群设备模拟客户端

Web 模拟客户端主界面重新设计

模拟客户端主界面重新设计

Web 模拟客户端主界面

模拟客户端主界面

Web 模拟客户端的压力测试功能

模拟客户端的压力测试功能

Java 服务器

Java 服务器运行环境

  • JRE:Java SE 8u121 及以上环境测试通过

  • 操作系统:在 Windows 7 及以上,CentOS、Ubuntu 等系统下测试通过

  • 数据库:MongoDB 3.4.0 下测试通过

  • IDE:IntelliJ IDEA 2017

  • 构建工具:Gradle

:在运行 Java 服务器前,需预先正确部署并启动 MongoDB 数据库

系统架构图示

系统架构图示

服务器架构描述

  1. 基于 Spring Boot 实现业务处理,基于 Netty 实现与设备的通信,提供 Rest API 完成系统运行监控、设备管理等。

  2. 服务端与至少 1W 台设备进行通信,基于 Netty 实现 TCP 通信、路由转发、设备抽象。

  3. 为提升系统的吞吐,借鉴 Kafka 的 IO 模型及 Netty 的 IO 模型,结合内存缓存、线程池、发布订阅模式,实现应用实例整体 TPS 高于 2W / s。

  4. 服务端与设备集群的业务数量众多,所需通信帧的格式、执行策略、处理方式各异,结合责任链模式、策略模式、模板方法模式、命令模式等实现了可插拔的插件式业务接入方案,降低业务处理与底层架构的耦合,新增业务功能及配套的通信帧时成本低、可维护性高。

  5. 单台设备性能弱、可靠性差,但设备数量极多,基于时间轮定时器设计了拥塞控制、超时重发、心跳监测方案,在服务端大规模下发数据帧时,保证系统的一致性和稳定性。

Netty 服务器设计方案

本节内容总结为以下文章,点击查看:

基于 Netty 的自定义帧高可靠性读取方案

帧调度算法概述

本节介绍 Java 服务器中,Netty 模块使用的帧调度算法,由于众多硬件设备的数据帧处理能力较差可靠性较差,服务器大规模下发数据帧时,需进行有效的拥塞控制、超时重发,可有效提升集群设备的可靠性,降低集群设备的研发难度。

内容较多,这部分内容被放在了独立博文中,请使用如下链接查看:

基于 Netty 的帧调度策略,自行实现流量控制及可靠性通信

「注」本部分为源码「Netty服务器」部分的解释说明,需结合源码进行阅读。

JavaFX 设备模拟客户端

基于 JavaFX 开发 GUI 客户端,模拟集群设备的行为,并可对服务器进行压力测试。

本程序开发时,相关技巧和填坑总结为以下文章:

JavaFX 8 下简化自定义控件的外部调用以及流式布局示例

Maven 集成 JavaFX 8 以及 fx:root 问题探讨

基于 Vue.js 的 Web 前端「SPA」单页应用程序

绚丽的现代化 SPA 应用程序,可视化展现服务器内部的各项数据,包括服务器消息队列、通信压力、实时通信信息等。

该应用开发时,设计经验总结可见以下文章:

基于 Vue.js 2.0 酷炫自适应背景视频登录页面的设计

License

MIT License

Copyright (c) 2022 123lml123

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

关于我

1. 我的主页

名称 域名 原始地址
主页 http://bitky.cc https://bitkylin.github.io
GitHub http://github.bitky.cc https://github.com/bitkylin
简书 http://js.bitky.cc http://www.jianshu.com/u/bd2e386a6ea8
知乎 http://zhi.bitky.cc https://www.zhihu.com/people/bitkylin

2. 其他

  • 兴趣方向: Java, Web, Android, Vue.js, C#, JavaScript, Node.js, Kotlin 等

  • Email: [email protected]

More Repositories

1

MapForTour

基于百度地图 SDK 的多人地图 Android 客户端,已实现对本机和其他用户进行实时定位、绘制实时和历史运行轨迹、地理围栏报警等功能。本作品获得第十一届中国研究生电子设计竞赛华南赛区二等奖。
Java
113
star
2

ClusterDeviceControlPlatform-Web

Vue.js & Java 全栈「集群设备管理云平台『Web 部分』」基于 Vue.js 的 Web 前端「SPA」单页应用程序:绚丽的现代化 SPA 应用程序,可视化展现服务器内部的各项数据,包括服务器消息队列、通信压力、实时通信信息等。
Vue
72
star
3

BitkyShop

线上商品浏览及线下交易系统,包括用户手机端「Android」,商家电脑端「.NET」等。主要实现:用户浏览商品信息,选择有意向的商品并提交订单信息,之后商家和用户在线下完成商品交易
Java
42
star
4

ParallelCollectionMonitoring

使用数十个.NET客户端控制硬件设备进行工作,采集数据并进行处理,管理人员通过 Android 应用实时控制各设备的工作。本作品获得第十二届中国研究生电子设计竞赛华南赛区一等奖。
C#
25
star
5

featureLab

开发过程组件及特性验证演示程序集锦,包括「从零开始自实现MQ」、「 基于 dubbo + hmily 的多应用交易系统」「搭建基于 docker 的 Kafka 集群及Spring Boot应用访问」,以及学习笔记及总结。
Java
24
star
6

bitkylin-universal-generate

IntelliJ IDEA / Android studio Plugin. Easily generate Swagger and Protostuff annotations with one click, generate JavaDoc with various data sources. deleting various elements can also be done with one click.
Java
5
star
7

MaterialDesignChase

android的UI设计, 尽量符合Material Design, 目前已实现Translucent System Bar, Toolbar, NavigationDrawer等
Java
3
star
8

CommBaseQt

基于QT的跨平台应用软件集合,包含嵌入式 Linux 平台控制软件;TCP 通信的客户端和服务端;桌面平台数据读取程序。
C++
3
star
9

JavaPractice

Java练习项目,内含多个Java实用程序,会时常更新
Java
2
star
10

LateStatistical

考勤管理程序(基于MATLAB)
MATLAB
2
star
11

DeviceCirculationSystem

基于 WPF 和 .NET 的实验室设备自助借还软件,用户使用软件自助借还设备和器件;查询特定设备的当前拥有者以及指定用户所拥有的设备;查询设备的状态信息,方便设备的流转。
C#
2
star
12

KyGreenPet

Bmob 后端云存储数据,电脑端 .NET 软件用于和硬件设备交互数据并读写 Bmob 云,Android 端 App 通过读写 Bmob 云展示数据及控制硬件实现功能
Java
1
star