All Projects → elixir-toniq → hlclock

elixir-toniq / hlclock

Licence: Apache-2.0 License
Hybrid Logical Clocks for Elixir

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to hlclock

traffic
Massively real-time traffic streaming application
Stars: ✭ 25 (-45.65%)
Mutual labels:  distributed-systems
file management sys
file_management_sys 是一个文件共享系统,包括前端文件展示系统和后台管理系统,基于SpringBoot + MyBatis实现。前端文件展示系统包括文件分类和展示界面,文件搜索和文件上传等模块。后台管理系统包含文件管理,权限管理等模块。
Stars: ✭ 60 (+30.43%)
Mutual labels:  distributed-systems
asparagus
An easy to use task scheduler for distributed systems
Stars: ✭ 14 (-69.57%)
Mutual labels:  distributed-systems
consistent-hashing
an implementation of Consistent Hashing in pure Ruby using an AVL tree
Stars: ✭ 40 (-13.04%)
Mutual labels:  distributed-systems
Systemizer
A system design tool that allows you to simulate data flow of distributed systems.
Stars: ✭ 1,219 (+2550%)
Mutual labels:  distributed-systems
pixie
Instant Kubernetes-Native Application Observability
Stars: ✭ 3,238 (+6939.13%)
Mutual labels:  distributed-systems
golearn
🔥 Golang basics and actual-combat (including: crawler, distributed-systems, data-analysis, redis, etcd, raft, crontab-task)
Stars: ✭ 36 (-21.74%)
Mutual labels:  distributed-systems
auklet
Auklet is a high performance storage engine based on Openstack Swift
Stars: ✭ 86 (+86.96%)
Mutual labels:  distributed-systems
b-rabbit
A thread safe library that aims to provide a simple API for interfacing with RabbitMQ. Built on top of rabbitpy, the library make it very easy to use the RabbitMQ message broker with just few lines of code. It implements all messaging pattern used by message brokers
Stars: ✭ 15 (-67.39%)
Mutual labels:  distributed-systems
reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-63.04%)
Mutual labels:  distributed-systems
IoTPy
Python for streams
Stars: ✭ 24 (-47.83%)
Mutual labels:  distributed-systems
NautilusCSharp
The open-core for enterprise-grade algorithmic trading infrastructure
Stars: ✭ 16 (-65.22%)
Mutual labels:  distributed-systems
transit
Massively real-time city transit streaming application
Stars: ✭ 20 (-56.52%)
Mutual labels:  distributed-systems
MIT6.824-2017-Chinese
A Chinese version of MIT 6.824 (Distributed System)
Stars: ✭ 67 (+45.65%)
Mutual labels:  distributed-systems
Gauntlet
🔖 Guides, Articles, Podcasts, Videos and Notes to Build Reliable Large-Scale Distributed Systems.
Stars: ✭ 336 (+630.43%)
Mutual labels:  distributed-systems
nkn-shell-daemon
NKN shell daemon
Stars: ✭ 29 (-36.96%)
Mutual labels:  distributed-systems
coolbeans
Coolbeans is a distributed work queue that implements the beanstalkd protocol.
Stars: ✭ 56 (+21.74%)
Mutual labels:  distributed-systems
django-celery-fulldbresult
Django Celery DB Backend that keeps enough info to retry a task.
Stars: ✭ 37 (-19.57%)
Mutual labels:  distributed-systems
fjage
Framework for Java and Groovy Agents
Stars: ✭ 19 (-58.7%)
Mutual labels:  distributed-systems
sworm
A user-friendly distributed process registry and process supervisor
Stars: ✭ 20 (-56.52%)
Mutual labels:  distributed-systems

HLClock

Build Status Hex pm

About

Hybrid Logical Clocks (HLC) provide a one-way causality detection using a combination of logical time and physical NTP timestamp. This library adds an additional mechanism for resolving conflicts between timestamps by adding a unique node id to each HLC timestamp.

These timestamps can be used in place of standard NTP timestamps in order to provide consistent snapshots and causality tracking. HLCs have a fixed space requirement and are bounded close to physical timestamps.

Installation

First, add HLClock to your mix.exs dependencies.

def deps do
  [{:hlclock, "~> 1.0"}]
end

Usage

Starting in version 1.0.0, the HLClock.Server is not started as an application automatically. HLClock.start_link/1 is as a short cut to manually start a process:

{:ok, clock} = HLClock.start_link()
{:ok, ts} = HLClock.send_timestamp(clock)

In practice, it is best to have a single HLClock running on any given node. Toward that end, HLClock also provides a child_spec that accepts all standard GenServer opts:

children = [
  {HLClock, name: :my_hlc_server},
]
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].