4 Star 77 Fork 21

Tang / flowback

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Flowback

项目简介

flowback 亿级消息落库,低成本秒级百兆消息落库方案(单机秒级处理100M/s~300M/s)

亿级数据检索秒级响应,单机秒级落库处理20w+数据,集群可叠加性能

高压缩率的存储节省磁盘空间1GB数据只需要原来的80%~90%存储甚至更低

原本需要接收1GB的数据压缩后只需要200M来传递是原来的1/4,从而节省带宽

适用于大数据落库需求、网关日志收集、各类日志收集、物联网设备数据收集、游戏、app埋点数据收集、大量数据收集统计需求 等等..

功能

  • 稳定持续秒级写入20W+消息,磁盘性能稳定情况下几乎无缓冲实时落库
  • 秒级统计监控实时接收消息,实时落库消息,实时堆积消息
  • 支持集群clickhouse
  • 支持本地文件存储数据
  • 支持从直接从消息队列直接消费消息,无需入侵性(目前支持rabbitmq更多mq中间件后续可支持)
  • 后台实时看版(后续支持)

架构图

架构图

设计关键要点

  • 使用堆内外缓存方式大量减少GC带来的影响
  • Netty作为高性能通信服务使用TCP方式保证消息可靠
  • 使用Disruptor缓冲流转消息与多级BlockingQueue组成无锁竞争双缓冲队列
  • Clickhouse作为高性能OLAP仓库,活跃于大数据领域,亿级数据秒级响应,数据高压缩率是原数据的80%~90%
  • 使用ZSTD压缩算法对消息进行压缩,原1GB只需要200M来传递,是原来的4-5倍
  • 实时自动创建表结构拿来即用不需要关心建表问题(大数据量建议手动设计表)
  • 使用Mmap技术实现DB故障下兜底保存数据,保证数据不丢失

核心使用技术

  • Java 1.8

  • SpringBoot 2.2.6

  • Netty 4.1.23.Final

  • OHC (off-heap-cache)

  • Clickhouse

  • FastJsoN

  • Disruptor

性能压测

采用腾讯云主机单机16核心32G,1T云盘,1 work端发送消息,1 server端接收消息落库16亿条消息耗时8小时

系统资源监控

cpu,内存使用率平稳,磁盘平均写入130M/s 虚拟机资源监控

虚拟机资源监控

JVM监控

持续8小时落库,堆整体使用率低平稳,堆使用仅有几百兆 JVM监控

JVM监控

检索测试

符合稀疏索引的匹配规则下从16亿数据随意输入匹配条件耗时1s左右,表设计优秀速度更快 检索耗时

检索耗时

安装教程

  1. 全新环境Centos7.9部署(自动安装docker,docker-compose)

    • 复制项目/readme/fb文件到目录到任意目录
    • 执行 chmod 777 start.sh
    • 执行 ./start.sh
  2. docker & docker-compose 环境部署

    • 复制项目/readme/fb文件到目录到任意目录
    • 执行 docker-compose -f docker-compose-standalone.yaml up -d

spring集成

  1. maven client 依赖包(待完善提供)
  2. 配置rabbitmq消息队列与队列名称(目前仅支持)
  3. 复制work端代码配置,使用ProtocolUtils发送消息,参考WorkClientHandler

参考文献

开发工具

参与项目

热爱开源,热爱编程。

感兴趣可以加wx一起做开源 检索耗时

MIT License Copyright (c) 2022 Tang 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.

简介

亿级消息落库,大数据收集,秒级10w+数据落库,亿级数据检索秒级响应解决方案 展开 收起
Java 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/t_vi/flowbacki.git
git@gitee.com:t_vi/flowbacki.git
t_vi
flowbacki
flowback
dev

搜索帮助