Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
41a8899
Schema Config Update
ankitk-me Sep 28, 2023
f26457c
converter implementation
ankitk-me Oct 6, 2023
fd69f8b
Merge branch 'aklivity:develop' into convertor
ankitk-me Oct 6, 2023
fdb9d98
test coverage update
ankitk-me Oct 6, 2023
dcecf18
schema update
ankitk-me Oct 6, 2023
b12c609
Interface update to support Streaming validation
ankitk-me Oct 12, 2023
3621172
refactoring
ankitk-me Oct 18, 2023
8435d0e
bug fix
ankitk-me Oct 19, 2023
71451a7
IT fix
ankitk-me Oct 25, 2023
2a882d4
Feature/m1 docker build support (#376)
vordimous Oct 7, 2023
c177894
0 for no mqtt session expiry should be mapped to max integer value fo…
akrambek Oct 7, 2023
add6eb3
Bump alpine in /cloud/docker-image/src/main/docker/release (#484)
dependabot[bot] Oct 7, 2023
366daff
Better handle request with same group id (#498)
akrambek Oct 11, 2023
e362fe9
Prepare release 0.9.55
jfallows Oct 11, 2023
66680f9
Update CHANGELOG.md
jfallows Oct 11, 2023
6829614
Fix flow control bug in mqtt-kakfa publish (#524)
bmaidics Oct 20, 2023
bb9fb56
Add extraEnv to Deployment in the helm chart (#511)
attilakreiner Oct 21, 2023
a1235ce
Sporadic github action build failure fix (#522)
akrambek Oct 23, 2023
6eb8a43
Merge branch 'feature/schema-registry' into convertor
ankitk-me Oct 25, 2023
f7bf292
pom fix
ankitk-me Oct 25, 2023
fd59bbb
updating Varint32FW initialisation
ankitk-me Oct 25, 2023
4c264d7
Fragment Validator Interface & Schema Update
ankitk-me Oct 27, 2023
1e1e73d
String & Test Fragment Validator implementation
ankitk-me Oct 30, 2023
65f12f0
Addressing review feedback
ankitk-me Nov 1, 2023
705f7d4
Addressing review comments
ankitk-me Nov 2, 2023
02b3b7a
avro validator.yaml update
ankitk-me Nov 6, 2023
6191c15
Schema patch issue fix
ankitk-me Nov 7, 2023
7d6418a
dynamic value length allocation issue
ankitk-me Nov 13, 2023
9c533a5
addressing review comments
ankitk-me Nov 15, 2023
364acb4
Use parametric types to avoid both cast and warning about raw types
jfallows Nov 16, 2023
31e70f4
Use converted file to handle variable size converted value during pro…
jfallows Nov 16, 2023
69dfe0b
Prefix is byte followed by big endian int32, requires literal byte se…
jfallows Nov 16, 2023
767d008
adding test coverage
ankitk-me Nov 17, 2023
0b1e590
optimising object allocation Avro validator
ankitk-me Nov 17, 2023
ce59fb0
checkstyle fix
ankitk-me Nov 17, 2023
2d6a9e3
IT & implementation to support fetch message without Schema ID prefix
ankitk-me Nov 21, 2023
664cece
addressing review feedback
ankitk-me Nov 27, 2023
b4b02c8
fetch message without Schema ID prefix implementation
ankitk-me Nov 28, 2023
f4e90e9
Avro & Json Read Validator fix
ankitk-me Nov 28, 2023
8075684
fix checkstyle
ankitk-me Nov 28, 2023
4dec79f
ITs for convertor & updating Test Validator
ankitk-me Nov 29, 2023
11d3747
dynamic message size after conversion implementation
ankitk-me Dec 12, 2023
7281c2f
Merge branch 'feature/schema-registry' into convertor
ankitk-me Dec 13, 2023
08cc929
updating latest changes with Value & Fragment Validator interface.
ankitk-me Dec 13, 2023
3cf0185
Converter bug fix
ankitk-me Dec 14, 2023
a8f9c08
Addressing review feedback
ankitk-me Dec 18, 2023
1d82d23
addressing review comments
ankitk-me Dec 19, 2023
8fb1016
using ExpandableDirectByteBuffer with valid index & length
ankitk-me Dec 19, 2023
9f3e434
review feedback & adding functional interface to CatalogHandler
ankitk-me Dec 20, 2023
c48b2d7
encoded bug fix: position reset to 0
ankitk-me Dec 21, 2023
9b77963
Addressing review comments
ankitk-me Dec 21, 2023
49f2963
Avro unit test fix
ankitk-me Dec 21, 2023
ee1e231
return -1 and ignore prefix.sizeof() in case of validation failure
ankitk-me Dec 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Prev Previous commit
Next Next commit
Merge branch 'feature/schema-registry' into convertor
  • Loading branch information
ankitk-me committed Dec 13, 2023
commit 7281c2f0835f97afd7d194e91f909d8ca66ec406
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
- name: Checkout GitHub sources
uses: actions/checkout@v4
- name: Setup JDK ${{ matrix.java }}
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: ${{ matrix.java }}
Expand Down
205 changes: 203 additions & 2 deletions CHANGELOG.md

Large diffs are not rendered by default.

32 changes: 20 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<div id="top"></div>
<div align="center">
<img src="./assets/zilla-rings@2x.png" height="250">
</div>
Expand Down Expand Up @@ -35,7 +36,7 @@ When Zilla is deployed alongside Apache Kafka®, any application or service can
- [REST-Kafka Proxying](#rest-kafka-proxying)
- [SSE-Kafka Proxying](#sse-kafka-proxying)
- [gRPC-Kafka Proxying](#grpc-kafka-proxying)
- [MQTT-Kafka Proxying]((#mqtt-kafka-proxying))
- [MQTT-Kafka Proxying](#mqtt-kafka-proxying)
- [Resources](#resources)
- [How Zilla Works](#how-zilla-works)
- [FAQs](#faqs)
Expand All @@ -61,7 +62,7 @@ Returns an `etag` header with `HTTP` response. Supports conditional `GET if-none

- [x] **Filtering** — Streams messages from a Kafka topic, filtered by message key and/or headers, with key and/or header values extracted from segments of the `HTTP` path if needed.
- [x] **Reliable Delivery** — Supports `event-id` and `last-event-id` header to recover from an interrupted stream without message loss, and without the client needing to acknowledge message receipt.
- [x] **Continous Authorization** — Supports a `challenge` event, triggering the client to send up-to-date authorization credentials, such as JWT token, before expiration. The response stream is terminated if the authorization expires. Multiple SSE streams on the same `HTTP/2` connection and authorized by the same JWT token can be reauthorized by a single `challenge` event response.
- [x] **Continuous Authorization** — Supports a `challenge` event, triggering the client to send up-to-date authorization credentials, such as JWT token, before expiration. The response stream is terminated if the authorization expires. Multiple SSE streams on the same `HTTP/2` connection and authorized by the same JWT token can be reauthorized by a single `challenge` event response.

### <a name="grpc-kafka-proxying"> gRPC-Kafka Proxying

Expand All @@ -70,23 +71,23 @@ Returns an `etag` header with `HTTP` response. Supports conditional `GET if-none

### <a name="mqtt-kafka-proxying"> MQTT-Kafka Proxying

- [x] **Publish** — Publish messages to Kafka topics, marking specific messages as retained. (`QoS 0` now, `QoS 1` and `QoS 2` coming)
- [x] **Publish** — Publish messages to Kafka topics, marking specific messages as retained. (`QoS 0`, `QoS 1`, `QoS 2`)
- [x] **Subscribe** — Subscribe to receive messages from Kafka topics, supporting `replay-on-subscribe` of messages marked as retained during publish.
- [x] **Last Will and Testament (LWT)** — Clients can specify a `last will` message that is delivered when the client disconnects abruptly and fails to reconnect before session timeout.
- [x] **Reconnect** - Clients reconnecting with the same `client-id`, even to a different Zilla instance, will automatically remain subscribed to `MQTT` topics previously subscribed while previously connected.
- [x] **Session Takeover** - A client connecting with the same `client-id`, even to a different Zilla instance, will automatically disconnect the original `MQTT` client and take over the session.
- [x] **Redirect** - Clients can be redirected to a specific Zilla instance, sharding client session state across Zilla instances, without needing to replicate every client's session state on each Zilla instance.
- [x] **Security** - Integrated with [Zilla Guards](https://docs.aklivity.io/zilla/latest/reference/config/overview.html#guards) for `MQTT` client authorization. Supports `JWT` access tokens, with fine-grained privileges enforced to publish or subscribe to `MQTT` topics.
- [x] **Correlated Request-Response** - Support correlated `MQTT` request-response messages over Kafka topics.
- [x] **Protocol** - Support `MQTT v5` standard protocol (`MQTT v3.1.1` coming)
- [x] **Reconnect** Clients reconnecting with the same `client-id`, even to a different Zilla instance, will automatically remain subscribed to `MQTT` topics previously subscribed while previously connected.
- [x] **Session Takeover** A client connecting with the same `client-id`, even to a different Zilla instance, will automatically disconnect the original `MQTT` client and take over the session.
- [x] **Redirect** Clients can be redirected to a specific Zilla instance, sharding client session state across Zilla instances, without needing to replicate every client's session state on each Zilla instance.
- [x] **Security** Integrated with [Zilla Guards](https://docs.aklivity.io/zilla/latest/reference/config/overview.html#guards) for `MQTT` client authorization. Supports `JWT` access tokens, with fine-grained privileges enforced to publish or subscribe to `MQTT` topics.
- [x] **Correlated Request-Response** Support correlated `MQTT` request-response messages over Kafka topics.
- [x] **Protocol** Support for `MQTT v5` and `MQTT v3.1.1`

### Deployment, Performance & Other

- [x] **Realtime Cache** — Local cache synchronized with Kafka for specific topics, even when no clients are connected. The cache is stateless and recovers automatically. It is consistent across different Zilla instances without peer communication.
- [x] **Filtering** — Local cache indexes message key and headers upon retrieval from Kafka, supporting efficiently filtered reads from cached topics.
- [x] **Fan-in, Fan-out** — Local cache uses a small number of connections to interact with Kafka brokers, independent of the number of connected clients.
- [x] **Authorization** — Specific routed topics can be guarded to enforce required client privileges.
- [x] **Helm Chart** — Generic Zilla Helm chart avaliable.
- [x] **Helm Chart** — Generic Zilla Helm chart available.
- [x] **Auto-reconfigure** — Detect changes in `zilla.yaml` and reconfigure Zilla automatically.
- [x] **Prometheus Integration** — Export Zilla metrics to Prometheus for observability and auto-scaling.
- [x] **Declarative Configuration** — API mappings and endpoints inside Zilla are declaratively configured via YAML.
Expand All @@ -98,7 +99,7 @@ Returns an `etag` header with `HTTP` response. Supports conditional `GET if-none

- **[Zilla Documentation](https://docs.aklivity.io/zilla/latest/how-tos/install.html):** Guides, tutorials and references to help understand how to use Zilla and configure it for your use case.
- **[Product Roadmap][zilla-roadmap]:** Check out our plan for upcoming releases.
- **[Zilla Examples](https://github.com/aklivity/zilla-examples)**: A repo of sample Zilla configurations for different use cases running on Kubernetes.
- **[Zilla Examples](https://github.com/aklivity/zilla-examples)**: A collection of pre-canned Zilla feature demos.
- **[Todo Application](https://docs.aklivity.io/zilla/latest/tutorials/todo-app/build.html):** Follow the tutorial and see how Zilla and Kafka can be used to build a Todo app based on streaming and CQRS.

### 📝 Check out blog posts
Expand Down Expand Up @@ -174,8 +175,13 @@ Please review the [Zilla Roadamp][zilla-roadmap]. If you have a request or feedb
Looking to contribute to Zilla? Check out the [Contributing to Zilla](./.github/CONTRIBUTING.md) guide.
✨We value all contributions, whether it is source code, documentation, bug reports, feature requests or feedback!

### Many Thanks To Our Contributors!
<a href="https://github.com/aklivity/zilla/graphs/contributors">
<img src="https://contrib.rocks/image?repo=aklivity/zilla" />
</a>

## <a name="license"> License
Zilla is made available under the [Aklivity Community License](./LICENSE-AklivityCommunity). This is an open source-derived license that gives you the freedom to deploy, modify and run Zilla as you see fit, as long as you are not turning into a commercialized “as-a-service” offering. Running Zilla in the cloud for your own workloads, production or not, is completely fine.
Zilla is made available under the [Aklivity Community License](./LICENSE-AklivityCommunity). This is an open source-derived license that gives you the freedom to deploy, modify and run Zilla as you see fit, as long as you are not turning into a standalone commercialized “Zilla-as-a-service” offering. Running Zilla in the cloud for your own workloads, production or not, is completely fine.


<!-- Links -->
Expand All @@ -188,3 +194,5 @@ Zilla is made available under the [Aklivity Community License](./LICENSE-Aklivit
[release-latest-image]: https://img.shields.io/github/v/tag/aklivity/zilla?label=release
[release-latest]: https://github.com/aklivity/zilla/pkgs/container/zilla
[zilla-roadmap]: https://github.com/orgs/aklivity/projects/4/views/1

<p align="right">(<a href="#top">🔼 Back to top</a>)</p>
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ RUN apk add --no-cache wget
RUN ./zpmw install --debug --exclude-remote-repositories
RUN ./zpmw clean --keep-image

FROM alpine:3.18.4
FROM alpine:3.19.0

ENV ZILLA_VERSION ${project.version}

Expand Down
2 changes: 1 addition & 1 deletion cloud/helm-chart/src/main/helm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ appVersion: 0.0.0 # helm-maven-plugin -> configuration -> appVersion
name: zilla
type: application
version: 0.0.0 # helm-maven-plugin -> configuration -> chartVersion
description: Zilla The Event-Driven API Gateway
description: A multi-protocol edge/service proxy for interfacing apps and services to streaming data.
icon: https://raw.githubusercontent.com/aklivity/zilla/develop/cloud/helm-chart/src/main/helm/logo.png
home: https://github.com/aklivity/zilla
sources:
Expand Down
6 changes: 3 additions & 3 deletions cloud/helm-chart/src/main/helm/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Zilla packaged by Aklivity

Zilla is a next-generation API gateway built for event-driven architectures and streaming. It is the most seamless
and reliable way of interfacing edge clients (mobile apps, browsers, partner systems, etc.) to Apache Kafka-based
microservices and data.
Zilla abstracts Apache Kafka® for web applications, IoT clients and microservices via declaratively defined OpenAPIs and AsyncAPIs.

With no coding requirements or external dependencies, Zilla is the most advanced yet approachable Kafka integration solution. It natively supports the Kafka wire protocol and uses novel protocol mediation techniques to establish stateless API entry points into Kafka.

[Zilla by Aklivity](https://www.aklivity.io/)

Expand Down
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.