Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Python: строим распределенную систему c PySyncObj

Блог компании WargamingPythonПрограммирование
Представьте, что у вас есть класс:
class MyCounter(object):
    def __init__(self):
        self.__counter = 0
    def incCounter(self):
        self.__counter += 1
    def getCounter(self):
        return self.__counter

И вы хотите сделать его распределённым. Просто наследуете его от SyncObj (передав ему список серверов, с которыми нужно синхронизироваться) и отмечаете декоратором @replicated все методы, которые изменяют внутреннее состояние класса:
class MyCounter(SyncObj):
    def __init__(self):
        super(MyCounter, self).__init__('serverA:4321', ['serverB:4321', 'serverC:4321'])
        self.__counter = 0
    @replicated
    def incCounter(self):
        self.__counter += 1
    def getCounter(self):
        return self.__counter

PySyncObj автоматически обеспечит репликацию вашего класса между серверами, отказоустойчивость (всё будет работать до тех пор, пока живо больше половины серверов), а также (при необходимости) асинхронный дамп содержимого на диск.
На базе PySyncObj можно строить различные распределенные системы, например распределенный мьютекс, децентрализованные базы данных, биллинговые системы и другие подобные штуки. Все те, где на первом месте стоит надёжность и отказоустойчивость.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Просмотры13K
Комментарии 24

Docker swarm mode (режим роя)

Блог компании red_mad_robotIT-инфраструктураВиртуализацияСерверное администрированиеDevOps

На хабре уже писали про Docker swarm mode (режим роя), который является новой фичей версии 1.12. Данная опция внесла небольшую путаницу в головы тех, кто знаком с отдельно стоящей реализацией Docker Swarm имевшей распространение ранее и не отличавшейся удобством настройки и использования. Однако, после добавления Swarm в коробку с Docker все стало намного проще, очевиднее и функциональнее.

Подробнее о том, как устроен новый кластер Docker контейнеров с точки зрения пользователя, а также о простом и удобном способе разворачивания сервисов Docker на произвольной инфраструктуре далее под катом.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Просмотры77K
Комментарии 60

Отказоустойчивая обработка 10M OAuth-токенов на Tarantool

Блог компании Mail.ru GroupВысокая производительностьPerlLuaTarantool

image


Многие уже наслышаны о производительности СУБД Tarantool, её возможностях и особенностях. Например, у него есть классное дисковое хранилище — Vinyl, кроме того, он умеет работать с JSON-документами. Но в многочисленных публикациях обходят стороной одну важную особенность. Обычно БД рассматривают просто как хранилище, но всё же отличительная черта Tarantool — это возможность писать код внутри и очень эффективно работать с этими данными. Под катом рассказ, как мы строили одну систему почти полностью внутри Tarantool, написанный в соавторстве с Игорем igorcoding Латкиным.

Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Просмотры9.3K
Комментарии 2

Достижимость нижней границы времени исполнения коммита распределенных отказоустойчивых транзакций

Высокая производительностьАнализ и проектирование системАлгоритмыПараллельное программированиеРаспределённые системы

Предисловие


Недавно прочитал очередную статью из серии: "мы лучше двухфазного коммита". Здесь я не буду анализировать содержания этой статьи (хотя, подумываю о том, чтобы дать развернутый анализ). Задача моего опуса — предложить самый эффективный вариант распределенного коммита с точки зрения временных задержек. Конечно, такой коммит дается высокой ценой. Однако цель — дать оценку и показать, что двухфазный коммит не является тормозным, как многие считают.


Стоит также отметить, что здесь не будет натурных экспериментов и фейковых сравнений. Будут просто даны алгоритмы и теоретический анализ. При желании, можно самостоятельно реализовать и проверить на практике. Конечно, было бы куда лучше, чтобы это было описано в текущей статье, но все упирается в свободное время и мотивацию. На мой взгляд, описать алгоритмы более важно, чем привести графики, т.к. графики по алгоритмам может нарисовать почти каждый, обратное же не верно.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Просмотры6K
Комментарии 7

TiKV — распределённая база данных key-value для cloud native

Блог компании ФлантOpen sourceСистемное администрированиеАдминистрирование баз данныхDevOps


28 августа организация CNCF (Cloud Native Computing Foundation), стоящая за Kubernetes, Prometheus и другими Open Source-проектами для современных облачных приложений, объявила о принятии нового продукта в свою «песочницу» — TiKV.

