• Stars
    star
    147
  • Rank 249,873 (Top 5 %)
  • Language
    C++
  • License
    Other
  • Created about 10 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Bruce

Bruce is a producer daemon for Apache Kafka. Bruce simplifies clients that send messages to Kafka, freeing them from the complexity of direct interaction with the Kafka cluster. Specifically, it handles the details of:

  • Routing messages to the proper brokers, and spreading the load evenly across multiple partitions for a given topic. Clients may optionally exercise control over partition assignment, such as ensuring that a group of related messages are all routed to the same partition, or even directly choosing a partition if the client knows the cluster topology.
  • Waiting for acknowledgements, and resending messages as necessary due to communication failures or Kafka-reported errors
  • Buffering messages to handle transient load spikes and Kafka-related problems
  • Tracking message discards when serious problems occur; Providing web-based discard reporting and status monitoring interfaces
  • Batching and compressing messages in a configurable manner for improved performance
  • Optional rate limiting of messages on a per-topic basis. This guards against buggy client code overwhelming the Kafka cluster with too many messages.

Bruce runs on each individual host that communicates with Kafka, receiving messages from local clients over a UNIX domain datagram socket. Clients write messages to Bruce's socket in a simple binary format. Once a client has written a message, no further interaction with Bruce is required. From that point onward, Bruce takes full responsibility for reliable message delivery. Bruce serves as a single intake point for a Kafka cluster, receiving messages from diverse clients regardless of what programming language a client is written in. The following client support for sending messages to Bruce is currently available:

Code contributions for clients in other programming languages are much appreciated. Technical details on how to send messages to Bruce are provided here. Support for running Bruce inside a Docker container is also available. Bruce runs on Linux, and has been tested on CentOS versions 7 and 6.5, and Ubuntu versions 15.04 LTS, 14.04.1 LTS, and 13.10. Bruce requires at least version 0.8 of Kafka.

Setting Up a Build Environment

To get Bruce working, you need to set up a build environment. Currently, instructions are available for CentOS 7, CentOS 6.5, Ubuntu (15.04 LTS, 14.04.1 LTS, and 13.10), and Debian 8.

Building and Installing Bruce

Once your build environment is set up, the next step is to build and install Bruce.

Running Bruce with Basic Configuration

Simple instructions for running Bruce with a basic configuration can be found here.

Sending Messages

Information on how to send messages to Bruce can be found here.

Status Monitoring

Information on status monitoring can be found here.

Design Overview

Before going into more details on Bruce's configuration options, it is helpful to have an understanding of Bruce's design, which is described here.

Detailed Configuration

Full details of Bruce's configuration options are provided here.

Troubleshooting

Information that may help with troubleshooting is provided here.

Modifying Bruce's Implementation

Information for developers interested in making custom modifications or contributing code to Bruce is provided here.

Getting Help

If you have questions about Bruce, contact Dave Peterson ([email protected]).


README.md: Copyright 2014 if(we), Inc.

README.md is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

You should have received a copy of the license along with this work. If not, see http://creativecommons.org/licenses/by-sa/4.0/.

More Repositories

1

digsby

Digsby = IM + Email + Social Networks
Python
201
star
2

infinite-scroll

Infinite Scroll for AngularJS
JavaScript
76
star
3

python-hipchat

Python
46
star
4

antelope

Antelope Realtime Events framework for feature engineering in agile machine learning environments.
Scala
26
star
5

client-storage

Client storage for AngularJS
JavaScript
23
star
6

cache-factory-angular

LRU cache with expiration support for AngularJS
JavaScript
21
star
7

netscaler-tool

Manage Citrix NetScaler using Nitro API
Python
18
star
8

autogrow

Autogrowing Textareas for AngularJS
JavaScript
13
star
9

monocle-api

API router focused on consistency, flexibility, and performance.
JavaScript
10
star
10

sip

SIP fork (C/C++ Python bindings generator)
C
8
star
11

satisfaction

The Next Generation Hadoop Scheduler
JavaScript
7
star
12

wx

wxWidgets (wxWebKitBranch-2.8)
C++
6
star
13

tasr

Tagged Avro Schema Repository
Python
5
star
14

brocade-tool

Monitor Brocade SAN Switches
Python
4
star
15

php-out

Terse output functions for effortless php templating.
PHP
2
star
16

urly

URL format converter for node
JavaScript
2
star
17

TraceOn

A simple PHP utility to trace(investigate) invocations of instance/static/global methods
PHP
2
star
18

ucarp

Tagged modifications to ucarp
Shell
1
star
19

ios-voting-stack

This is an iOS widget/component for making binary decisions on item.
Objective-C
1
star
20

connect-health-check

Healthcheck middleware for Connect apps
CoffeeScript
1
star
21

monocle-api-props

Monocle API's solution for verifying if deeply nested properties are set.
JavaScript
1
star
22

frontend-timing

A simple tool for measure frontend performance
JavaScript
1
star
23

hooks

Helper for version controlling git hooks
Python
1
star
24

tagged_test

Tagged C++ Testing framework, used by STIG. Simplified version.
C++
1
star
25

open-source-handbook

A handbook for how to open source projects at if(we).
1
star
26

tds

Application deployment system (TDS Deploys Stuff)
Python
1
star
27

api-client-js

Tagged API client for Node and the Browser
JavaScript
1
star
28

proximous

Configurable proxy middleware for node
JavaScript
1
star
29

homebrew-tagged

Homebrew recipes used at Tagged
Ruby
1
star