{"id":26241106,"url":"https://github.com/hekate-io/hekate","last_synced_at":"2025-04-23T04:37:38.850Z","repository":{"id":52839396,"uuid":"84603051","full_name":"hekate-io/hekate","owner":"hekate-io","description":"Java Library for Distributed Services","archived":false,"fork":false,"pushed_at":"2024-09-21T23:01:00.000Z","size":7362,"stargazers_count":18,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T22:11:19.776Z","etag":null,"topics":["cloud","cluster","discovery","distributed","java","kubernetes","messaging","microservices","scalability","spring-boot"],"latest_commit_sha":null,"homepage":"https://hekate.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hekate-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-03-10T21:43:25.000Z","updated_at":"2024-06-27T21:19:09.000Z","dependencies_parsed_at":"2023-01-25T22:01:51.732Z","dependency_job_id":"7194f9e0-1be1-470e-8d23-264735745267","html_url":"https://github.com/hekate-io/hekate","commit_stats":{"total_commits":1107,"total_committers":4,"mean_commits":276.75,"dds":"0.0036133694670279493","last_synced_commit":"cf577c98e66cdcc9c10d582da006c22b0d8da8fa"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hekate-io%2Fhekate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hekate-io%2Fhekate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hekate-io%2Fhekate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hekate-io%2Fhekate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hekate-io","download_url":"https://codeload.github.com/hekate-io/hekate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250372617,"owners_count":21419719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","cluster","discovery","distributed","java","kubernetes","messaging","microservices","scalability","spring-boot"],"created_at":"2025-03-13T08:19:20.313Z","updated_at":"2025-04-23T04:37:38.825Z","avatar_url":"https://github.com/hekate-io.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hekate.io\n\nJava Library for Distributed Services\n\n[![build](https://github.com/hekate-io/hekate/workflows/Build/badge.svg?branch=master)](https://github.com/hekate-io/hekate/actions)\n[![codecov](https://codecov.io/gh/hekate-io/hekate/branch/master/graph/badge.svg)](https://codecov.io/gh/hekate-io/hekate)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.hekate/hekate-all/badge.svg)](https://search.maven.org/search?q=io.hekate)\n[![Javadocs](http://javadoc.io/badge/io.hekate/hekate-all.svg)](http://javadoc.io/doc/io.hekate/hekate-all)\n\n## License\nOpen source [Apache License v2.0](http://www.apache.org/licenses/)  \n\n## Features\n\n- **Distributed Service Discovery**\n    - Decentralized Service Discovery (based on performance-optimized [Gossip](https://en.wikipedia.org/wiki/Gossip_protocol) protocol)\n    - Easy integration into existing infrastructure\n        - Clouds (based on Apache JClouds)\n            - Amazon EC2 and S3\n            - Google Cloud Storage and Compute Engine\n            - Azure Blob Storage\n            - etc\n        - Kubernetes    \n        - ZooKeeper\n        - Etcd\n        - Consul\n        - IP Multicast\n        - Shared Database (JDBC-based)\n        - Shared File System\n    - User-defined Service Properties and Roles\n    - Cluster Event Listeners    \n    - Service Topology Views and Filtering APIs\n    - Health Monitoring and Split-brain Detection\n    \n- **Messaging**\n    - Synchronous and Asynchronous Messaging (backed by [Netty](https://netty.io))\n    - Cluster-aware Load Balancing and Routing\n    - SSL/TLS Encryption of Network Communications (optional)\n    - Back Pressure Policies\n    - Error Retry Policies\n    - Pluggable Serialization\n        - Google Protocol Buffers (_work in progress_)\n        - JDK Serialization\n        - Manual Serialization\n        \n- **Remote Procedure Calls (RPC)**\n    - Type-safe Invocation of Remote Java Services\n    - Automatic Discovery and Load Balancing\n    - Synchronous and Asynchronous APIs\n    - Multi-node Broadcasting and Aggregation of Results\n    - Back Pressure Policies\n    - Error Retry Policies\n    - ...and everything from the \"Messaging\" section above:)\n    \n- **Cluster-wide Singleton Service (aka Leader Election )**\n    - Decentralized Leader Election\n    - Followers are Aware of the Current Leader\n    - Leader can Dynamically Yield Leadership\n\n- **Distributed Locks**\n    - Synchronous and Asynchronous Reentrant Locks\n    - Decentralized Lock Management\n    - Configurable Lock Groups (aka Lock Regions)\n                \n- **Spring Boot/Framework Support (optional)**\n    - Spring Boot Auto-configurations and @Annotations\n    - Spring-compliant Beans\n    - Spring XML Schema\n\n- **Metrics**\n    - Internal Metrics Recording and Publishing via [Micrometer.io](https://micrometer.io/) \n\n- **Raft-based Replicated State Machines (_work in progress_)**\n\n\n## Documentation\n\n- [Javadocs](http://javadoc.io/doc/io.hekate/hekate-all/) (Follow ~~the White Rabbit~~ `[« start here]` marks)\n- Reference Guide (coming soon...) \n- [Spring Boot Properties Reference](http://javadoc.io/doc/io.hekate/hekate-all/latest/spring-boot.properties.txt)\n\n## Code Examples\n\nQuickstart for **Standalone** Java Application\n```java\npublic class MyApplication{\n    public static void main(String[] args) throws Exception {\n        Hekate hekate = new HekateBootstrap()\n            .withNamespace(\"my-cluster\")\n            .withNodeName(\"my-node\")\n            .join();\n        \n        System.out.println(\"Cluster topology: \" + hekate.cluster().topology());\n    }\n}\n\n```\n\nQuickstart for **Spring Boot** Application\n```java\n@EnableHekate // \u003c-- Enable Hekate integration.\n@SpringBootApplication\npublic class MyApplication {\n    @Autowired\n    private Hekate hekate;\n\n    public static void main(String[] args) {\n        SpringApplication.run(MyApplication.class, args);\n    }\n    \n    @PostConstruct\n    public void start(){\n        System.out.println(\"Cluster topology: \" + hekate.cluster().topology());\n    }\n}\n```\n\n__More Examples__: \n\nPlease see the **[hekate-io/hekate-examples](https://github.com/hekate-io/hekate-examples)** project for more examples.\n\n\n## Maven artifacts\n\n * For projects based on **Spring Boot**:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.hekate\u003c/groupId\u003e\n    \u003cartifactId\u003ehekate-spring-boot\u003c/artifactId\u003e\n    \u003cversion\u003e4.1.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n * For projects based on **Spring Framework**:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.hekate\u003c/groupId\u003e\n    \u003cartifactId\u003ehekate-spring\u003c/artifactId\u003e\n    \u003cversion\u003e4.1.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n * For standalone applications:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.hekate\u003c/groupId\u003e\n    \u003cartifactId\u003ehekate-core\u003c/artifactId\u003e\n    \u003cversion\u003e4.1.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n * Other artifacts:\n    - **Cluster Bootstrapping** (seed node discovery)\n        - [hekate-jclouds-core](hekate-jclouds-core/) - Integration with [Apache JClouds](https://jclouds.apache.org) \n          for cloud environments.\n        - [hekate-jclouds-aws](hekate-jclouds-aws/) - Extended integration with [Amazon EC2](https://aws.amazon.com) cloud.\n        - [hekate-kubernetes](hekate-kubernetes/) - Integration with [Kubernetes](https://kubernetes.io) \n        - [hekate-zookeeper](hekate-zookeeper/) - Integration with [Apache ZooKeeper](https://zookeeper.apache.org) \n        - [hekate-etcd](hekate-etcd/) - Integration with [Etcd](https://github.com/etcd-io/etcd) \n        - [hekate-consul](hekate-consul/) - Integration with [Consul](https://github.com/hashicorp/consul) \n\n## How to build\n\n### Software requirements:\n\n - Latest stable [Java SDK](https://adoptopenjdk.net/) (8, 11, 17)\n - Latest stable [Docker](https://www.docker.com) (required for tests only)\n\n\n### Build (no tests):\n\n - `cd` to the project's root folder\n - run `./mvnw clean package -DskipTests=true`\n \n### Build (with tests):\n \n  - cd to the project's root folder\n  - make a copy of `test.properties` file with name `my_test.properties`\n  - edit `my_test.properties` according to your environment\n  - run `docker-compose up -d` to prepare Docker-based testing infrastructure\n  - run `./mvnw clean package`\n  \n## Release History\n\n - v.4.1.3 (25-Nov-2022) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.4.1.3)]\n\n - v.4.1.2 (12-May-2022) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.4.1.2)]\n\n - v.4.1.1 (11-May-2022) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.4.1.1)]\n\n - v.4.1.0 (3-Apr-2022) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.4.1.0)]\n\n - v.4.0.0 (20-Mar-2021) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.4.0.0)]\n\n - v.3.11.0 (24-Oct-2020) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.11.0)]\n \n - v.3.10.0 (4-Jul-2020) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.10.0)]\n\n - v.3.9.0 (8-May-2020) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.9.0)]\n\n - v.3.8.0 (29-Feb-2020) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.8.0)]\n \n - v.3.7.0 (3-Feb-2020) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.7.0)]\n\n - v.3.6.0 (13-Oct-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.6.0)]\n \n - v.3.5.0 (14-Aug-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.5.0)]\n \n - v.3.4.1 (4-Jul-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.4.1)]\n\n - v.3.4.0 (29-Jun-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.4.0)]\n \n - v.3.3.0 (19-Apr-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.3.0)]\n \n - v.3.2.0 (5-Apr-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.2.0)]\n \n - v.3.1.0 (28-Mar-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.1.0)]\n \n - v.3.0.0 (19-Mar-2019) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.3.0.0)]\n \n - v.2.6.0 (22-Aug-2018) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.2.6.0)]\n\n - v.2.5.0 (4-Aug-2018) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.2.5.0)]\n\n - v.2.4.1 (15-Jul-2018) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.2.4.1)]\n\n - v.2.4.0 (15-Jul-2018) - [[release notes](https://github.com/hekate-io/hekate/releases/tag/v.2.4.0)]\n\n - [...and so on](https://github.com/hekate-io/hekate/releases)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhekate-io%2Fhekate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhekate-io%2Fhekate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhekate-io%2Fhekate/lists"}