All Projects → hekate-io → hekate

hekate-io / hekate

Licence: Apache-2.0 License
Java Library for Distributed Services

Programming Languages

java
68154 projects - #9 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to hekate

Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (+1258.82%)
Mutual labels:  cluster, distributed
horse-messaging
Open Source Messaging Framework. Queues, Channels, Events, Transactions, Distributed Cache
Stars: ✭ 65 (+282.35%)
Mutual labels:  messaging, distributed
Multi-Node-TimescaleDB
The multi-node setup of TimescaleDB 🐯🐯🐯 🐘 🐯🐯🐯
Stars: ✭ 42 (+147.06%)
Mutual labels:  cluster, distributed
Fluentdispatch
🌊 .NET Standard 2.1 framework which makes easy to scaffold distributed systems and dispatch incoming load into units of work in a deterministic way.
Stars: ✭ 152 (+794.12%)
Mutual labels:  cluster, distributed
docs
Documentation repo of nebula orchestration system
Stars: ✭ 16 (-5.88%)
Mutual labels:  cluster, distributed
Gateway
🚀构建分布式即时聊天、消息推送系统。 Building distributed instant messaging, push notification systems.
Stars: ✭ 188 (+1005.88%)
Mutual labels:  cluster, distributed
hazelcast-csharp-client
Hazelcast .NET Client
Stars: ✭ 98 (+476.47%)
Mutual labels:  scalability, distributed
Distgatling
Distributed Gatling
Stars: ✭ 89 (+423.53%)
Mutual labels:  cluster, distributed
slock
High-performance distributed sync service and atomic DB
Stars: ✭ 50 (+194.12%)
Mutual labels:  cluster, distributed
nebula
A distributed, fast open-source graph database featuring horizontal scalability and high availability
Stars: ✭ 8,196 (+48111.76%)
Mutual labels:  scalability, distributed
Azos
A to Z Sky Operating System / Microservice Chassis Framework
Stars: ✭ 137 (+705.88%)
Mutual labels:  cluster, distributed
k8s-lemp
LEMP stack in a Kubernetes cluster
Stars: ✭ 74 (+335.29%)
Mutual labels:  cluster, distributed
Scaleable Crawler With Docker Cluster
a scaleable and efficient crawelr with docker cluster , crawl million pages in 2 hours with a single machine
Stars: ✭ 96 (+464.71%)
Mutual labels:  cluster, distributed
Cookim
Distributed web chat application base websocket built on akka.
Stars: ✭ 198 (+1064.71%)
Mutual labels:  cluster, distributed
Raspberry Pi Dramble
Raspberry Pi Kubernetes cluster that runs HA/HP Drupal 8
Stars: ✭ 1,317 (+7647.06%)
Mutual labels:  cluster, distributed
WatsonCluster
A simple C# class using Watson TCP to enable a one-to-one high availability cluster.
Stars: ✭ 18 (+5.88%)
Mutual labels:  cluster, messaging
Zato
ESB, SOA, REST, APIs and Cloud Integrations in Python
Stars: ✭ 889 (+5129.41%)
Mutual labels:  cluster, scalability
Memento
Fairly basic redis-like hashmap implementation on top of a epoll TCP server.
Stars: ✭ 74 (+335.29%)
Mutual labels:  cluster, distributed
manager
The API endpoint that manages nebula orchestrator clusters
Stars: ✭ 28 (+64.71%)
Mutual labels:  cluster, distributed
ddrt
An elixir implementation of Rtree, optimized for fast updates.
Stars: ✭ 38 (+123.53%)
Mutual labels:  cluster, distributed

Hekate.io

Java Library for Distributed Services

build codecov Maven Central Javadocs

License

Open source Apache License v2.0

Features

  • Distributed Service Discovery

    • Decentralized Service Discovery (based on performance-optimized Gossip protocol)
    • Easy integration into existing infrastructure
    • User-defined Service Properties and Roles
    • Cluster Event Listeners
    • Service Topology Views and Filtering APIs
    • Health Monitoring and Split-brain Detection
  • Messaging

    • Synchronous and Asynchronous Messaging (backed by Netty)
    • Cluster-aware Load Balancing and Routing
    • SSL/TLS Encryption of Network Communications (optional)
    • Back Pressure Policies
    • Error Retry Policies
    • Pluggable Serialization
  • Remote Procedure Calls (RPC)

    • Type-safe Invocation of Remote Java Services
    • Automatic Discovery and Load Balancing
    • Synchronous and Asynchronous APIs
    • Multi-node Broadcasting and Aggregation of Results
    • Back Pressure Policies
    • Error Retry Policies
    • ...and everything from the "Messaging" section above:)
  • Cluster-wide Singleton Service (aka Leader Election )

    • Decentralized Leader Election
    • Followers are Aware of the Current Leader
    • Leader can Dynamically Yield Leadership
  • Distributed Locks

    • Synchronous and Asynchronous Reentrant Locks
    • Decentralized Lock Management
    • Configurable Lock Groups (aka Lock Regions)
  • Spring Boot/Framework Support (optional)

  • Metrics

  • Raft-based Replicated State Machines (planned)

Documentation

Code Examples

Quickstart for Standalone Java Application

public class MyApplication{
    public static void main(String[] args) throws Exception {
        Hekate hekate = new HekateBootstrap()
            .withNamespace("my-cluster")
            .withNodeName("my-node")
            .join();
        
        System.out.println("Cluster topology: " + hekate.cluster().topology());
    }
}

Quickstart for Spring Boot Application

@EnableHekate // <-- Enable Hekate integration.
@SpringBootApplication
public class MyApplication {
    @Autowired
    private Hekate hekate;

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
    
    @PostConstruct
    public void start(){
        System.out.println("Cluster topology: " + hekate.cluster().topology());
    }
}

More Examples:

Please see the hekate-io/hekate-examples project for more examples.

Maven artifacts

  • For projects based on Spring Boot:
<dependency>
    <groupId>io.hekate</groupId>
    <artifactId>hekate-spring-boot</artifactId>
    <version>4.0.0</version>
</dependency>
  • For projects based on Spring Framework:
<dependency>
    <groupId>io.hekate</groupId>
    <artifactId>hekate-spring</artifactId>
    <version>4.0.0</version>
</dependency>
  • For standalone applications:
<dependency>
    <groupId>io.hekate</groupId>
    <artifactId>hekate-core</artifactId>
    <version>4.0.0</version>
</dependency>

How to build

Software requirements:

  • Latest stable Java SDK (8+)
  • Latest stable Docker (required for tests only)

Build (no tests):

  • cd to the project's root folder
  • run ./mvnw clean package -DskipTests=true

Build (with tests):

  • cd to the project's root folder
  • make a copy of test.properties file with name my_test.properties
  • edit my_test.properties according to your environment
  • run docker-compose up -d to prepare Docker-based testing infrastructure
  • run ./mvnw clean package

Release History

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].