# HighFlowNTRIP **Repository Path**: guleng2005/high-flow-ntrip ## Basic Information - **Project Name**: HighFlowNTRIP - **Description**: HighFlowNTRIP是一个基于 Java + Spring Boot + Netty 开发的高可用、高并发 NTRIP 服务器,专为 CORS 站系统设计。支持300以上并发,支持分布式部署! - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-01-27 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: web-service **Tags**: None ## README HighFlowNTRIP 服务器
# HighFlowNTRIP 服务器 ## 项目简介 **HighFlowNTRIP** 是一个基于 Java + Spring Boot + Netty 开发的高可用、高并发 NTRIP (Networked Transport of RTCM via Internet Protocol) 服务器,专为 CORS (Continuously Operating Reference Stations) 站系统设计。 该服务器具备高性能网络处理能力,支持 400+ 并发连接,提供完整的 NTRIP 协议实现和 RTCM 差分数据推送功能,是构建专业 CORS 站系统的理想选择。 ## 核心特性 - **高并发处理**:基于 Netty 非阻塞 IO 模型,支持 400+ 并发连接 - **完善的协议支持**:完整实现 NTRIP 1.0/2.0 协议,包括 SOURCETABLE、GET/POST 请求、ICY 握手 - **灵活的数据源**:支持文件、串口、网络等多种 RTCM 数据源 - **多卫星系统支持**:支持 GPS、BDS、GLO、GAL、QZS、SBAS 等多种卫星系统 - **智能数据生成**:根据挂载点名称自动生成对应坐标系和卫星系统的 RTCM 数据 - **安全认证**:内置 HTTP Basic 认证系统,支持用户管理和权限控制 - **SSL/TLS 支持**:内置 SSL 通道,支持加密传输,保障数据安全 - **实时监控**:提供 Web 管理界面和 Actuator 监控端点,实时查看连接状态和服务器性能 - **增强的 Web API**:提供丰富的 RESTful API,支持动态管理用户、挂载点和配置 - **分布式配置**:支持多实例部署和配置同步,提高系统可靠性 - **高可靠性**:完善的异常处理、连接超时管理和故障恢复机制 - **易于扩展**:模块化设计,支持多数据源、高可用部署等扩展功能 ## 技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Spring Boot | 2.7.15 | 应用框架 | | Spring Boot Actuator | 2.7.15 | 监控与管理 | | Netty | 4.1.94.Final | 网络通信 | | H2/MySQL | 2.1.214/8.0.30 | 数据存储 | | Java | 17+ | 开发语言 | | Maven | 3.8+ | 构建工具 | ## 开发语言与环境 ### 语言标准 - **Java 开发语言**:采用 Java 17 LTS 版本,遵循 JSR 384 规范 - **代码规范**:遵循 Google Java Style Guide 编码规范 - **依赖管理**:使用 Maven 3.8+ 进行依赖管理和构建 ### 开发环境要求 - **JDK**:Oracle JDK 17 LTS 或 OpenJDK 17 LTS 及以上版本 - **IDE**:IntelliJ IDEA 2021.3+ 或 Eclipse 2021-12+ 推荐 - **操作系统**:Windows 10/11、Linux CentOS 7/8、Ubuntu 20.04+、macOS 10.15+ - **内存**:开发环境建议 8GB+ RAM - **磁盘**:建议 50GB+ 可用空间 ## 快速开始 ### 环境要求 - JDK 17 或更高版本 - Maven 3.8 或更高版本 ### 构建与运行 1. **克隆项目** ```bash git clone https://gitee.com/guleng2005/high-flow-ntrip.git cd highflow-ntrip ``` 2. **构建项目** ```bash mvn clean package -DskipTests ``` 3. **运行服务器** ```bash # 使用启动脚本 ./run.bat # 或直接运行jar包 java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **预期结果:** ``` NTRIP服务器启动成功,端口:2101,最大并发:400 Tomcat started on port(s): 8080 (http) HighFlowNTRIP服务器启动成功! ``` 4. **访问管理界面** ``` http://localhost:8080 ``` ## 测试工具 项目提供了完整的测试工具套件,位于 `test-tools/` 目录下: ``` test-tools/ ├── 基站模拟器/ │ ├── BaseStationSimulator.java # 模拟GNSS基站发送RTCM数据 │ └── README.md ├── 移动站模拟器/ │ ├── MobileClientSimulator.java # 模拟移动站客户端接收数据 │ └── README.md ├── 通用测试工具/ │ ├── NtripTestClient.java # 测试挂载点列表查询 │ └── README.md └── NTRIP服务测试操作手册.md # 完整测试流程文档 ``` ### 快速测试流程 **步骤1:启动NTRIP服务器** ```bash java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **步骤2:添加测试挂载点** ```bash curl -X POST "http://localhost:8080/api/ntrip/mountpoint/add" -d "mountName=BDS-ONLY-RTCM33&rtcmType=RTCM3.3&dataSource=file&coordinateSystem=CGCS2000&satelliteSystems=BDS&desc=单北斗专用厘米级挂载点" ``` **步骤3:启动基站模拟器(新终端)** ```bash java test-tools/基站模拟器/BaseStationSimulator.java ``` **步骤4:启动移动站模拟器(新终端)** ```bash java test-tools/移动站模拟器/MobileClientSimulator.java ``` 详细测试说明请参考 [NTRIP服务测试操作手册](test-tools/NTRIP服务测试操作手册.md)。 ## 关键配置 主要配置文件:`src/main/resources/application.yml` 核心配置项: - `ntrip.port`:NTRIP 服务端口(默认 2101) - `ntrip.ssl.port`:SSL 服务端口(默认 2102) - `ntrip.ssl.enabled`:是否启用 SSL(默认 false) - `ntrip.max-connections`:最大并发连接数(默认 400) - `ntrip.max-connections-per-ip`:每 IP 最大连接数(默认 5) - `ntrip.idle-timeout-seconds`:空闲超时时间(默认 30 秒) - `ntrip.compression.enabled`:是否启用压缩(默认 false) - `ntrip.tcp.so-backlog`:TCP 连接队列大小(默认 512) - `ntrip.tcp.tcp-no-delay`:是否启用 TCP_NODELAY(默认 true) - `ntrip.tcp.so-keep-alive`:是否启用 TCP 保活(默认 true) - `netty.boss-threads`:Netty 主线程数(默认 2) - `netty.worker-threads`:Netty 工作线程数(建议 CPU 核心数 * 4) - `netty.send-buffer-size`:发送缓冲区大小(默认 16384) - `netty.receive-buffer-size`:接收缓冲区大小(默认 16384) - `auth.enabled`:是否开启认证(默认 true) - `auth.default-user`:默认用户(格式:用户名:密码,默认 admin:123456) - `rtcm.data-source`:RTCM 数据源类型(file/serial/network) - `rtcm.file-path`:RTCM 数据文件路径 - `rtcm.default-mount-point`:默认挂载点(默认 RTK-LITE-RTCM33) ### 挂载点命名规范 挂载点名称支持以下格式,系统会自动解析生成对应配置的 RTCM 数据: **卫星系统标识**: - `BDS`:北斗卫星系统 - `GPS`:GPS卫星系统 - `GLO`:格洛纳斯卫星系统 - `GAL`:伽利略卫星系统 - `QZS`:准天顶卫星系统 - `SBAS`:星基增强系统 **精度级别**: - `DGPS`:米级精度 - `RTK`:厘米级精度 **RTCM版本**: - `RTCM32`:RTCM 3.2版本 - `RTCM33`:RTCM 3.3版本 **坐标系**: - `WGS84`:WGS84坐标系 - `CGCS2000`:中国大地坐标系2000 **星数限定**: - `12SAT`:12颗卫星 **区域信息**: - `NORTH`/`SOUTH`/`EAST`/`WEST`:区域标识 **示例挂载点**: - `BDS-GPS-RTK`:北斗+GPS双系统,RTK精度 - `FULL-CONST-RTCM33`:全星座,RTCM3.3版本 - `BDS-GPS-GLO-GAL`:多星座组合 - `BDS-ONLY-RTCM33`:单北斗系统,RTCM3.3版本 ## 项目结构 ``` ├── src/ │ ├── main/java/com/ntrip/ # 核心代码 │ │ ├── server/ # Netty 服务器核心 │ │ ├── handler/ # NTRIP 协议处理 │ │ ├── manager/ # 连接管理 │ │ ├── auth/ # 用户认证 │ │ ├── rtcm/ # RTCM 数据源 │ │ ├── protocol/ # 协议解析 │ │ ├── entity/ # 数据实体 │ │ ├── repository/ # 数据访问 │ │ ├── web/ # Web 管理界面 │ │ ├── config/ # 配置管理 │ │ └── monitoring/ # 监控管理 │ └── resources/ # 资源文件 │ ├── application.yml # 主配置文件 │ └── static/ # 静态资源 ├── target/ # 构建输出 ├── test-tools/ # 测试工具 │ ├── 基站模拟器/ # 基站模拟器 │ ├── 移动站模拟器/ # 移动站模拟器 │ ├── 通用测试工具/ # 通用测试工具 │ └── NTRIP服务测试操作手册.md # 测试文档 ├── run.bat # 启动脚本 └── pom.xml # Maven 配置 ``` ## 生产环境部署 - **硬件建议**:4 核 CPU、4GB+ 内存、10Mbps+ 带宽 - **系统配置**:Linux CentOS 7/8 或 Ubuntu 20.04+ - **数据库**:生产环境建议使用 MySQL 替代 H2 内存数据库 - **安全措施**:配置防火墙、SSL 证书、密码加密 - **SSL 配置**:生产环境建议启用 SSL,配置有效证书 - **监控配置**:集成 Prometheus + Grafana 监控系统 - **高可用部署**:支持多实例部署和负载均衡 - **网络优化**:调整 TCP 参数,优化网络性能 ## 扩展功能 - **多数据源支持**:串口、网络等多种 RTCM 数据源 - **SSL/TLS 加密**:支持安全的加密传输 - **高级监控**:Prometheus + Grafana 集成,Spring Boot Actuator 监控端点 - **增强的 Web API**:丰富的 RESTful API,支持动态管理用户、挂载点和配置 - **智能挂载点管理**:内置推荐挂载点初始化,支持多种场景配置 - **高可用部署**:多实例负载均衡 - **数据同步**:多服务器数据一致性保障 - **网络优化**:支持 TCP 参数调优和连接管理 ## 法律合规性 ### 知识产权声明 - 本项目基于 MIT 许可证开源,详见 LICENSE 文件 - 项目中使用的第三方库均遵循各自的开源许可证 - 未经授权,不得将本项目用于任何商业目的 ### 数据合规性 - **数据采集合规**:使用本系统时,确保 RTCM 数据的采集符合相关法律法规 - **数据传输安全**:建议在生产环境中配置 SSL/TLS 加密传输 - **用户隐私保护**:系统仅收集必要的连接信息,不存储用户敏感数据 ### 网络合规性 - **端口使用**:使用标准 NTRIP 端口 2101,确保网络环境允许该端口的访问 - **防火墙配置**:按照网络安全最佳实践配置防火墙规则 - **带宽合规**:确保网络带宽使用符合相关服务提供商的规定 ### 行业标准合规 - **NTRIP 协议**:遵循 RTCM 10403.2 标准中的 NTRIP 协议规范 - **RTCM 数据格式**:支持 RTCM 3.0/3.1/3.2/3.3 标准格式 - **CORS 站系统**:符合 CORS 站系统的相关技术规范 ## 许可证 本项目采用 MIT 许可证,详见 LICENSE 文件。 ## 联系方式 - **项目维护**:席志昊 - **技术支持**:37735973@qq.com - **Gitee**:https://gitee.com/guleng2005/high-flow-ntrip.git --- **注**:本项目已在实际 CORS 站系统中部署使用,稳定运行于生产环境。
# HighFlowNTRIP Server ## Project Introduction **HighFlowNTRIP** is a high-availability, high-concurrency NTRIP (Networked Transport of RTCM via Internet Protocol) server developed based on Java + Spring Boot + Netty, specifically designed for CORS (Continuously Operating Reference Stations) systems. The server features high-performance network processing capabilities, supporting 400+ concurrent connections, providing complete NTRIP protocol implementation and RTCM differential data push functionality, making it an ideal choice for building professional CORS station systems. ## Core Features - **High Concurrency Processing**: Based on Netty non-blocking IO model, supporting 400+ concurrent connections - **Complete Protocol Support**: Full implementation of NTRIP 1.0/2.0 protocols, including SOURCETABLE, GET/POST requests, ICY handshake - **Flexible Data Sources**: Support for multiple RTCM data sources such as file, serial port, network, etc. - **Multi-satellite System Support**: Support for GPS, BDS, GLO, GAL, QZS, SBAS and other satellite systems - **Intelligent Data Generation**: Automatically generate RTCM data with corresponding coordinate system and satellite system based on mount point name - **Secure Authentication**: Built-in HTTP Basic authentication system, supporting user management and access control - **SSL/TLS Support**: Built-in SSL channel, supporting encrypted transmission for data security - **Real-time Monitoring**: Web management interface and Actuator monitoring endpoints for real-time viewing of connection status and server performance - **Enhanced Web API**: Rich RESTful API supporting dynamic management of users, mount points and configurations - **Distributed Configuration**: Support for multi-instance deployment and configuration synchronization to improve system reliability - **High Reliability**: Comprehensive exception handling, connection timeout management and fault recovery mechanisms - **Easy to Extend**: Modular design supporting multi-data source, high-availability deployment and other extended functions ## Technology Stack | Technology | Version | Purpose | |------------|---------|--------| | Spring Boot | 2.7.15 | Application Framework | | Spring Boot Actuator | 2.7.15 | Monitoring and Management | | Netty | 4.1.94.Final | Network Communication | | H2/MySQL | 2.1.214/8.0.30 | Data Storage | | Java | 17+ | Development Language | | Maven | 3.8+ | Build Tool | ## Development Language & Environment ### Language Standards - **Java Development Language**: Adopts Java 17 LTS version, following JSR 384 specification - **Code Standards**: Follows Google Java Style Guide coding standards - **Dependency Management**: Uses Maven 3.8+ for dependency management and build ### Development Environment Requirements - **JDK**: Oracle JDK 17 LTS or OpenJDK 17 LTS and above - **IDE**: IntelliJ IDEA 2021.3+ or Eclipse 2021-12+ recommended - **Operating System**: Windows 10/11, Linux CentOS 7/8, Ubuntu 20.04+, macOS 10.15+ - **Memory**: 8GB+ RAM recommended for development environment - **Disk**: 50GB+ available space recommended ## Quick Start ### Environment Requirements - JDK 17 or higher - Maven 3.8 or higher ### Build and Run 1. **Clone Project** ```bash git clone https://gitee.com/guleng2005/high-flow-ntrip.git cd highflow-ntrip ``` 2. **Build Project** ```bash mvn clean package -DskipTests ``` 3. **Run Server** ```bash # Use startup script ./run.bat # Or run jar package directly java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **Expected Result:** ``` NTRIP服务器启动成功,端口:2101,最大并发:400 Tomcat started on port(s): 8080 (http) HighFlowNTRIP服务器启动成功! ``` 4. **Access Management Interface** ``` http://localhost:8080 ``` ## Test Tools The project provides a complete test tool suite located in the `test-tools/` directory: ``` test-tools/ ├── 基站模拟器/ │ ├── BaseStationSimulator.java # Simulate GNSS base station sending RTCM data │ └── README.md ├── 移动站模拟器/ │ ├── MobileClientSimulator.java # Simulate mobile station client receiving data │ └── README.md ├── 通用测试工具/ │ ├── NtripTestClient.java # Test mount point list query │ └── README.md └── NTRIP服务测试操作手册.md # Complete test process documentation ``` ### Quick Test Process **Step 1: Start NTRIP Server** ```bash java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **Step 2: Add Test Mount Point** ```bash curl -X POST "http://localhost:8080/api/ntrip/mountpoint/add" -d "mountName=BDS-ONLY-RTCM33&rtcmType=RTCM3.3&dataSource=file&coordinateSystem=CGCS2000&satelliteSystems=BDS&desc=BeiDou-only centimeter-level mount point" ``` **Step 3: Start Base Station Simulator (New Terminal)** ```bash java test-tools/基站模拟器/BaseStationSimulator.java ``` **Step 4: Start Mobile Station Simulator (New Terminal)** ```bash java test-tools/移动站模拟器/MobileClientSimulator.java ``` For detailed test instructions, please refer to [NTRIP Service Test Operation Manual](test-tools/NTRIP服务测试操作手册.md). ## Key Configuration Main configuration file: `src/main/resources/application.yml` Core configuration items: - `ntrip.port`: NTRIP service port (default 2101) - `ntrip.ssl.port`: SSL service port (default 2102) - `ntrip.ssl.enabled`: Whether to enable SSL (default false) - `ntrip.max-connections`: Maximum concurrent connections (default 400) - `ntrip.max-connections-per-ip`: Maximum connections per IP (default 5) - `ntrip.idle-timeout-seconds`: Idle timeout (default 30 seconds) - `ntrip.compression.enabled`: Whether to enable compression (default false) - `ntrip.tcp.so-backlog`: TCP connection queue size (default 512) - `ntrip.tcp.tcp-no-delay`: Whether to enable TCP_NODELAY (default true) - `ntrip.tcp.so-keep-alive`: Whether to enable TCP keep-alive (default true) - `netty.boss-threads`: Netty boss threads count (default 2) - `netty.worker-threads`: Netty worker threads count (recommended: CPU cores * 4) - `netty.send-buffer-size`: Send buffer size (default 16384) - `netty.receive-buffer-size`: Receive buffer size (default 16384) - `auth.enabled`: Whether to enable authentication (default true) - `auth.default-user`: Default user (format: username:password, default admin:123456) - `rtcm.data-source`: RTCM data source type (file/serial/network) - `rtcm.file-path`: RTCM data file path - `rtcm.default-mount-point`: Default mount point (default RTK-LITE-RTCM33) ### Mount Point Naming Convention Mount point names support the following formats, and the system will automatically parse and generate RTCM data with corresponding configurations: **Satellite System Identifiers**: - `BDS`: BeiDou Navigation Satellite System - `GPS`: GPS satellite system - `GLO`: GLONASS satellite system - `GAL`: Galileo satellite system - `QZS`: Quasi-Zenith Satellite System - `SBAS`: Satellite-Based Augmentation System **Accuracy Levels**: - `DGPS`: Meter-level accuracy - `RTK`: Centimeter-level accuracy **RTCM Versions**: - `RTCM32`: RTCM version 3.2 - `RTCM33`: RTCM version 3.3 **Coordinate Systems**: - `WGS84`: WGS84 coordinate system - `CGCS2000`: China Geodetic Coordinate System 2000 **Satellite Count Limitation**: - `12SAT`: 12 satellites **Region Information**: - `NORTH`/`SOUTH`/`EAST`/`WEST`: Region identifiers **Example Mount Points**: - `BDS-GPS-RTK`: BeiDou+GPS dual system, RTK accuracy - `FULL-CONST-RTCM33`: Full constellation, RTCM 3.3 version - `BDS-GPS-GLO-GAL`: Multi-constellation combination - `BDS-ONLY-RTCM33`: BeiDou-only system, RTCM 3.3 version ## Project Structure ``` ├── src/ │ ├── main/java/com/ntrip/ # Core code │ │ ├── server/ # Netty server core │ │ ├── handler/ # NTRIP protocol processing │ │ ├── manager/ # Connection management │ │ ├── auth/ # User authentication │ │ ├── rtcm/ # RTCM data source │ │ ├── protocol/ # Protocol parsing │ │ ├── entity/ # Data entities │ │ ├── repository/ # Data access │ │ ├── web/ # Web management interface │ │ ├── config/ # Configuration management │ │ └── monitoring/ # Monitoring management │ └── resources/ # Resource files │ ├── application.yml # Main configuration file │ └── static/ # Static resources ├── target/ # Build output ├── test-tools/ # Test tools │ ├── 基站模拟器/ # Base station simulator │ ├── 移动站模拟器/ # Mobile station simulator │ ├── 通用测试工具/ # General test tools │ └── NTRIP服务测试操作手册.md # Test documentation ├── run.bat # Startup script └── pom.xml # Maven configuration ``` ## Production Environment Deployment - **Hardware Recommendations**: 4-core CPU, 4GB+ RAM, 10Mbps+ bandwidth - **System Configuration**: Linux CentOS 7/8 or Ubuntu 20.04+ - **Database**: MySQL recommended for production environment instead of H2 in-memory database - **Security Measures**: Configure firewall, SSL certificates, password encryption - **SSL Configuration**: Enable SSL with valid certificates in production environment - **Monitoring Configuration**: Integrate Prometheus + Grafana monitoring system - **High Availability Deployment**: Support for multi-instance deployment and load balancing - **Network Optimization**: Adjust TCP parameters to optimize network performance ## Extended Features - **Multi-data Source Support**: Serial port, network and other RTCM data sources - **SSL/TLS Encryption**: Support for secure encrypted transmission - **Advanced Monitoring**: Prometheus + Grafana integration, Spring Boot Actuator monitoring endpoints - **Enhanced Web API**: Rich RESTful API supporting dynamic management of users, mount points and configurations - **Intelligent Mount Point Management**: Built-in recommended mount point initialization, supporting multiple scenario configurations - **High Availability Deployment**: Multi-instance load balancing - **Data Synchronization**: Multi-server data consistency guarantee - **Network Optimization**: Support for TCP parameter tuning and connection management ## Legal Compliance ### Intellectual Property Rights - This project is open source under the MIT License, see LICENSE file for details - Third-party libraries used in the project follow their respective open source licenses - Unauthorized use of this project for any commercial purpose is prohibited ### Data Compliance - **Data Collection Compliance**: When using this system, ensure that RTCM data collection complies with relevant laws and regulations - **Data Transmission Security**: SSL/TLS encrypted transmission is recommended in production environment - **User Privacy Protection**: The system only collects necessary connection information and does not store user sensitive data ### Network Compliance - **Port Usage**: Uses standard NTRIP port 2101, ensure the network environment allows access to this port - **Firewall Configuration**: Configure firewall rules according to network security best practices - **Bandwidth Compliance**: Ensure network bandwidth usage complies with the regulations of relevant service providers ### Industry Standard Compliance - **NTRIP Protocol**: Follows NTRIP protocol specifications in RTCM 10403.2 standard - **RTCM Data Format**: Supports RTCM 3.0/3.1/3.2/3.3 standard formats - **CORS Station System**: Complies with relevant technical specifications for CORS station systems ## License This project is licensed under the MIT License, see the LICENSE file for details. ## Contact - **Project Maintainer**: Xi Zhihao - **Technical Support**: 37735973@qq.com - **Gitee**: https://gitee.com/guleng2005/high-flow-ntrip.git --- **Note**: This project has been deployed and used in actual CORS station systems, running stably in production environments.
# HighFlowNTRIP サーバー ## プロジェクト紹介 **HighFlowNTRIP** は、Java + Spring Boot + Netty ベースの高可用性、高並行処理対応の NTRIP (Networked Transport of RTCM via Internet Protocol) サーバーであり、CORS (Continuously Operating Reference Stations) ステーションシステム向けに特別に設計されています。 このサーバーは高性能なネットワーク処理能力を備え、400+ の同時接続をサポートし、完全な NTRIP プロトコル実装と RTCM 差分データ送信機能を提供しており、プロフェッショナルな CORS ステーションシステム構築の理想的な選択肢となっています。 ## 主な特徴 - **高並行処理**: Netty のノンブロッキング IO モデルに基づき、400+ の同時接続をサポート - **完全なプロトコルサポート**: NTRIP 1.0/2.0 プロトコルの完全実装、SOURCETABLE、GET/POST リクエスト、ICY ハンドシェイクを含む - **柔軟なデータソース**: ファイル、シリアルポート、ネットワークなど複数の RTCM データソースをサポート - **多衛星システムサポート**: GPS、BDS、GLO、GAL、QZS、SBAS など複数の衛星システムをサポート - **インテリジェントデータ生成**: マウントポイント名に基づいて対応する座標系と衛星システムの RTCM データを自動生成 - **セキュアな認証**: HTTP Basic 認証システムを内蔵、ユーザー管理とアクセス制御をサポート - **SSL/TLS サポート**: SSL チャネルを内蔵、暗号化伝送をサポートしてデータセキュリティを保証 - **リアルタイムモニタリング**: Web 管理インターフェースと Actuator モニタリングエンドポイントを提供、接続状態とサーバーパフォーマンスをリアルタイムで確認可能 - **強化された Web API**: 豊富な RESTful API を提供し、ユーザー、マウントポイント、設定を動的に管理可能 - **分散設定**: マルチインスタンスデプロイと設定同期をサポートし、システム信頼性を向上 - **高い信頼性**: 包括的な例外処理、接続タイムアウト管理、障害回復メカニズムを備える - **拡張が容易**: モジュラー設計により、複数データソース、高可用性デプロイなどの拡張機能をサポート ## 技術スタック | 技術 | バージョン | 用途 | |------|-----------|------| | Spring Boot | 2.7.15 | アプリケーションフレームワーク | | Spring Boot Actuator | 2.7.15 | モニタリングと管理 | | Netty | 4.1.94.Final | ネットワーク通信 | | H2/MySQL | 2.1.214/8.0.30 | データストレージ | | Java | 17+ | 開発言語 | | Maven | 3.8+ | ビルドツール | ## 開発言語と環境 ### 言語標準 - **Java 開発言語**: Java 17 LTS バージョンを採用、JSR 384 仕様に準拠 - **コード規範**: Google Java Style Guide コーディング規範に準拠 - **依存管理**: Maven 3.8+ を使用して依存管理とビルドを行う ### 開発環境要件 - **JDK**: Oracle JDK 17 LTS または OpenJDK 17 LTS 以上 - **IDE**: IntelliJ IDEA 2021.3+ または Eclipse 2021-12+ を推奨 - **オペレーティングシステム**: Windows 10/11、Linux CentOS 7/8、Ubuntu 20.04+、macOS 10.15+ - **メモリ**: 開発環境では 8GB+ RAM を推奨 - **ディスク**: 50GB+ の空き容量を推奨 ## クイックスタート ### 環境要件 - JDK 17 以上 - Maven 3.8 以上 ### ビルドと実行 1. **プロジェクトをクローン** ```bash git clone https://gitee.com/guleng2005/high-flow-ntrip.git cd highflow-ntrip ``` 2. **プロジェクトをビルド** ```bash mvn clean package -DskipTests ``` 3. **サーバーを実行** ```bash # スタートアップスクリプトを使用 ./run.bat # または直接 jar パッケージを実行 java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **期待される結果:** ``` NTRIP服务器启动成功,端口:2101,最大并发:400 Tomcat started on port(s): 8080 (http) HighFlowNTRIP服务器启动成功! ``` 4. **管理インターフェースにアクセス** ``` http://localhost:8080 ``` ## テストツール プロジェクトは `test-tools/` ディレクトリに完全なテストツールスイートを提供しています: ``` test-tools/ ├── 基站模拟器/ │ ├── BaseStationSimulator.java # GNSS基地局をシミュレートしてRTCMデータを送信 │ └── README.md ├── 移动站模拟器/ │ ├── MobileClientSimulator.java # モバイル局クライアントをシミュレートしてデータを受信 │ └── README.md ├── 通用测试工具/ │ ├── NtripTestClient.java # マウントポイントリストクエリをテスト │ └── README.md └── NTRIP服务测试操作手册.md # 完全なテストプロセスドキュメント ``` ### クイックテストプロセス **ステップ1:NTRIPサーバーを起動** ```bash java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **ステップ2:テストマウントポイントを追加** ```bash curl -X POST "http://localhost:8080/api/ntrip/mountpoint/add" -d "mountName=BDS-ONLY-RTCM33&rtcmType=RTCM3.3&dataSource=file&coordinateSystem=CGCS2000&satelliteSystems=BDS&desc=BeiDou専用センチメートル級マウントポイント" ``` **ステップ3:基地局シミュレーターを起動(新しいターミナル)** ```bash java test-tools/基站模拟器/BaseStationSimulator.java ``` **ステップ4:モバイル局シミュレーターを起動(新しいターミナル)** ```bash java test-tools/移动站模拟器/MobileClientSimulator.java ``` 詳細なテスト手順については、[NTRIPサービステスト操作マニュアル](test-tools/NTRIP服务测试操作手册.md)を参照してください。 ## 主要な設定 主要設定ファイル: `src/main/resources/application.yml` コア設定項目: - `ntrip.port`: NTRIP サービスポート (デフォルト 2101) - `ntrip.ssl.port`: SSL サービスポート (デフォルト 2102) - `ntrip.ssl.enabled`: SSL を有効にするかどうか (デフォルト false) - `ntrip.max-connections`: 最大同時接続数 (デフォルト 400) - `ntrip.max-connections-per-ip`: IP あたりの最大接続数 (デフォルト 5) - `ntrip.idle-timeout-seconds`: アイドルタイムアウト (デフォルト 30 秒) - `ntrip.compression.enabled`: 圧縮を有効にするかどうか (デフォルト false) - `ntrip.tcp.so-backlog`: TCP 接続キューサイズ (デフォルト 512) - `ntrip.tcp.tcp-no-delay`: TCP_NODELAY を有効にするかどうか (デフォルト true) - `ntrip.tcp.so-keep-alive`: TCP キープアライブを有効にするかどうか (デフォルト true) - `netty.boss-threads`: Netty ボススレッド数 (デフォルト 2) - `netty.worker-threads`: Netty ワーカースレッド数 (推奨: CPU コア数 * 4) - `netty.send-buffer-size`: 送信バッファサイズ (デフォルト 16384) - `netty.receive-buffer-size`: 受信バッファサイズ (デフォルト 16384) - `auth.enabled`: 認証を有効にするかどうか (デフォルト true) - `auth.default-user`: デフォルトユーザー (形式: ユーザー名:パスワード、デフォルト admin:123456) - `rtcm.data-source`: RTCM データソースタイプ (file/serial/network) - `rtcm.file-path`: RTCM データファイルパス - `rtcm.default-mount-point`: デフォルトマウントポイント (デフォルト RTK-LITE-RTCM33) ### マウントポイント命名規則 マウントポイント名は以下の形式をサポートし、システムは自動的に対応する設定の RTCM データを解析して生成します: **衛星システム識別子**: - `BDS`: 北斗衛星システム - `GPS`: GPS衛星システム - `GLO`: GLONASS衛星システム - `GAL`: ガリレオ衛星システム - `QZS`: 準天頂衛星システム - `SBAS`: 衛星ベース拡張システム **精度レベル**: - `DGPS`: メートル級精度 - `RTK`: センチメートル級精度 **RTCMバージョン**: - `RTCM32`: RTCM バージョン 3.2 - `RTCM33`: RTCM バージョン 3.3 **座標系**: - `WGS84`: WGS84座標系 - `CGCS2000`: 中国測地座標系2000 **衛星数制限**: - `12SAT`: 12衛星 **地域情報**: - `NORTH`/`SOUTH`/`EAST`/`WEST`: 地域識別子 **マウントポイント例**: - `BDS-GPS-RTK`: 北斗+GPSデュアルシステム、RTK精度 - `FULL-CONST-RTCM33`: フルコンステレーション、RTCM 3.3バージョン - `BDS-GPS-GLO-GAL`: マルチコンステレーション組み合わせ - `BDS-ONLY-RTCM33`: 北斗のみシステム、RTCM 3.3バージョン ## プロジェクト構造 ``` ├── src/ │ ├── main/java/com/ntrip/ # コアコード │ │ ├── server/ # Netty サーバーコア │ │ ├── handler/ # NTRIP プロトコル処理 │ │ ├── manager/ # 接続管理 │ │ ├── auth/ # ユーザー認証 │ │ ├── rtcm/ # RTCM データソース │ │ ├── protocol/ # プロトコル解析 │ │ ├── entity/ # データエンティティ │ │ ├── repository/ # データアクセス │ │ ├── web/ # Web 管理インターフェース │ │ ├── config/ # 設定管理 │ │ └── monitoring/ # モニタリング管理 │ └── resources/ # リソースファイル │ ├── application.yml # メイン設定ファイル │ └── static/ # 静的リソース ├── target/ # ビルド出力 ├── test-tools/ # テストツール │ ├── 基站模拟器/ # 基地局シミュレーター │ ├── 移动站模拟器/ # モバイル局シミュレーター │ ├── 通用测试工具/ # 汎用テストツール │ └── NTRIP服务测试操作手册.md # テストドキュメント ├── run.bat # スタートアップスクリプト └── pom.xml # Maven 設定 ``` ## 本番環境デプロイ - **ハードウェア推奨**: 4 コア CPU、4GB+ RAM、10Mbps+ 帯域幅 - **システム設定**: Linux CentOS 7/8 または Ubuntu 20.04+ - **データベース**: 本番環境では H2 インメモリデータベースの代わりに MySQL を推奨 - **セキュリティ対策**: ファイアウォール、SSL 証明書、パスワード暗号化の設定 - **SSL 設定**: 本番環境では SSL を有効にし、有効な証明書を設定することを推奨 - **モニタリング設定**: Prometheus + Grafana モニタリングシステムを統合 - **高可用性デプロイ**: マルチインスタンスデプロイとロードバランシングをサポート - **ネットワーク最適化**: TCP パラメータを調整してネットワークパフォーマンスを最適化 ## 拡張機能 - **複数データソースサポート**: シリアルポート、ネットワークなど複数の RTCM データソース - **SSL/TLS 暗号化**: 安全な暗号化伝送をサポート - **高度なモニタリング**: Prometheus + Grafana インテグレーション、Spring Boot Actuator モニタリングエンドポイント - **強化された Web API**: 豊富な RESTful API を提供し、ユーザー、マウントポイント、設定を動的に管理可能 - **インテリジェントマウントポイント管理**: 組み込みの推奨マウントポイント初期化、複数シナリオ設定をサポート - **高可用性デプロイ**: マルチインスタンスロードバランシング - **データ同期**: マルチサーバーデータ整合性保証 - **ネットワーク最適化**: TCP パラメータチューニングと接続管理をサポート ## ライセンス このプロジェクトは MIT ライセンスの下でオープンソース化されています。詳細については LICENSE ファイルを参照してください。 ## お問い合わせ - **プロジェクトメンテナ**: 席志昊 (Xi Zhihao) - **テクニカルサポート**: 37735973@qq.com - **Gitee**: https://gitee.com/guleng2005/high-flow-ntrip.git --- **注**: このプロジェクトは実際の CORS ステーションシステムでデプロイ・使用されており、本番環境で安定して動作しています。
# HighFlowNTRIP 서버 ## 프로젝트 소개 **HighFlowNTRIP**는 Java + Spring Boot + Netty를 기반으로 개발된 고가용성, 고병렬 NTRIP (Networked Transport of RTCM via Internet Protocol) 서버로, CORS (Continuously Operating Reference Stations) 스테이션 시스템을 위해 특별히 설계되었습니다. 이 서버는 고성능 네트워크 처리 능력을 가지고 있으며, 400개 이상의 동시 연결을 지원하고 완전한 NTRIP 프로토콜 구현과 RTCM 차분 데이터 푸시 기능을 제공하여 전문 CORS 스테이션 시스템을 구축하는 데 이상적인 선택입니다. ## 주요 기능 - **고병렬 처리**: Netty 논블로킹 IO 모델 기반, 400개 이상의 동시 연결 지원 - **완벽한 프로토콜 지원**: SOURCETABLE, GET/POST 요청, ICY 핸드셰이크를 포함한 NTRIP 1.0/2.0 프로토콜 완전 구현 - **유연한 데이터 소스**: 파일, 시리얼 포트, 네트워크 등 다중 RTCM 데이터 소스 지원 - **다중 위성 시스템 지원**: GPS, BDS, GLO, GAL, QZS, SBAS 등 다양한 위성 시스템 지원 - **지능형 데이터 생성**: 마운트 포인트 이름을 기반으로 해당 좌표계와 위성 시스템의 RTCM 데이터를 자동 생성 - **안전한 인증**: HTTP Basic 인증 시스템 내장, 사용자 관리 및 접근 제어 지원 - **SSL/TLS 지원**: SSL 채널 내장, 암호화 전송을 지원하여 데이터 보안 보장 - **실시간 모니터링**: 웹 관리 인터페이스 및 Actuator 모니터링 엔드포인트를 통한 연결 상태 및 서버 성능 실시간 확인 - **향상된 웹 API**: 풍부한 RESTful API를 제공하여 사용자, 마운트 포인트 및 구성을 동적으로 관리 지원 - **분산 구성**: 다중 인스턴스 배포 및 구성 동기화를 지원하여 시스템 신뢰성 향상 - **높은 신뢰성**: 포괄적인 예외 처리, 연결 시간 초과 관리 및 장애 복구 메커니즘 - **확장 용이**: 다중 데이터 소스, 고가용성 배포 등 확장 기능을 지원하는 모듈식 설계 ## 기술 스택 | 기술 | 버전 | 용도 | |------|------|------| | Spring Boot | 2.7.15 | 애플리케이션 프레임워크 | | Spring Boot Actuator | 2.7.15 | 모니터링 및 관리 | | Netty | 4.1.94.Final | 네트워크 통신 | | H2/MySQL | 2.1.214/8.0.30 | 데이터 스토리지 | | Java | 17+ | 개발 언어 | | Maven | 3.8+ | 빌드 도구 | ## 개발 언어 및 환경 ### 언어 표준 - **Java 개발 언어**: Java 17 LTS 버전 채용, JSR 384 사양 준수 - **코드 규범**: Google Java Style Guide 코딩 규범 준수 - **의존성 관리**: Maven 3.8+를 사용하여 의존성 관리 및 빌드 수행 ### 개발 환경 요구 사항 - **JDK**: Oracle JDK 17 LTS 또는 OpenJDK 17 LTS 이상 - **IDE**: IntelliJ IDEA 2021.3+ 또는 Eclipse 2021-12+ 권장 - **운영 체제**: Windows 10/11, Linux CentOS 7/8, Ubuntu 20.04+, macOS 10.15+ - **메모리**: 개발 환경에서 8GB+ RAM 권장 - **디스크**: 50GB+ 사용 가능한 공간 권장 ## 빠른 시작 ### 환경 요구 사항 - JDK 17 이상 - Maven 3.8 이상 ### 빌드 및 실행 1. **프로젝트 클론** ```bash git clone https://gitee.com/guleng2005/high-flow-ntrip.git cd highflow-ntrip ``` 2. **프로젝트 빌드** ```bash mvn clean package -DskipTests ``` 3. **서버 실행** ```bash # 시작 스크립트 사용 ./run.bat # 또는 직접 jar 패키지 실행 java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **예상 결과:** ``` NTRIP服务器启动成功,端口:2101,最大并发:400 Tomcat started on port(s): 8080 (http) HighFlowNTRIP服务器启动成功! ``` 4. **관리 인터페이스 접근** ``` http://localhost:8080 ``` ## 테스트 도구 프로젝트는 `test-tools/` 디렉토리에 완전한 테스트 도구 모음을 제공합니다: ``` test-tools/ ├── 基站模拟器/ │ ├── BaseStationSimulator.java # GNSS 기지국을 시뮬레이션하여 RTCM 데이터 전송 │ └── README.md ├── 移动站模拟器/ │ ├── MobileClientSimulator.java # 모바일 스테이션 클라이언트를 시뮬레이션하여 데이터 수신 │ └── README.md ├── 通用测试工具/ │ ├── NtripTestClient.java # 마운트 포인트 목록 쿼리 테스트 │ └── README.md └── NTRIP服务测试操作手册.md # 완전한 테스트 프로세스 문서 ``` ### 빠른 테스트 프로세스 **단계 1: NTRIP 서버 시작** ```bash java -jar target/highflow-ntrip-1.0-SNAPSHOT.jar ``` **단계 2: 테스트 마운트 포인트 추가** ```bash curl -X POST "http://localhost:8080/api/ntrip/mountpoint/add" -d "mountName=BDS-ONLY-RTCM33&rtcmType=RTCM3.3&dataSource=file&coordinateSystem=CGCS2000&satelliteSystems=BDS&desc=BeiDou 전용 센티미터급 마운트 포인트" ``` **단계 3: 기지국 시뮬레이터 시작 (새 터미널)** ```bash java test-tools/基站模拟器/BaseStationSimulator.java ``` **단계 4: 모바일 스테이션 시뮬레이터 시작 (새 터미널)** ```bash java test-tools/移动站模拟器/MobileClientSimulator.java ``` 자세한 테스트 지침은 [NTRIP 서비스 테스트 운영 매뉴얼](test-tools/NTRIP服务测试操作手册.md)을 참조하십시오. ## 주요 구성 주요 구성 파일: `src/main/resources/application.yml` 핵심 구성 항목: - `ntrip.port`: NTRIP 서비스 포트 (기본값 2101) - `ntrip.ssl.port`: SSL 서비스 포트 (기본값 2102) - `ntrip.ssl.enabled`: SSL 활성화 여부 (기본값 false) - `ntrip.max-connections`: 최대 동시 연결 수 (기본값 400) - `ntrip.max-connections-per-ip`: IP당 최대 연결 수 (기본값 5) - `ntrip.idle-timeout-seconds`: 유휴 타임아웃 (기본값 30초) - `ntrip.compression.enabled`: 압축 활성화 여부 (기본값 false) - `ntrip.tcp.so-backlog`: TCP 연결 대기열 크기 (기본값 512) - `ntrip.tcp.tcp-no-delay`: TCP_NODELAY 활성화 여부 (기본값 true) - `ntrip.tcp.so-keep-alive`: TCP keep-alive 활성화 여부 (기본값 true) - `netty.boss-threads`: Netty boss 스레드 수 (기본값 2) - `netty.worker-threads`: Netty 작업 스레드 수 (권장: CPU 코어 수 * 4) - `netty.send-buffer-size`: 전송 버퍼 크기 (기본값 16384) - `netty.receive-buffer-size`: 수신 버퍼 크기 (기본값 16384) - `auth.enabled`: 인증 활성화 여부 (기본값 true) - `auth.default-user`: 기본 사용자 (형식: 사용자명:비밀번호, 기본값 admin:123456) - `rtcm.data-source`: RTCM 데이터 소스 유형 (file/serial/network) - `rtcm.file-path`: RTCM 데이터 파일 경로 - `rtcm.default-mount-point`: 기본 마운트 포인트 (기본값 RTK-LITE-RTCM33) ### 마운트 포인트 명명 규칙 마운트 포인트 이름은 다음 형식을 지원하며, 시스템은 자동으로 해당 구성의 RTCM 데이터를 구문 분석하고 생성합니다: **위성 시스템 식별자**: - `BDS`: 북두 위성 시스템 - `GPS`: GPS 위성 시스템 - `GLO`: GLONASS 위성 시스템 - `GAL`: 갈릴레오 위성 시스템 - `QZS`: 준천정 위성 시스템 - `SBAS`: 위성 기반 증강 시스템 **정밀도 수준**: - `DGPS`: 미터급 정밀도 - `RTK`: 센티미터급 정밀도 **RTCM 버전**: - `RTCM32`: RTCM 버전 3.2 - `RTCM33`: RTCM 버전 3.3 **좌표계**: - `WGS84`: WGS84 좌표계 - `CGCS2000`: 중국 측지 좌표계 2000 **위성 수 제한**: - `12SAT`: 12개 위성 **지역 정보**: - `NORTH`/`SOUTH`/`EAST`/`WEST`: 지역 식별자 **마운트 포인트 예**: - `BDS-GPS-RTK`: 북두+GPS 듀얼 시스템, RTK 정밀도 - `FULL-CONST-RTCM33`: 전체 성좌, RTCM 3.3 버전 - `BDS-GPS-GLO-GAL`: 다중 성좌 조합 - `BDS-ONLY-RTCM33`: 북두 전용 시스템, RTCM 3.3 버전 ## 프로젝트 구조 ``` ├── src/ │ ├── main/java/com/ntrip/ # 핵심 코드 │ │ ├── server/ # Netty 서버 코어 │ │ ├── handler/ # NTRIP 프로토콜 처리 │ │ ├── manager/ # 연결 관리 │ │ ├── auth/ # 사용자 인증 │ │ ├── rtcm/ # RTCM 데이터 소스 │ │ ├── protocol/ # 프로토콜 파싱 │ │ ├── entity/ # 데이터 엔티티 │ │ ├── repository/ # 데이터 접근 │ │ ├── web/ # 웹 관리 인터페이스 │ │ ├── config/ # 구성 관리 │ │ └── monitoring/ # 모니터링 관리 │ └── resources/ # 리소스 파일 │ ├── application.yml # 주요 구성 파일 │ └── static/ # 정적 리소스 ├── target/ # 빌드 출력 ├── test-tools/ # 테스트 도구 │ ├── 基站模拟器/ # 기지국 시뮬레이터 │ ├── 移动站模拟器/ # 모바일 스테이션 시뮬레이터 │ ├── 通用测试工具/ # 일반 테스트 도구 │ └── NTRIP服务测试操作手册.md # 테스트 문서 ├── run.bat # 시작 스크립트 └── pom.xml # Maven 구성 ``` ## 생산 환경 배포 - **하드웨어 권장 사항**: 4코어 CPU, 4GB+ RAM, 10Mbps+ 대역폭 - **시스템 구성**: Linux CentOS 7/8 또는 Ubuntu 20.04+ - **데이터베이스**: 생산 환경에서는 H2 인메모리 데이터베이스 대신 MySQL 사용 권장 - **보안 조치**: 방화벽, SSL 인증서, 비밀번호 암호화 구성 - **SSL 구성**: 생산 환경에서는 SSL을 활성화하고 유효한 인증서를 구성하는 것이 좋습니다 - **모니터링 구성**: Prometheus + Grafana 모니터링 시스템 통합 - **고가용성 배포**: 다중 인스턴스 배포 및 로드 밸런싱 지원 - **네트워크 최적화**: TCP 매개변수를 조정하여 네트워크 성능 최적화 ## 확장 기능 - **다중 데이터 소스 지원**: 시리얼 포트, 네트워크 등 다중 RTCM 데이터 소스 - **SSL/TLS 암호화**: 안전한 암호화 전송 지원 - **고급 모니터링**: Prometheus + Grafana 통합, Spring Boot Actuator 모니터링 엔드포인트 - **향상된 웹 API**: 풍부한 RESTful API를 제공하여 사용자, 마운트 포인트 및 구성을 동적으로 관리 지원 - **지능형 마운트 포인트 관리**: 내장된 권장 마운트 포인트 초기화, 다중 시나리오 구성 지원 - **고가용성 배포**: 다중 인스턴스 로드 밸런싱 - **데이터 동기화**: 다중 서버 데이터 일관성 보장 - **네트워크 최적화**: TCP 매개변수 조정 및 연결 관리 지원 ## 라이선스 이 프로젝트는 MIT 라이선스에 따라 오픈 소스로 제공됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오. ## 연락처 - **프로젝트 관리자**: 시즈하오 (Xi Zhihao) - **기술 지원**: 37735973@qq.com - **Gitee**: https://gitee.com/guleng2005/high-flow-ntrip.git --- **참고**: 이 프로젝트는 실제 CORS 스테이션 시스템에 배포되어 사용되고 있으며, 생산 환경에서 안정적으로 운영되고 있습니다.