All Projects → Romeh → akka-persistance-ignite

Romeh / akka-persistance-ignite

Licence: Apache-2.0 license
Akka persistance plugin implementation with Apache Ignite

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to akka-persistance-ignite

akka-persistence-dynamodb
DynamoDBJournal for Akka Persistence
Stars: ✭ 85 (+325%)
Mutual labels:  journal, akka, akka-persistence
Akka
Examples and explanations of how Akka toolkit works
Stars: ✭ 20 (+0%)
Mutual labels:  akka, akka-persistence
akka-persistence-gcp-datastore
akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode.
Stars: ✭ 18 (-10%)
Mutual labels:  akka, akka-persistence
akka-persistence-foundationdb
A replicated Akka Persistence journal backed by FoundationDB
Stars: ✭ 43 (+115%)
Mutual labels:  akka, akka-persistence
pdo-snapshot-store
PDO Snapshot Store
Stars: ✭ 24 (+20%)
Mutual labels:  eventsourcing, snapshot-store
akka-cookbook
提供清晰、实用的Akka应用指导
Stars: ✭ 30 (+50%)
Mutual labels:  akka, akka-persistence
ecommerce
A project for exploring Akka with Scala
Stars: ✭ 24 (+20%)
Mutual labels:  akka, akka-persistence
Akka Persistence Cassandra
A replicated Akka Persistence journal backed by Apache Cassandra
Stars: ✭ 306 (+1430%)
Mutual labels:  akka, eventsourcing
Aecor
Pure functional event sourcing runtime
Stars: ✭ 299 (+1395%)
Mutual labels:  akka, eventsourcing
akka-persistence-spanner
Spanner plugin for Akka Persistence
Stars: ✭ 12 (-40%)
Mutual labels:  akka, akka-persistence
generator-jvm
Generate JVM (java, kotlin, scala) project with gradle / maven / sbt build systems and docker / docker-compose for rapid development
Stars: ✭ 40 (+100%)
Mutual labels:  akka, akka-persistence
akka-persistence-s3
akka-persistence journal/snapshot plugin for AWS S3(support aws sdk for java v2)
Stars: ✭ 19 (-5%)
Mutual labels:  akka, akka-persistence
atomic-store
Atomic event store for Scala/Akka
Stars: ✭ 17 (-15%)
Mutual labels:  akka, akka-persistence
akka-persistence-redis
Akka persistence plugin for Redis
Stars: ✭ 27 (+35%)
Mutual labels:  journal, akka-persistence
simplexspatial
The Reactive Geospatial Server
Stars: ✭ 17 (-15%)
Mutual labels:  akka, akka-persistence
raccoon
Raccoon is a high-throughput, low-latency service to collect events in real-time from your web, mobile apps, and services using multiple network protocols.
Stars: ✭ 159 (+695%)
Mutual labels:  eventsourcing
telepooz
Functional Telegram Bot API wrapper for Scala on top of akka, circe, cats, and shapeless
Stars: ✭ 26 (+30%)
Mutual labels:  akka
jose-reviews
Reviews for the Journal of Open Source Education (JOSE)
Stars: ✭ 29 (+45%)
Mutual labels:  journal
endless
Scala library to describe sharded and event sourced entities using tagless-final algebras
Stars: ✭ 70 (+250%)
Mutual labels:  akka
EventStore-Client-NodeJS
A NodeJS client for Event Store
Stars: ✭ 139 (+595%)
Mutual labels:  eventsourcing

akka-persistence-ignite (Java API)Twitter Follow

Codacy Badge

Build Status Maven Central

A journal and snapshot store plugin for Akka Persistence using Apache Ignite.

alt text

This is mainly using Apache ignite with akka persistence to provide journal and snapshot store by using the partitioned caches and benefit from the distributed highly available data grid features plus the nice query and data computations features in Ignite that can be used to have normalized views from the event store and do analytical jobs over them despite it is advised to keep write nodes separate from read nodes for better scalability

Akka and Ignite used versions:

Akka version :2.5.18+ , Ignite Version :2.7.0+

Journal plugin

  • All operations required by the Akka Persistence journal plugin API are fully supported.
  • it support storing the tags of the events (event tagging)
  • It use Apache Ignite binary serialization for its queries
  • Events serialization will be based into the types serializers definition in your Akka configuration
  • It use apache ignite partitioned cache with default number of backups to 1 , that can be changed into reference.conf file.

Snapshot store plugin

How to use

Enable plugins

akka.persistence.journal.plugin = "akka.persistence.journal.ignite"
akka.persistence.snapshot-store.plugin = "akka.persistence.snapshot.ignite"

Maven dependency

        <dependency>
            <groupId>io.github.romeh</groupId>
            <artifactId>akka-persistence-ignite</artifactId>
            <version>1.1.1</version>
        </dependency>

please check the project pom.xml for maven repo configuration

Configure Ignite data grid properties , default configured on localhost.

ignite {
  //to start client or server node to connect to Ignite data cluster 
  isClientNode = false
  // for ONLY testing we use localhost
  // used for grid cluster connectivity
  tcpDiscoveryAddresses = "localhost"
  metricsLogFrequency = 0
  // thread pools used by Ignite , should based into target machine specs
  queryThreadPoolSize = 4
  dataStreamerThreadPoolSize = 1
  managementThreadPoolSize = 2
  publicThreadPoolSize = 4
  systemThreadPoolSize = 2
  rebalanceThreadPoolSize = 1
  asyncCallbackPoolSize = 4
  peerClassLoadingEnabled = false
  // to enable or disable durable memory persistance
  enableFilePersistence = true
  // used for grid cluster connectivity, change it to suit your configuration 
  igniteConnectorPort = 11211
  // used for grid cluster connectivity , change it to suit your configuration 
  igniteServerPortRange = "47500..47509"
  //durable memory persistance storage file system path , change it to suit your configuration 
  ignitePersistenceFilePath = "./data"
}

Contributions are more then welcomed:

Please free to jump and help will be highly appreciated

TODO (enhancement issues created for tracking):

  • Persistence Query to be implemented but it could be not needed as we can use the Apache Ignite sql and text query capabilities
  • Performance testing policy needed to be defined and executed
  • Adding HTTPS support
  • Performance test ignite client node vs server node connectivity
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].