Skip to content

Commit

Permalink
Add feature comparison matrix
Browse files Browse the repository at this point in the history
Also update overview and faq docs.
  • Loading branch information
tylertreat committed Apr 27, 2020
1 parent 6240faa commit 88a8dc0
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 22 deletions.
24 changes: 9 additions & 15 deletions documentation/faq.md
Expand Up @@ -15,16 +15,18 @@ Liftbridge [overview](overview.md) for more information.

## Why was it created?

Liftbridge was designed to bridge the gap between sophisticated log-based
messaging systems like Apacha Kafka and Apache Pulsar and simpler, cloud-native
systems. There is no ZooKeeper or other unwieldy dependencies, no JVM, no
complicated API, and client libraries are just [gRPC](https://grpc.io/). More
importantly, Liftbridge aims to extend NATS with a durable, at-least-once
delivery mechanism that upholds the NATS tenets of simplicity, performance, and
scalability. Unlike [NATS
Liftbridge was designed to bridge the gap between sophisticated but complex
log-based messaging systems like Apache Kafka and Apache Pulsar and simpler,
cloud-native solutions. There is no ZooKeeper or other unwieldy dependencies,
no JVM, no complicated API or configuration, and client libraries are just
[gRPC](https://grpc.io/). More importantly, Liftbridge aims to extend NATS with
a durable, at-least-once delivery mechanism that upholds the NATS tenets of
simplicity, performance, and scalability. Unlike [NATS
Streaming](https://github.com/nats-io/nats-streaming-server), it uses the core
NATS protocol with optional extensions. This means it can be added to an
existing NATS deployment to provide message durability with no code changes.
The ultimate goal of Liftbridge is to provide a message-streaming solution with
a focus on simplicity and usability.

## Why not NATS Streaming?

Expand Down Expand Up @@ -75,11 +77,3 @@ will step up to replace it. The replication protocol closely resembles that of
Kafka, so there is much more nuance to avoid data consistency problems. See the
[replication protocol documentation](replication_protocol.md)
for more details.

## What about performance?

*Benchmarks soon to come...*

## Is it production-ready?

No, this project is early and still evolving.
40 changes: 40 additions & 0 deletions documentation/feature_comparison.md
@@ -0,0 +1,40 @@
---
id: feature-comparison
title: Feature Comparison
---

Liftbridge shares some similarities with other stream-oriented pub/sub
messaging systems. The below feature-comparison matrix shows how it compares to
a few of these systems.

> **Architect's Note**
>
> These are highly nuanced pieces of infrastructure, so a straight comparison
> of features is often of minimal value when evaluating solutions. This matrix
> is primarily meant to serve as a reference point for those attempting to
> develop a mental model of Liftbridge.
| | Liftbridge | NATS Streaming | Apache Kafka | Apache Pulsar |
|:----|:----|:----|:----|:----|
| Runtime | self-contained binary | self-contained binary | JVM | JVM |
| At-least-once delivery |||||
| Transactions | | || |
| Partitioning || |||
| Linear Horizontal Scalability || |||
| Clustering/Replication |||||
| External Coordination | | | Apache ZooKeeper | Apache ZooKeeper |
| Message Replay |||||
| Message Queueing | || ||
| Wildcard Topic Matching || | | |
| Topic Pausing || | | |
| Rate Limiting | | opt-in rate matching | quotas | publish rate limiting |
| Log Retention |||||
| Log Compaction || |||
| Message Headers || |||
| Multiple Consumers | independent subscribers | queue subscriptions | consumer groups | subscriptions |
| Consumer Position Tracking | | durable subscriptions | consumer groups | cursors |
| Event-enabled | activity stream | | | |
| Multitenancy | namespaced clusters | namespaced clusters | topic-level ACLs | multitenant shared cluster |
| Authentication | TLS | User authentication, TLS | TLS, Kerberos, SASL | TLS, Kerberos, JWT, Athenz |
| Authorization | | | ACLs | ACLs |
| Storage | filesystem | memory, filesystem, SQL| filesystem | filesystem (Apache BookKeeper), tiered storage (Amazon S3, Google Cloud Storage) |
16 changes: 9 additions & 7 deletions documentation/overview.md
Expand Up @@ -27,16 +27,18 @@ messages. Unlike a message queue where consumers *remove* messages from a
queue, with Liftbridge, consumers read back the log. In this sense, the design
is very similar to [Apache Kafka](http://kafka.apache.org/).

Liftbridge was designed to bridge the gap between sophisticated log-based
messaging systems like Apache Kafka and Apache Pulsar and simpler, cloud-native
systems. There is no ZooKeeper or other unwieldy dependencies, no JVM, no
complicated API, and client libraries are just [gRPC](https://grpc.io/). More
importantly, Liftbridge aims to extend NATS with a durable, at-least-once
delivery mechanism that upholds the NATS tenets of simplicity, performance, and
scalability. Unlike [NATS
Liftbridge was designed to bridge the gap between sophisticated but complex
log-based messaging systems like Apache Kafka and Apache Pulsar and simpler,
cloud-native solutions. There is no ZooKeeper or other unwieldy dependencies,
no JVM, no complicated API or configuration, and client libraries are just
[gRPC](https://grpc.io/). More importantly, Liftbridge aims to extend NATS with
a durable, at-least-once delivery mechanism that upholds the NATS tenets of
simplicity, performance, and scalability. Unlike [NATS
Streaming](https://github.com/nats-io/nats-streaming-server), it uses the core
NATS protocol with optional extensions. This means it can be added to an
existing NATS deployment to provide message durability with no code changes.
The ultimate goal of Liftbridge is to provide a message-streaming solution with
a focus on simplicity and usability.

The high-level data flow in Liftbridge is shown in the diagram below.

Expand Down
4 changes: 4 additions & 0 deletions website/i18n/en.json
Expand Up @@ -29,6 +29,9 @@
"faq": {
"title": "Frequently Asked Questions"
},
"feature-comparison": {
"title": "Feature Comparison"
},
"ha-and-consistency-configuration": {
"title": "Configuring for High Availability and Consistency"
},
Expand Down Expand Up @@ -144,6 +147,7 @@
"links": {
"GitHub": "GitHub",
"Docs": "Docs",
"Download": "Download",
"Help": "Help"
},
"categories": {
Expand Down
1 change: 1 addition & 0 deletions website/sidebars.json
Expand Up @@ -4,6 +4,7 @@
"overview",
"faq",
"concepts",
"feature-comparison",
"quick-start"
],
"Configuration": [
Expand Down

0 comments on commit 88a8dc0

Please sign in to comment.