Volver al ranking

ucbrise/confluo

C++ucbrise.github.io/confluo/

Real-time Monitoring and Analysis of Data Streams

lock-freelogatomic
Crecimiento de estrellas
Estrellas
1.4k
Forks
200
Crecimiento semanal
Issues
20
1.2k1.4k
dic 2018jun 2021ene 2024jul 2026
README

Confluo

Build Status License

Confluo is a system for real-time monitoring and analysis of data, that supports:

  • high-throughput concurrent writes of millions of data points from multiple data streams;
  • online queries at millisecond timescale; and
  • ad-hoc queries using minimal CPU resources.

Please find detailed documentation here.

Installation

Required dependencies:

  • MacOS X or Unix-based OS; Windows is not yet supported.
  • C++ compiler that supports C++11 standard (e.g., GCC 5.3 or later)
  • CMake 3.2 or later
  • Boost 1.58 or later

For python client, you will additionally require:

  • Python 2.7 or later
  • Python Packages: setuptools, six 1.7.2 or later

For java client, you will additionally require:

  • Java JDK 1.7 or later
  • ant 1.6.2 or later

Source Build

To download and install Confluo, use the following commands:

git clone https://github.com/ucbrise/confluo.git
cd confluo
mkdir build
cd build
cmake ..
make -j && make test && make install

Using Confluo

While Confluo supports multiple execution modes, the simplest way to get started is to start Confluo as a server daemon and query it using one of its client APIs.

To start the server daemon, run:

confluod --address=127.0.0.1 --port=9090

Here's some sample usage of the Python API:

import sys
from confluo.rpc.client import RpcClient
from confluo.rpc.storage import StorageMode

# Connect to the server
client = RpcClient("127.0.0.1", 9090)

# Create an Atomic MultiLog with given schema for a performance log
schema = """{
  timestamp: ULONG,
  op_latency_ms: DOUBLE,
  cpu_util: DOUBLE,
  mem_avail: DOUBLE,
  log_msg: STRING(100)
}"""
storage_mode = StorageMode.IN_MEMORY
client.create_atomic_multilog("perf_log", schema, storage_mode)

# Add an index
client.add_index("op_latency_ms")

# Add a filter
client.add_filter("low_resources", "cpu_util>0.8 || mem_avail<0.1")

# Add an aggregate
client.add_aggregate("max_latency_ms", "low_resources", "MAX(op_latency_ms)")

# Install a trigger
client.install_trigger("high_latency_trigger", "max_latency_ms > 1000")

# Load some data
off1 = client.append([100.0, 0.5, 0.9,  "INFO: Launched 1 tasks"])
off2 = client.append([500.0, 0.9, 0.05, "WARN: Server {2} down"])
off3 = client.append([1001.0, 0.9, 0.03, "WARN: Server {2, 4, 5} down"])

# Read the written data
record1 = client.read(off1)
record2 = client.read(off2)
record3 = client.read(off3)

# Query using indexes
record_stream = client.execute_filter("cpu_util>0.5 || mem_avail<0.5")
for r in record_stream:
  print r

# Query using filters
record_stream = client.query_filter("low_resources", 0, sys.maxsize)
for r in record_stream:
  print r

# Query an aggregate
print client.get_aggregate("max_latency_ms", 0, sys.maxsize)

# Query alerts generated by a trigger
alert_stream = client.get_alerts(0, sys.maxsize, "high_latency_trigger")
for a in alert_stream:
  print a

Contributing

Please create a GitHub issue to file a bug or request a feature. We welcome pull-requests, but request that you review the pull-request process before submitting one.

Please subscribe to the mailing list (confluo-dev@googlegroups.com) for project announcements, and discussion regarding use-cases and development.

Repositorios relacionados
spacejam/sled

the champagne of beta embedded databases

Rustcrates.ioApache License 2.0incredibly-spicydatabase
9.1k427
crossbeam-rs/crossbeam

Tools for concurrent programming in Rust

Rustcrates.ioApache License 2.0synchronizationconcurrency
8.5k563
JCTools/JCTools

JavaMavenApache License 2.0concurrencydata-structures
jctools.github.io/JCTools
3.9k591
khizmax/libcds

A C++ library of Concurrent Data Structures

C++Boost Software License 1.0lock-freecontainers
libcds.sourceforge.net/doc/cds-api/index.html
2.7k365
exchange-core/exchange-core

Ultra-fast matching engine written in Java based on LMAX Disruptor, Eclipse Collections, Real Logic Agrona, OpenHFT, LZ4 Java, and Adaptive Radix Trees.

JavaMavenApache License 2.0trading-platformtrading-api
2.6k966
jonhoo/left-right

A lock-free, read-optimized, concurrency primitive.

Rustcrates.ioApache License 2.0concurrencymultithreading
2.3k109
rigtorp/awesome-lockfree

A collection of resources on wait-free and lock-free programming

assemblycpp
2.1k187
cornelk/hashmap

A Golang lock-free thread-safe HashMap optimized for fastest read access.

GoGo ModulesApache License 2.0golanglock-free
1.9k121
max0x7ba/atomic_queue

C++14 concurrent lock-free low-latency queue.

C++MIT Licenselock-freelockfree
max0x7ba.github.io/atomic_queue/html/benchmarks.html
1.9k216
stong/how-to-exploit-a-double-free

How to exploit a double free vulnerability in 2021. Use After Free for Dummies

PythonPyPIuse-after-freedouble-free
1.4k64
rigtorp/SPSCQueue

A bounded single-producer single-consumer wait-free and lock-free queue written in C++11

C++MIT Licensequeueconcurrency
1.3k165
P-p-H-d/mlib

M*LIB is a library of generic and type safe containers / data structures in pure C language (C99 / C11) for a wide collection of container (comparable to the C++ STL).

CBSD 2-Clause "Simplified" Licensecgeneric
1.1k98