Hi VGalaxies,

The data subscription client is really a great feature. It provides users with 
a brand new way of consuming data, and offers new possibilities for real-time 
computation of industrial data. I am also pleased to see that IoTDB's stream 
computing engine has new usage scenarios.

Thank you for your contribution. I hope you can continue to improve the data 
subscription feature and make it more user-friendly.

Thanks,
Steve

On 2024/04/08 03:06:59 VGalaxies wrote:
> Hello everyone,
> 
> I am VGalaxies, a new contributor to Apache IoTDB. I am excited to
> share with you a new feature that I have been working on for the past
> few months.
> 
> The data subscription client is a new way to access data within IoTDB,
> distinct from the traditional method of querying data using SQL-like
> syntax. In scenarios where real-time data, quick response to data
> changes, and building highly event-driven systems are required, data
> subscription has greater advantages over data querying. For example,
> in the following two scenarios:
> 
> 1. Replace extensive polling queries for large amounts of data: Avoid
> significant impacts on the performance of existing systems when
> querying frequently or when there are many data points. Also, avoid
> problems with determining the query scope and ensure downstream
> receives accurate full data.
> 2. Facilitate downstream system integration: It's easier to integrate
> with components such as Flink, Spark, Kafka/DataX, Camel/MySQL, etc.
> There's no need to customize the logic of IoTDB's data change capture
> for each big data component separately, simplifying integration
> component design and making it easier for users.
> 
> The IoTDB subscription client references some features defined by some
> message queue products like Kafka. It consists of 3 core concepts:
> Topic, Consumer, and Consumer Group.
> 
> - Topic is a logical concept used by the IoTDB subscription client to
> classify data, serving as a channel for data publication. Producers
> publish data to specific topics, while consumers subscribe to these
> topics to receive related data. In the IoTDB subscription client,
> topics describe the sequence characteristics, time characteristics,
> presentation forms, and optional custom processing logic of subscribed
> data.
> - Consumer is an application or service in the IoTDB subscription
> client responsible for receiving and processing data published to
> specific topics. Consumers retrieve data from the queue and perform
> corresponding processing. The IoTDB subscription client provides two
> types of consumers: pull consumer and push consumer.
> - Consumer Group is a collection of consumers. When different
> consumers in the same consumer group subscribe to the same topic,
> these consumers share the processing progress of data under this
> topic. Each data under this topic can only be processed by one
> consumer within the group, ensuring that data is not processed
> repeatedly.
> 
> Based on these concepts, the IoTDB subscription client provides a
> series of SDKs for creating topics, creating consumers, subscribing to
> topics, consuming data, committing consumption progress, and obtaining
> subscription relationships. Here's a comprehensive example[1]
> demonstrating how to use the subscription client JAVA SDK to consume
> data from IoTDB.
> 
> Technically, the data subscription client will rely on IoTDB's
> existing streaming processing framework (Pipe). Each subscription
> corresponds to a user-invisible pipe task. Subscription relationships
> and other metadata information are persistently maintained through the
> config node. Basic functionality has been developed on the master
> branch[2], and further iterations will continuously improve it.
> 
> I hope you are interested in this feature and would like to
> participate in the development and testing. You can also leave your
> comments and suggestions in this thread. Appreciate any
> suggestion/feedback & contribution.
> 
> Thank you for your attention and support.
> 
> Best regards,
> 
> VGalaxies
> 
> Reference:
> 1. 
> https://github.com/apache/iotdb/blob/master/example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
> 2. https://github.com/apache/iotdb/tree/master
> 

Reply via email to