![[СПб, Анонс] Встреча CodeFreeze с Александром Чепурным про блокчейн для разработчиков - 1 image](https://www.pvsm.ru/images/2016/12/08/spb-anons-vstrecha-CodeFreeze-s-aleksandrom-chepurnym-pro-blokchein-dlya-razrabotchikov.png)
В четверг, 15 декабря, в 20:00 в офисе компании SEMrush состоится встреча с Александром Чепурным, сотрудником IOHK Research. Тема встречи — блокчейн для разработчиков. В данной сессии будет рассказано все о технологии: от самых основ до деталей различных проблем и атак.
Читать полностью »
Рубрика «distributed systems» - 3
[СПб, Анонс] Встреча CodeFreeze с Александром Чепурным про блокчейн для разработчиков
2016-12-08 в 10:45, admin, рубрики: blockchain, digital security, distributed systems, Блог компании JUG.ru Group, блокчейн, децентрализованная система, информационная безопасность, криптография12 млрд реквестов в месяц за 120$ на java
2016-11-29 в 8:48, admin, рубрики: distributed systems, high-load, java, netty, performance, vanilla java, Анализ и проектирование системКогда Вы запускаете свой продукт — Вы совершенно не знаете, что произойдет после запуска. Вы можете так и остаться абсолютно никому не нужным проектом, можете получить небольшой ручеек клиентов или сразу целое цунами пользователей, если про Вас напишут ведущие СМИ. Не знали и мы.
Этот пост об архитектуре нашей системы, ее эволюционном развитии на протяжении уже почти 3-х лет и компромиссах между скоростью разработки, производительностью, стоимостью и простотой.
Упрощенно задача выглядела так — нужно соединить микроконтроллер с мобильным приложением через интернет. Пример — нажимаем кнопку в приложении зажигается светодиод на микроконтроллере. Тушим светодиод на микроконтроллере и кнопка в приложении соответственно меняет статус.
Так как мы стартовали проект на кикстартере, перед запуском сервера в продакшене у нас уже была довольно большая база первых пользователей — 5000 человек. Наверное многие из Вас слышали про известный хабра эффект, который положил в прошлом многие веб ресурсы. Мы, конечно же, не хотели повторять эту участь. Поэтому это отразилось на подборе технического стека и архитектуре приложения.
Сразу после запуска вся наша архитектура выглядела так:

Это была 1 виртуалка от Digital Ocean за 80$ в мес (4 CPU, 8 GB RAM, 80 GB SSD). Взяли с запасом. Так как “а вдруг лоад пойдет?”. Тогда мы действительно думали, что, вот, запустимся и тысячи пользователей ринут на нас. Как оказалось — привлечь и заманить пользователей та еще задача и нагрузка на сервер — последнее о чем стоит думать. Из технологий на тот момент была лишь Java 8 и Netty с нашим собственным бинарным протоколом на ssl/tcp сокетах (да да, без БД, spring, hibernate, tomcat, websphere и прочих прелестей кровавого энтерпрайза).
Все пользовательские данные хранились просто в памяти и периодически сбрасывались в файлы:
try (BufferedWriter writer = Files.newBufferedWriter(fileTo, UTF_8)) {
writer.write(user.toJson());
}
Python: строим распределенную систему c PySyncObj
2016-06-28 в 8:05, admin, рубрики: distributed systems, python, raft, Блог компании Wargaming, децентрализованные сети, Программирование, Сетевые технологииПредставьте, что у вас есть класс:
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 можно строить различные распределенные системы, например распределенный мьютекс, децентрализованные базы данных, биллинговые системы и другие подобные штуки. Все те, где на первом месте стоит надёжность и отказоустойчивость.
Читать полностью »
