Skip to content

Commit 6e46f18

Browse files
committed
feat(repo): add connectors runtime
1 parent bdc8488 commit 6e46f18

File tree

38 files changed

+3893
-14
lines changed

38 files changed

+3893
-14
lines changed

Cargo.lock

Lines changed: 353 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ members = [
3030
"core/binary_protocol",
3131
"core/cli",
3232
"core/common",
33+
"core/connectors/data_producer",
34+
"core/connectors/runtime",
35+
"core/connectors/sdk",
36+
"core/connectors/sinks/quickwit_sink",
37+
"core/connectors/sinks/stdout_sink",
38+
"core/connectors/sources/test_source",
3339
"core/examples",
3440
"core/integration",
3541
"core/sdk",
@@ -68,16 +74,18 @@ byte-unit = { version = "5.1.6", default-features = false, features = [
6874
] }
6975
bytes = "1.10.1"
7076
charming = "0.4.0"
71-
chrono = "0.4.41"
77+
chrono = { version = "0.4.41", features = ["serde"] }
7278
clap = { version = "4.5.37", features = ["derive"] }
79+
config = { version = "0.15.11" }
7380
comfy-table = "7.1.4"
7481
crc32fast = "1.4.2"
7582
crossbeam = "0.8.4"
7683
dashmap = "6.1.0"
84+
derive_builder = "0.20.2"
7785
derive_more = { version = "2.0.1", features = ["full"] }
7886
derive-new = "0.7.0"
7987
dirs = "6.0.0"
80-
derive_builder = "0.20.2"
88+
dlopen2 = "0.7.0"
8189
enum_dispatch = "0.3.13"
8290
figlet-rs = "0.1.5"
8391
flume = "0.11.1"
@@ -87,9 +95,11 @@ human-repr = "1.1.0"
8795
humantime = "2.2.0"
8896
keyring = { version = "3.6.2", features = ["sync-secret-service", "vendored"] }
8997
nonzero_lit = "0.1.2"
98+
once_cell = "1.21.3"
9099
openssl = { version = "0.10.72", features = ["vendored"] }
91100
passterm = "=2.0.1"
92101
quinn = "0.11.8"
102+
postcard = { version = "1.1.1", features = ["alloc"] }
93103
rand = "0.9.1"
94104
reqwest = { version = "0.12.15", default-features = false, features = [
95105
"json",
@@ -101,7 +111,9 @@ rustls = { version = "0.23.27", features = ["ring"] }
101111
serde = { version = "1.0.219", features = ["derive", "rc"] }
102112
serde_json = "1.0.140"
103113
serde_with = { version = "3.12.0", features = ["base64", "macros"] }
114+
serde_yml = "0.0.12"
104115
serial_test = "3.2.0"
116+
simd-json = { version = "0.15.1", features = ["serde_impl"] }
105117
sysinfo = "0.35.0"
106118
tempfile = "3.19.1"
107119
thiserror = "2.0.12"
@@ -116,13 +128,15 @@ tracing-subscriber = { version = "0.3.19", default-features = false, features =
116128
"ansi",
117129
] }
118130
uuid = { version = "1.16.0", features = [
131+
"v4",
119132
"v7",
120133
"fast-rng",
121134
"serde",
122135
"zerocopy",
123136
] }
124137
rust-s3 = { version = "0.35.1", features = ["default"] }
125138
strum = { version = "0.27.1", features = ["derive"] }
139+
strum_macros = "0.27.1"
126140
aes-gcm = "0.10.3"
127141
base64 = "0.22.1"
128142
twox-hash = { version = "2.1.0", features = ["xxhash32"] }
@@ -151,8 +165,9 @@ mimalloc = "0.1"
151165
console-subscriber = "0.4.1"
152166

153167
# Path dependencies
154-
iggy_common = { path = "core/common", version = "0.7.0" }
155168
iggy_binary_protocol = { path = "core/binary_protocol", version = "0.7.0" }
169+
iggy_common = { path = "core/common", version = "0.7.0" }
170+
iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.1.0" }
156171
iggy = { path = "core/sdk", version = "0.7.0" }
157172
server = { path = "core/server" }
158173
integration = { path = "core/integration" }

DEPENDENCIES.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ anyhow: 1.0.98, "Apache-2.0 OR MIT",
3232
anymap2: 0.13.0, "Apache-2.0 OR MIT",
3333
arbitrary: 1.4.1, "Apache-2.0 OR MIT",
3434
arc-swap: 1.7.1, "Apache-2.0 OR MIT",
35+
arraydeque: 0.5.1, "Apache-2.0 OR MIT",
3536
arrayref: 0.3.9, "BSD-2-Clause",
3637
arrayvec: 0.7.6, "Apache-2.0 OR MIT",
3738
assert_cmd: 2.0.17, "Apache-2.0 OR MIT",
@@ -47,6 +48,7 @@ async-stream-impl: 0.3.6, "MIT",
4748
async-trait: 0.1.88, "Apache-2.0 OR MIT",
4849
async_zip: 0.0.17, "MIT",
4950
atomic: 0.6.0, "Apache-2.0 OR MIT",
51+
atomic-polyfill: 1.0.3, "Apache-2.0 OR MIT",
5052
atomic-waker: 1.1.2, "Apache-2.0 OR MIT",
5153
attohttpc: 0.28.5, "MPL-2.0",
5254
autocfg: 1.4.0, "Apache-2.0 OR MIT",
@@ -115,11 +117,13 @@ clap_complete: 4.5.50, "Apache-2.0 OR MIT",
115117
clap_derive: 4.5.32, "Apache-2.0 OR MIT",
116118
clap_lex: 0.7.4, "Apache-2.0 OR MIT",
117119
cmake: 0.1.54, "Apache-2.0 OR MIT",
120+
cobs: 0.2.3, "Apache-2.0 OR MIT",
118121
colorchoice: 1.0.3, "Apache-2.0 OR MIT",
119122
colored: 3.0.0, "MPL-2.0",
120123
combine: 4.6.7, "MIT",
121124
comfy-table: 7.1.4, "MIT",
122125
concurrent-queue: 2.5.0, "Apache-2.0 OR MIT",
126+
config: 0.15.11, "Apache-2.0 OR MIT",
123127
console-api: 0.8.1, "MIT",
124128
console-subscriber: 0.4.1, "MIT",
125129
console_error_panic_hook: 0.1.7, "Apache-2.0 OR MIT",
@@ -137,6 +141,7 @@ cpufeatures: 0.2.17, "Apache-2.0 OR MIT",
137141
crc: 3.3.0, "Apache-2.0 OR MIT",
138142
crc-catalog: 2.4.0, "Apache-2.0 OR MIT",
139143
crc32fast: 1.4.2, "Apache-2.0 OR MIT",
144+
critical-section: 1.2.0, "Apache-2.0 OR MIT",
140145
crossbeam: 0.8.4, "Apache-2.0 OR MIT",
141146
crossbeam-channel: 0.5.15, "Apache-2.0 OR MIT",
142147
crossbeam-deque: 0.8.6, "Apache-2.0 OR MIT",
@@ -172,6 +177,8 @@ dircpy: 0.3.19, "MIT",
172177
dirs: 6.0.0, "Apache-2.0 OR MIT",
173178
dirs-sys: 0.5.0, "Apache-2.0 OR MIT",
174179
displaydoc: 0.2.5, "Apache-2.0 OR MIT",
180+
dlopen2: 0.7.0, "MIT",
181+
dlopen2_derive: 0.4.1, "Custom License File",
175182
dlv-list: 0.5.2, "Apache-2.0 OR MIT",
176183
doc-comment: 0.3.3, "MIT",
177184
dotenvy: 0.15.7, "MIT",
@@ -181,6 +188,8 @@ dtor: 0.0.6, "Apache-2.0 OR MIT",
181188
dtor-proc-macro: 0.0.5, "Apache-2.0 OR MIT",
182189
dunce: 1.0.5, "Apache-2.0 OR CC0-1.0 OR MIT-0",
183190
either: 1.15.0, "Apache-2.0 OR MIT",
191+
embedded-io: 0.4.0, "Apache-2.0 OR MIT",
192+
embedded-io: 0.6.1, "Apache-2.0 OR MIT",
184193
encoding_rs: 0.8.35, "(Apache-2.0 OR MIT) AND BSD-3-Clause",
185194
enum_dispatch: 0.3.13, "Apache-2.0 OR MIT",
186195
env_filter: 0.1.3, "Apache-2.0 OR MIT",
@@ -265,11 +274,15 @@ gloo-worker-macros: 0.1.0, "Apache-2.0 OR MIT",
265274
governor: 0.10.0, "MIT",
266275
h2: 0.3.26, "MIT",
267276
h2: 0.4.10, "MIT",
277+
halfbrown: 0.3.0, "Apache-2.0 OR MIT",
268278
handlebars: 4.5.0, "MIT",
279+
hash32: 0.2.1, "Apache-2.0 OR MIT",
269280
hashbrown: 0.12.3, "Apache-2.0 OR MIT",
270281
hashbrown: 0.14.5, "Apache-2.0 OR MIT",
271282
hashbrown: 0.15.3, "Apache-2.0 OR MIT",
283+
hashlink: 0.10.0, "Apache-2.0 OR MIT",
272284
hdrhistogram: 7.5.4, "Apache-2.0 OR MIT",
285+
heapless: 0.7.17, "Apache-2.0 OR MIT",
273286
heck: 0.5.0, "Apache-2.0 OR MIT",
274287
hermit-abi: 0.3.9, "Apache-2.0 OR MIT",
275288
hex: 0.4.3, "Apache-2.0 OR MIT",
@@ -308,6 +321,12 @@ iggy: 0.7.0, "Apache-2.0",
308321
iggy-cli: 0.9.0, "Apache-2.0",
309322
iggy_binary_protocol: 0.7.0, "Apache-2.0",
310323
iggy_common: 0.7.0, "Apache-2.0",
324+
iggy_connector_data_producer: 0.1.0, "Apache-2.0",
325+
iggy_connector_quickwit_sink: 0.1.0, "Apache-2.0",
326+
iggy_connector_runtime: 0.1.0, "Apache-2.0",
327+
iggy_connector_sdk: 0.1.0, "Apache-2.0",
328+
iggy_connector_stdout_sink: 0.1.0, "Apache-2.0",
329+
iggy_connector_test_source: 0.1.0, "Apache-2.0",
311330
iggy_examples: 0.0.5, "Apache-2.0",
312331
impl-more: 0.1.9, "Apache-2.0 OR MIT",
313332
implicit-clone: 0.4.9, "Apache-2.0 OR MIT",
@@ -333,6 +352,7 @@ jni: 0.21.1, "Apache-2.0 OR MIT",
333352
jni-sys: 0.3.0, "Apache-2.0 OR MIT",
334353
jobserver: 0.1.33, "Apache-2.0 OR MIT",
335354
js-sys: 0.3.77, "Apache-2.0 OR MIT",
355+
json5: 0.4.1, "ISC",
336356
jsonwebtoken: 9.3.1, "MIT",
337357
jwalk: 0.8.1, "MIT",
338358
keyring: 3.6.2, "Apache-2.0 OR MIT",
@@ -350,6 +370,7 @@ libloading: 0.8.6, "ISC",
350370
libmimalloc-sys: 0.1.42, "MIT",
351371
libredox: 0.1.3, "MIT",
352372
libssh2-sys: 0.3.1, "Apache-2.0 OR MIT",
373+
libyml: 0.0.5, "MIT",
353374
libz-sys: 1.1.22, "Apache-2.0 OR MIT",
354375
linux-raw-sys: 0.4.15, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
355376
linux-raw-sys: 0.9.4, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
@@ -432,6 +453,7 @@ parking_lot_core: 0.8.6, "Apache-2.0 OR MIT",
432453
parking_lot_core: 0.9.10, "Apache-2.0 OR MIT",
433454
passterm: 2.0.1, "BSD-3-Clause",
434455
paste: 1.0.15, "Apache-2.0 OR MIT",
456+
pathdiff: 0.2.3, "Apache-2.0 OR MIT",
435457
pbkdf2: 0.12.2, "Apache-2.0 OR MIT",
436458
pear: 0.2.9, "Apache-2.0 OR MIT",
437459
pear_codegen: 0.2.9, "Apache-2.0 OR MIT",
@@ -451,6 +473,7 @@ polonius-the-crab: 0.2.1, "Apache-2.0 OR MIT OR Zlib",
451473
polyval: 0.6.2, "Apache-2.0 OR MIT",
452474
portable-atomic: 1.11.0, "Apache-2.0 OR MIT",
453475
portable-atomic-util: 0.2.4, "Apache-2.0 OR MIT",
476+
postcard: 1.1.1, "Apache-2.0 OR MIT",
454477
potential_utf: 0.1.2, "Unicode-3.0",
455478
powerfmt: 0.2.0, "Apache-2.0 OR MIT",
456479
ppv-lite86: 0.2.21, "Apache-2.0 OR MIT",
@@ -493,6 +516,8 @@ rcgen: 0.13.2, "Apache-2.0 OR MIT",
493516
redox_syscall: 0.2.16, "MIT",
494517
redox_syscall: 0.5.12, "MIT",
495518
redox_users: 0.5.0, "MIT",
519+
ref-cast: 1.0.24, "Apache-2.0 OR MIT",
520+
ref-cast-impl: 1.0.24, "Apache-2.0 OR MIT",
496521
regex: 1.11.1, "Apache-2.0 OR MIT",
497522
regex-automata: 0.1.10, "MIT OR Unlicense",
498523
regex-automata: 0.4.9, "Apache-2.0 OR MIT",
@@ -507,6 +532,7 @@ retry-policies: 0.4.0, "Apache-2.0 OR MIT",
507532
ring: 0.17.14, "Apache-2.0 AND ISC",
508533
rkyv: 0.7.45, "MIT",
509534
rkyv_derive: 0.7.45, "MIT",
535+
ron: 0.8.1, "Apache-2.0 OR MIT",
510536
route-recognizer: 0.3.1, "MIT",
511537
rust-ini: 0.21.1, "MIT",
512538
rust-s3: 0.35.1, "MIT",
@@ -551,6 +577,7 @@ serde_spanned: 0.6.8, "Apache-2.0 OR MIT",
551577
serde_urlencoded: 0.7.1, "Apache-2.0 OR MIT",
552578
serde_with: 3.12.0, "Apache-2.0 OR MIT",
553579
serde_with_macros: 3.12.0, "Apache-2.0 OR MIT",
580+
serde_yml: 0.0.12, "Apache-2.0 OR MIT",
554581
serial_test: 3.2.0, "MIT",
555582
serial_test_derive: 3.2.0, "MIT",
556583
server: 0.5.0, "Apache-2.0",
@@ -560,6 +587,7 @@ sharded-slab: 0.1.7, "MIT",
560587
shlex: 1.3.0, "Apache-2.0 OR MIT",
561588
signal-hook-registry: 1.4.5, "Apache-2.0 OR MIT",
562589
simd-adler32: 0.3.7, "MIT",
590+
simd-json: 0.15.1, "Apache-2.0 OR MIT",
563591
simdutf8: 0.1.5, "Apache-2.0 OR MIT",
564592
simple_asn1: 0.6.3, "ISC",
565593
siphasher: 1.0.1, "Apache-2.0 OR MIT",
@@ -652,6 +680,7 @@ utf8parse: 0.2.2, "Apache-2.0 OR MIT",
652680
uuid: 1.16.0, "Apache-2.0 OR MIT",
653681
v_htmlescape: 0.15.8, "Apache-2.0 OR MIT",
654682
valuable: 0.1.1, "MIT",
683+
value-trait: 0.11.0, "Apache-2.0 OR MIT",
655684
vcpkg: 0.2.15, "Apache-2.0 OR MIT",
656685
vergen: 9.0.6, "Apache-2.0 OR MIT",
657686
vergen-git2: 1.0.7, "Apache-2.0 OR MIT",
@@ -749,6 +778,7 @@ wit-bindgen-rt: 0.39.0, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
749778
writeable: 0.6.1, "Unicode-3.0",
750779
wyz: 0.5.1, "MIT",
751780
xz2: 0.1.7, "Apache-2.0 OR MIT",
781+
yaml-rust2: 0.10.2, "(MIT AND Apache-2.0) OR MIT",
752782
yansi: 1.0.1, "Apache-2.0 OR MIT",
753783
yasna: 0.5.2, "Apache-2.0 OR MIT",
754784
yew: 0.21.0, "Apache-2.0 OR MIT",

README.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ The name is an abbreviation for the Italian Greyhound - small yet extremely fast
6565
- Additional features such as **server side message deduplication**
6666
- **Multi-tenant** support via abstraction of **streams** whch group **topics**
6767
- **TLS** support for all transport protocols (TCP, QUIC, HTTPS)
68+
- **[Connectors](https://github.com/apache/iggy/tree/master/core/connectors)** - sinks, sources and data transformations based on the **custom Rust plugins**
6869
- Optional server-side as well as client-side **data encryption** using AES-256-GCM
6970
- Optional metadata support in the form of **message headers**
7071
- Optional **data backups & archivization** on disk and/or the **S3** compatible cloud storage (e.g. AWS S3)
@@ -78,6 +79,7 @@ The name is an abbreviation for the Italian Greyhound - small yet extremely fast
7879

7980
![files structure](assets/files_structure.png)
8081

82+
8183
---
8284

8385
## Architecture
@@ -86,30 +88,36 @@ This is the high-level architecture of the Iggy message streaming server, where
8688

8789
![server](assets/iggy_architecture.png)
8890

91+
---
92+
93+
## Version
94+
95+
The latest released version is `0.4.300` for Iggy server, which is compatible with `0.6` Rust client SDK and the others.
96+
97+
The recent improvements based on the zero-copy (de)serialization, along with updated SDKs etc. will be available in the upcoming release with Iggy server `0.5.0`, Rust SDK `0.7` and all the other SDKs.
8998

9099
---
91100

92101
## Roadmap
93102

94103
- **Shared-nothing** design and **io_uring** support (PoC on experimental branch, WiP on the main branch)
95104
- **Clustering** & data replication based on **[VSR](https://pmg.csail.mit.edu/papers/vr-revisited.pdf)** (on sandbox project using Raft, will be implemented after shared-nothing design is completed)
96-
- Plugins & extensions support (design and PoC as discussed [here](https://github.com/apache/iggy/discussions/1670), WiP)
97-
98105

99106
---
100107

101108
## Supported languages SDK (work in progress)
102109

103-
We're in the process of migrating all the remaining SDKs and other tooling from [iggy-rs](https://github.com/iggy-rs/) organization to this monorepo (WiP).
110+
- Rust
111+
- C#
112+
- Java
113+
- Go
114+
- Python
115+
- Node
116+
- C++
117+
- Elixir
118+
104119

105-
- [Rust](https://crates.io/crates/iggy)
106-
- [C#](https://github.com/iggy-rs/iggy-dotnet-client)
107-
- [Go](https://github.com/iggy-rs/iggy-go-client)
108-
- [Node](https://github.com/iggy-rs/iggy-node-client)
109-
- [Python](https://github.com/iggy-rs/iggy-python-client)
110-
- [Java](https://github.com/iggy-rs/iggy-java-client)
111-
- [C++](https://github.com/iggy-rs/iggy-cpp-client)
112-
- [Elixir](https://github.com/iggy-rs/iggy-elixir-client)
120+
Almost all the tooling has been migrated from [iggy-rs](https://github.com/iggy-rs/) organization to this monorepo. There's no an ongoing work to support the zero-copy (de)serialization for all the SDKs.
113121

114122
---
115123

0 commit comments

Comments
 (0)