1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mefaso-akka-data-replication

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

АККА Data Replication

Это РАННИЙ ПРОСМОТР библиотеки для репликации данных в кластере АККА. Она представляет собой реплицированное хранилище данных в памяти, поддерживающее требования низкой задержки и высокой доступности. Данные должны быть так называемыми бесконфликтными реплицированными типами данных (CRDT), то есть они предоставляют монотонную функцию слияния, и изменения состояния всегда сходятся.

Для хорошего введения в CRDT вам следует посмотреть доклад «Последовательные структуры данных» Шона Криббса (Sean Cribbs).

CRDT нельзя использовать для всех типов задач, но когда это возможно, они обладают очень хорошими свойствами:

  • низкая задержка чтения и записи;
  • высокая доступность (устойчивость к разделению);
  • масштабируемость (отсутствие центрального координатора);
  • строгая конечная согласованность (конечная согласованность без конфликтов).

Встроенные типы данных:

  • счётчики: GCounter, PNCounter;
  • регистры: LWWRegister, Flag;
  • наборы: GSet, ORSet;
  • карты: ORMap, LWWMap, PNCounterMap.

Вы можете использовать свои собственные пользовательские типы данных, реализовав функцию merge признака ReplicatedData. Обратите внимание, что CRDT обычно хорошо сочетаются друг с другом, то есть вы можете использовать предоставленные типы данных для создания более богатых структур данных.

Актор Replicator реализует инфраструктуру для репликации данных. Он использует прямую репликацию и распространение на основе сплетен. Актор Replicator запускается на каждом узле кластера или группе узлов, помеченных определённой ролью. Он связывается с другими экземплярами Replicator, работающими на других узлах, с тем же путём (без адреса). Для удобства он обычно используется с расширением DataReplication Akka.

Краткий пример того, как его использовать:

class DataBot extends Actor with ActorLogging {
  import DataBot._
  import Replicator._

  val replicator = DataReplication(context.system).replicator
  implicit val cluster = Cluster(context.system)

  import context.dispatcher
  val tickTask = context.system.scheduler.schedule(5.seconds, 5.seconds, self, Tick)

  replicator ! Subscribe("key", self)

  def receive = {
    case Tick =>
      val s = ThreadLocalRandom.current().nextInt(97, 123).toChar.toString
      if (ThreadLocalRandom.current().nextBoolean()) {
        // add
        log.info("Adding: {}", s)
        replicator ! Update("key", ORSet(), WriteLocal)(_ + s)
      } else {
        // remove
        log.info("Removing: {}", s)
        replicator ! Update("key", ORSet(), WriteLocal)(_ - s)
      }

    case _: UpdateResponse => // ignore

    case Changed("key", data: ORSet) =>
      log.info("Current elements: {}", data.value)
  }

  override def postStop(): Unit = tickTask.cancel()

}

Полный исходный код этого примера находится в DataBot.scala (https://github.com/patriknw/akka-data-replication/blob/v0.8/src/test/scala/akka/contrib/datareplication/sample/DataBot.scala).

Более подробную документацию можно найти в ScalaDoc Replicator и связанных классов.

Два других примера:

Зависимость

Последняя версия akka-data-replication0.8. Эта версия зависит от Akka 2.3.6 и кросс-совместима со Scala 2.10.4 и 2.11.4.

Добавьте следующие строки в файл build.sbt:

resolvers += "patriknw at bintray" at "http://dl.bintray.com/patriknw/maven"

libraryDependencies += "com.github.patriknw" %% "akka-data-replication" % "0.8"

Дополнительные ресурсы

  • «Последовательные структуры данных». Структуры. Доклад Шона Криббса.

Сильная согласованность в конечном счёте и типы данных с бесконфликтной репликацией. Доклад Марка Шапиро.

Всестороннее исследование конвергентных и коммутативных типов данных с репликацией. Статья Марка Шапиро и соавторов.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Это ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР библиотеки для репликации данных в кластере Akka. Развернуть Свернуть
Scala и 2 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mefaso-akka-data-replication.git
git@api.gitlife.ru:oschina-mirror/mefaso-akka-data-replication.git
oschina-mirror
mefaso-akka-data-replication
mefaso-akka-data-replication
mine