Заметки

Designing Data-Intensive Applications

Особенностью книги является то, что на текущий момент она не дописана, но в то же время уже продается. Завершить обещают в феврале-марте 2017 года. Сейчас же готово 11 глав из 12. Автор описывает основные задачи, решаемые при разработке распределнных систем. Каждой такой задаче посвящена отдельная глава. Так, например в главе Storage and Retrieval можно узнать о различиях в подходах к хранению данных между колоночными и строчными хранилищами, а также о различиях в append-only и inplace подходах к изменениям данных. Read more →

Обзор недавно прочтенных книг 1

Operating Systems: Three Easy Pieces Отличная книга от Remzi H. Arpaci-Dusseau и Andrea C. Arpaci-Dusseau. Книга доступна бесплатно по главам на сайте и легко склеивается в pdf больших размеров чтобы можно было удобно читать непрерывный текст. Здесь, как отчасти следует из названия, рассматриваются 3 основных состовляющих операционных систем - виртуализация cpu и памяти, concurrency и хранение. Далее от простых, наивных концепций, предложенных в начале рассмотрения какого-либо элемента, итеративно улучшая, рассматривая физические свойства хардвара, доходим до решений, близких к использующимся в реальных операционных системах. Read more →

zookeeper, curator и leader election при потере соединения

Недавно пришлось бороться с тем, что описанная здесь схема в некоторых случаях не работает. В частности когда теряется соединение клиента с сервером zookeeper он должен лишаться лидерства, его нода должна удалиться и другой клиент, имеющий теперь ноду с наименьшим номером должен стать лидером. Удаление производится вызовом mutex.release() внутри doWork() в LeaderSelector. finally { hasLeadership = false; try { mutex.release(); } catch ( Exception ignore ) { // ignore errors - this is just a safety } } В нутри происходит вызов LockInternals. Read more →

zookeeper, curator и leader election

Apache curator является оберткой к zookeeper, которая предоставляет более высокоуровневый API и готовые рецепты. В частночти curator предлагает готовый рецепт реализации leader election, пример реализации которого также можно увидеть и на github. Рассмотрим, что там происходит: public class ExampleClient extends LeaderSelectorListenerAdapter implements Closeable { private final String name; private final LeaderSelector leaderSelector; private final AtomicInteger leaderCount = new AtomicInteger(); public ExampleClient(CuratorFramework client, String path, String name) { this.name = name; // создаем LeaderSelector, передаем туда заранее созданного клиента CuratorFramework, // также туда нужно передать путь в zookeeper, в котором будут создаваться записи, по которым будет определяться лидерство // еще нужно передать листнер, которым ExampleClient и так является leaderSelector = new LeaderSelector(client, path, this); // здесь говорим, что в случае потери лидерства этот клиент должен автоматически вставать в очередь. Read more →

Первый пост

Ну что ж, попробую что-нибудь сюда писать. Сейчас я взял генератор статических сайтов pelican, выбрал одну из существующих тем, загрузил на Digital Ocean. Конечно, можно было бы это все загрузить на Amazon S3, т.к. сайт полностью статический, но это же только пока. На самом деле, как минимум нужно будет добавить комментарии(на случай, если кто-нибудь сюда зайдет), что уже значит необходимость вычислений, да и при наличии микроинстанса Digital Ocean грех им не воспользоваться, хоть и не оптимально. Read more →