All Projects → travisjeffery → Jocko

travisjeffery / Jocko

Licence: mit
Kafka implemented in Golang with built-in coordination (No ZK dep, single binary install, Cloud Native)

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Jocko

Nsq
A realtime distributed messaging platform (forked from https://github.com/nsqio/nsq)
Stars: ✭ 476 (-89.29%)
Mutual labels:  messaging, queue, distributed-systems
Laravel Queue
Laravel Enqueue message queue extension. Supports AMQP, Amazon SQS, Kafka, Google PubSub, Redis, STOMP, Gearman, Beanstalk and others
Stars: ✭ 155 (-96.51%)
Mutual labels:  kafka, messaging, queue
Foundatio
Pluggable foundation blocks for building distributed apps.
Stars: ✭ 1,365 (-69.29%)
Mutual labels:  messaging, queue, distributed-systems
Materialize
Materialize lets you ask questions of your live data, which it answers and then maintains for you as your data continue to change. The moment you need a refreshed answer, you can get it in milliseconds. Materialize is designed to help you interactively explore your streaming data, perform data warehousing analytics against live relational data, or just increase the freshness and reduce the load of your dashboard and monitoring tasks.
Stars: ✭ 3,341 (-24.84%)
Mutual labels:  kafka, streaming, distributed-systems
Liftbridge
Lightweight, fault-tolerant message streams.
Stars: ✭ 2,175 (-51.07%)
Mutual labels:  messaging, streaming, distributed-systems
Nsq
A realtime distributed messaging platform
Stars: ✭ 20,663 (+364.86%)
Mutual labels:  messaging, queue, distributed-systems
traffic
Massively real-time traffic streaming application
Stars: ✭ 25 (-99.44%)
Mutual labels:  distributed-systems, streaming
coolbeans
Coolbeans is a distributed work queue that implements the beanstalkd protocol.
Stars: ✭ 56 (-98.74%)
Mutual labels:  distributed-systems, queue
Real Time Stock Market Prediction
In this repository, I have developed the entire server-side principal architecture for real-time stock market prediction with Machine Learning. I have used Tensorflow.js for constructing ml model architecture, and Kafka for real-time data streaming and pipelining.
Stars: ✭ 414 (-90.69%)
Mutual labels:  kafka, streaming
liftbridge-api
Protobuf definitions for the Liftbridge gRPC API. https://github.com/liftbridge-io/liftbridge
Stars: ✭ 15 (-99.66%)
Mutual labels:  streaming, messaging
azure-service-bus-go
Golang library for Azure Service Bus -- https://aka.ms/azsb
Stars: ✭ 67 (-98.49%)
Mutual labels:  queue, messaging
pulsar-helm-chart
Official Apache Pulsar Helm Chart
Stars: ✭ 122 (-97.26%)
Mutual labels:  streaming, messaging
nats-account-server
A simple HTTP/NATS server to host JWTs for nats-server 2.0 account authentication.
Stars: ✭ 62 (-98.61%)
Mutual labels:  distributed-systems, messaging
pulsar-adapters
Apache Pulsar Adapters
Stars: ✭ 18 (-99.6%)
Mutual labels:  streaming, messaging
matrixone
Hyperconverged cloud-edge native database
Stars: ✭ 1,057 (-76.22%)
Mutual labels:  distributed-systems, streaming
pulsar-user-group-loc-cn
Workspace for China local user group.
Stars: ✭ 19 (-99.57%)
Mutual labels:  streaming, messaging
research
research, notes & ideas on various subjects
Stars: ✭ 54 (-98.79%)
Mutual labels:  distributed-systems, messaging
openmessaging.github.io
OpenMessaging homepage
Stars: ✭ 12 (-99.73%)
Mutual labels:  streaming, queue
Rpc Websockets
JSON-RPC 2.0 implementation over WebSockets for Node.js and JavaScript/TypeScript
Stars: ✭ 344 (-92.26%)
Mutual labels:  messaging, distributed-systems
pulsar-client-node
Apache Pulsar NodeJS Client
Stars: ✭ 88 (-98.02%)
Mutual labels:  streaming, messaging

Jocko

ci gitter codecov

Kafka/distributed commit log service in Go.

Goals of this project:

  • Implement Kafka in Go
  • Protocol compatible with Kafka so Kafka clients and services work with Jocko
  • Make operating simpler
  • Distribute a single binary
  • Use Serf for discovery, Raft for consensus (and remove the need to run ZooKeeper)
  • Smarter configuration settings
    • Able to use percentages of disk space for retention policies rather than only bytes and time kept
    • Handling size configs when you change the number of partitions or add topics
  • Learn a lot and have fun

TODO

  • Producing
  • Fetching
  • Partition consensus and distribution
  • Protocol
    • Produce
    • Fetch
    • Metadata
    • Create Topics
    • Delete Topics
    • Consumer group [current task]
  • Discovery
  • API versioning [more API versions to implement]
  • Replication [first draft done - testing heavily now]

Hiatus Writing Book

I’m writing a book for PragProg called Building Distributed Services with Go. You can sign up on this mailing list and get updated when the book’s available. It walks you through building a distributed commit log from scratch. I hope it will help Jocko contributors and people who want to work on distributed services.

Reading

Project Layout

├── broker        broker subsystem
├── cmd           commands
│   └── jocko     command to run a Jocko broker and manage topics
├── commitlog     low-level commit log implementation
├── examples      examples running/using Jocko
│   ├── cluster   example booting up a 3-broker Jocko cluster
│   └── sarama    example producing/consuming with Sarama
├── protocol      golang implementation of Kafka's protocol
├── prometheus    wrapper around Prometheus' client lib to handle metrics
├── server        API subsystem
└── testutil      test utils
    └── mock      mocks of the various subsystems

Building

Local

  1. Clone Jocko

    $ go get github.com/travisjeffery/jocko
    
  2. Build Jocko

    $ cd $GOPATH/src/github.com/travisjeffery/jocko
    $ make build
    

    (If you see an error about dep not being found, ensure that $GOPATH/bin is in your PATH)

Docker

docker build -t travisjeffery/jocko:latest .

Contributing

See CONTRIBUTING for details on submitting patches and the contribution workflow.

License

Jocko is under the MIT license, see the LICENSE file for details.


Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].