Эта распределённая, транзакционная база данных типа ключ-значение зародилась как дополнение к TiDB — распределённой СУБД, которая предлагает возможности OLTP и OLAP и обеспечивает совместимость с протоколом MySQL… Но давайте обо всём по порядку.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Просмотры5.2K
Комментарии 9

Как сервера договариваются друг с другом: алгоритм распределённого консенсуса Raft

Блог компании Dodo EngineeringАнализ и проектирование системАлгоритмыМатематикаРаспределённые системы
Когда кластеры достигают размеров в сотни, а иногда и тысячи машин, возникает вопрос о согласованности состояний серверов относительно друг друга. Алгоритм распределённого консенсуса Raft даёт самые строгие гарантии консистентности из возможных. В этой статье мы рассмотрим Raft с точки зрения инженера и постараемся ответить на вопросы «Как?» и «Почему?» он работает.



Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Просмотры14K
Комментарии 23

Raft в Tarantool. Как это работает и как этим пользоваться

Блог компании Mail.ru GroupIT-инфраструктураАлгоритмыХранение данныхTarantool

В прошлом году в Tarantool была проведена колоссальная работа по реализации синхронной репликации. При этом мы придерживались алгоритма Raft. Вся работа была разделена на два крупных этапа: так называемую кворумную запись, то есть синхронную репликацию, и автоматические выборы лидера.

Синхронная репликация появилась в релизе 2.5.1, а в конце октября в релизе 2.6.1 появилась поддержка автоматических выборов лидера на основе Raft.

Меня зовут Сергей Петренко, и я участвовал в разработке этих больших фич. Сегодня я расскажу, как они устроены, а также коснусь конфигурирования выборов лидера и новых возможностей, которые алгоритм Raft даёт пользователям Tarantool.
Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Просмотры3K
Комментарии 5

Синхронная репликация в Tarantool

Блог компании Mail.ru GroupВысокая производительностьLuaХранение данныхTarantool


Tarantool — это платформа для in-memory вычислений, где упор всегда делался на горизонтальную масштабируемость. То есть при нехватке мощности одного инстанса нужно добавить больше инстансов, а не больше ресурсов одному инстансу.

С самого начала из средств горизонтального масштабирования в Tarantool была только встроенная асинхронная репликация, которой для большинства задач хватало. При этом у нас не было синхронной репликации, заменить которую в некоторых задачах нельзя никаким внешним модулем.

Задача реализации синхронной репликации стояла перед командой разработчиков Tarantool долгие годы, к ней было совершено несколько подходов. И вот теперь в релизе 2.6 Tarantool обзавёлся синхронной репликацией и выборами лидера на базе алгоритма Raft.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Просмотры3.4K
Комментарии 3

Бэкапы для HashiCorp Vault с разными бэкендами

Блог компании ФлантСистемное администрированиеDevOps

Недавно мы публиковали статью про производительность Vault с разными бэкендами, а сегодня расскажем, как делать бэкапы — и снова на разных бэкендах: Consul, GCS (Google Cloud Storage), PostgreSQL и Raft.

Как известно, HashiCorp предоставляет нативный метод бэкапа только для одного бэкенда — Integrated Storage (Raft Cluster), представленного как GA в апреле прошлого года. В нем можно снять снапшот всего одним curl’ом и не беспокоиться о каких-либо нюансах.

В остальных же случаях придется выкручиваться самим, придумывая, как правильно реализовывать бэкап. Очевидно, что во время резервного копирования Vault часть данных может меняться, из-за чего мы рискуем получить некорректные данные. Поэтому важно искать пути для консистентного бэкапа.

Читать далее
Всего голосов 40: ↑40 и ↓0+40
Просмотры2.9K
Комментарии 6

Apache Ignite 3: распределённая БД своими руками, next level

Блог компании JUG Ru GroupOpen sourceРаспределённые системы

«В теории нет разницы между теорией и практикой. А на практике есть»
Йоги Берра

Распределённые системы — это вообще интересная и непростая тема, мы по ней проводим целую конференцию Hydra. А у опенсорсного проекта Apache Ignite (и его коммерческой версии GridGain) есть ещё и своя интересная специфика: эта база данных добивается производительности с помощью in-memory computing, помещая данные в оперативную память.

Сейчас компания GridGain готовит новые версии Apache Ignite 3 и GridGain 9. А ещё она недавно поучаствовала в Hydra, и в связи с этим мы решили спросить её: как выглядит работа над этими новыми версиями? C какими вопросами приходится сталкиваться, когда делаешь распределённую БД? Ответ компании — под катом.

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Просмотры2K
Комментарии 0