当前位置: 首页 > news >正文

Timeplus-proton流处理器调研

概念

在这里插入图片描述

Timeplus是一个流处理器。它提供强大的端到端功能,利用开源流引擎Proton来帮助数据团队快速直观地处理流数据和历史数据,可供各种规模和行业的组织使用。它使数据工程师和平台工程师能够使用 SQL 释放流数据价值。

Timeplus 控制台可以轻松连接到不同的数据源(例如 Apache Kafka、Confluence Cloud、Redpanda、NATS、Web Socket/SSE、CSV 文件上传等)、通过 SQL 查询探索流模式、发送实时见解和向其他系统或个人发出警报,并创建仪表板和可视化。

  • 关于Timeplus 与 proton的关系
    Proton是Timeplus开源的核心系统。 Timeplus Cloud是云端的Proton,支持多租户,外加 Web UI,dashboard, alert,血缘图,和一些Proton不支持的数据源(通过额外组建)。
    对于 On-prem(私有化)部署,官方提供了Timeplus Enterprise,功能和 Timeplus Cloud 相似。

  • Timeplus 与Clickhouse的关系
    Timeplus的Proton就是基于ClickHouse开发的或者说内置ClickHouse(就是一个 proton 进程),去掉一些不需要的ClickHouse 的功能和函数,加入流计算能力和一个流存储。
    event数据先进入这个 streaming storage,实现small batch write,然后再自动转批写到 OLAP 存储。
    必须明确的是Timeplus的Proton与现有Clickhouse集群没关系,timeplus需要依赖自己内部Proton(改造的clickhouse)提供计算能力,而不能依赖现有的clickhouse提供的计算能力,但支持读写远程的clickhouse集群。

  • Timeplus两种运行方式

    1. 最简单就是 All In One,用 Timeplus 自己做历史存储,也做流存储,自己做流计算,也自己做历史计算
    2. 当你有数据在 ClickHouse 时,也可以把 Timeplus 当 Flink等流处理框架用,从 Kafka 读数据,写到远程的 ClickHouse
  • Timeplus语法
    Timeplus的SQL语法类似Clickhouse语法,支持ClickHouse协议,加上自己的一些tumble/hop/session方法在Flink等流程处理常见的函数。

  • 消息触发机制
    Timeplus的触发机制是micro-batch,而不是per event trigger,但可以做到毫秒级。
    如果是 global aggregation 默认是2秒发一次聚合数据,这个用户可以自定义,最大可以支持到微秒。
    Timeplus的触发策略还是比较全的,也是一大优势。

  • Timeplus与RisingWave比较
    Timeplus与流处理数据库RisingWave相比较,最大的优势是Timeplus可以很好的支持随机分析,因为其底层基于Clickhouse。

部署环境

获取docker编排文件

wget https://github.com/timeplus-io/proton/blob/develop/examples/ecommerce/docker-compose.yml

启动服务

docker compose up -d

在这里插入图片描述

进入客户端:

docker exec -it proton-demo-ecommerce-proton-1 proton-client

实例demo

ecommerce case

DROP STREAM default.frontend_events0;
CREATE STREAM frontend_events0(raw string) \
SETTINGS type='kafka', \
         brokers='redpanda:9092',\
         topic='owlshop-frontend-events';
         
-- Create externarl stream to read data from Kafka/Redpanda
CREATE EXTERNAL STREAM frontend_events(raw string)
SETTINGS type='kafka', 
         brokers='redpanda:9092',
         topic='owlshop-frontend-events';

-- Scan incoming events
select * from frontend_events;

-- Get live count
select count() from frontend_events;

-- Filter events by JSON attributes
select _tp_time, raw:ipAddress, raw:requestedUrl from frontend_events where raw:method='POST';

-- Show a live ASCII bar chart
select raw:method, count() as cnt, bar(cnt, 0, 40,5) as bar from frontend_events group by raw:method order by cnt desc limit 5 by emit_version();

MATERIALIZED VIEW

CREATE MATERIALIZED VIEW IF NOT EXISTS mv01 \
AS select _tp_time, raw:ipAddress, raw:requestedUrl from frontend_events where raw:method='POST';

--1. Streaming mode: SELECT * FROM materialized_view
SELECT * FROM mv01;

--2.Historical mode: SELECT * FROM table(materialized_view)
SELECT * FROM table(mv01);

--3.Historical + streaming mode: SELECT * FROM materialized_view WHERE _tp_time>='1970-01-01' Get all past results and as well as the future data.
SELECT * FROM mv01 WHERE _tp_time>='1970-01-01';

--4.Pre-aggregation mode: SELECT * FROM table(materialized_view) where __tp_version in (SELECT max(__tp_version) as m from table(materialized_view)) This immediately returns the most recent query result. We will provide new syntax to simplify this.

监控case

数据按照预设的时间批次进行分组,例如:2024-01-01 08:00:00、2024-01-01 08-30:00,并实时统计每个批次内的数据计数。
当批次数据计数在指定的延迟时间内未达到预设数量时(例如,从2024-01-01 08:00:00延迟1小时,触发时间为系统时间2024-01-01 09:00:00),会触发警报。发布批量数据的指标包括批量时间、触发报警时的计数数据量等

create stream s1(ts datetime64,cnt int32);
insert into s1(ts,cnt) values('2024-02-28 20:59:00',2);

select * from s1 where ts < now()-1m \
emit last 5m on proctime;

关于Timeplus

github 仓库

官方文档

Timeplus知乎主页

Slack

相关文章:

  • 自动驾驶加速落地,激光雷达放量可期(上)
  • 突破编程_C++_STL教程( list 的实战应用)
  • C语言基础(五)——结构体与C++引用
  • C/C++嵌入式开发环境搭建,Qt交叉编译,cmake交叉编译,clion/vscode远程开发
  • Qt 简约美观的加载动画 小沙漏风格 第六季
  • C语言:结构体(自定义类型)知识点(包括结构体内存对齐的热门知识点)
  • Spring Boot 常用注解大全
  • 【数据结构与算法】常见排序算法(Sorting Algorithm)
  • leetcode热题100学习计划-链表-反转链表
  • 对象变更记录objectlog工具(持续跟新)
  • Mybatis - generator(自动生成)
  • 蓝桥杯(3.2)
  • 前端vue后端go实现大文件分片下载
  • python笔记_程序流程控制
  • python毕设选题 - 大数据商城人流数据分析与可视化 - python 大数据分析
  • kafka消费者重平衡是什么?怎么避免?
  • GPT与MBR:硬盘分区表格式的革新与区别
  • sql基本语法+实验实践
  • 李沐动手学习深度学习——3.2练习
  • leetcode 简单
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布首度进军黄金矿产
  • 贵州通报9起群众身边不正之风和腐败问题典型案例
  • 美联储报告披露关税战冲击波:消费信心下降,经济担忧加深
  • 药企销售的茶碱层层流转后部分被用于制毒,销售人员一审被判15年
  • “下一个高增长市场,还是中国”,龚正市长会见参加上海车展的国际企业高管
  • 网上销售假冒片仔癀和安宫牛黄丸,两人被判刑