All Projects → devopsfaith → bloomfilter

devopsfaith / bloomfilter

Licence: Apache-2.0 License
Bloomfilter written in Golang, includes rotation and RPC

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to bloomfilter

Datakernel
Alternative Java platform, built from the ground up - with its own async I/O core and DI. Ultra high-performance, simple and minimalistic - redefines server-side programming, web-development and highload!
Stars: ✭ 87 (+42.62%)
Mutual labels:  rpc, crdt
exor filter
Erlang nif for xor_filter. 'Faster and Smaller Than Bloom and Cuckoo Filters'.
Stars: ✭ 29 (-52.46%)
Mutual labels:  bloom-filter, probabilistic-data-structures
Sleuth
A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services
Stars: ✭ 331 (+442.62%)
Mutual labels:  distributed-computing, rpc
rust-bloomfilter
🦀 Bloom filter implementation in Rust 🦀
Stars: ✭ 18 (-70.49%)
Mutual labels:  bloom-filter, probabilistic-data-structures
blex
Fast Bloom filter with concurrent accessibility, powered by :atomics module.
Stars: ✭ 34 (-44.26%)
Mutual labels:  bloom-filter, probabilistic-data-structures
bloom
An in-memory bloom filter with persistence and HTTP interface
Stars: ✭ 31 (-49.18%)
Mutual labels:  bloom-filter, probabilistic-data-structures
thinkgo
Public libraries and components for glang development.
Stars: ✭ 14 (-77.05%)
Mutual labels:  rpc
realtimemap-dotnet
A showcase for Proto.Actor - an ultra-fast distributed actors solution for Go, C#, and Java/Kotlin.
Stars: ✭ 47 (-22.95%)
Mutual labels:  distributed-computing
crdt
Dart implementation of Conflict-free Replicated Data Types (CRDTs)
Stars: ✭ 55 (-9.84%)
Mutual labels:  crdt
dicodile
Experiments for "Distributed Convolutional Dictionary Learning (DiCoDiLe): Pattern Discovery in Large Images and Signals"
Stars: ✭ 15 (-75.41%)
Mutual labels:  distributed-computing
sdkgen
sdkgen is a tool to help design, implement and maintain good APIs with minimal effort
Stars: ✭ 61 (+0%)
Mutual labels:  rpc
PFL-Non-IID
The origin of the Non-IID phenomenon is the personalization of users, who generate the Non-IID data. With Non-IID (Not Independent and Identically Distributed) issues existing in the federated learning setting, a myriad of approaches has been proposed to crack this hard nut. In contrast, the personalized federated learning may take the advantage…
Stars: ✭ 58 (-4.92%)
Mutual labels:  distributed-computing
blockchain-reading-list
A reading list on blockchain and related technologies, targeted at technical people who want a deep understanding of those topics.
Stars: ✭ 93 (+52.46%)
Mutual labels:  distributed-computing
Pudding
Pudding 是一款迷你级分布式服务框架
Stars: ✭ 24 (-60.66%)
Mutual labels:  rpc
polix
🚀 Node.js Web Framework
Stars: ✭ 32 (-47.54%)
Mutual labels:  rpc
future.batchtools
🚀 R package future.batchtools: A Future API for Parallel and Distributed Processing using batchtools
Stars: ✭ 77 (+26.23%)
Mutual labels:  distributed-computing
easyFL
An experimental platform to quickly realize and compare with popular centralized federated learning algorithms. A realization of federated learning algorithm on fairness (FedFV, Federated Learning with Fair Averaging, https://fanxlxmu.github.io/publication/ijcai2021/) was accepted by IJCAI-21 (https://www.ijcai.org/proceedings/2021/223).
Stars: ✭ 104 (+70.49%)
Mutual labels:  distributed-computing
scala-json-rpc
Let your servers and clients communicate over function calls! JSON-RPC 2.0 library for Scala and Scala.js
Stars: ✭ 38 (-37.7%)
Mutual labels:  rpc
Distributed-System-Algorithms-Implementation
Algorithms for implementation of Clock Synchronization, Consistency, Mutual Exclusion, Leader Election
Stars: ✭ 39 (-36.07%)
Mutual labels:  distributed-computing
Python-notes
Python related technologies used in work: crawler, data analysis, timing tasks, RPC, page parsing, decorator, built-in functions, Python objects, multi-threading, multi-process, asynchronous, redis, mongodb, mysql, openstack, etc.
Stars: ✭ 104 (+70.49%)
Mutual labels:  rpc

A Bloom filter is a space-efficient probabilistic data structure used to determine whether an element belongs to a set or not. The Bloom filter allows false positives (maybe in the set) but never false negatives (definitely not in set) . If you are new to bloomfilters, give Bloom Filters by Example a read.

The bloomfilter package is suitable for caching filtering, decentralized aggregation, search large chemical structure databases and many other applications. More specifically, we use this package in production with KrakenD to distributedly reject JWT tokens as it allows us to perform massive rejections with very little memory consumption. For instance, 100 million tokens of any size consume around 0.5GB RAM (with a rate of false positives of 1 in 999,925,224 tokens), and lookups are completed in constant time (k number of hashes). These numbers are impossible to get with a key-value or a relational database.

Implementations

This repository contains several bloomfilter implementations that you can use to solve different distributed computing problems. The solution starts from an optimized local implementation that adds rotation, RPC coordination, and generic rejecters. The packages are:

  • bitset: Implementations of bitsets for basic sets.
  • bloomfilter: Optimized implementation of the bloomfilter.
  • rotable: Implementation over the BF with 3 rotating buckets.
  • rpc: Implementation of an RPC layer over rotable.
  • krakend: Integration of the rpc package as a rejecter for KrakenD
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].