Параллельное программирование
Потоки vs процессы.
Cassandra. Часть 6. Batches
В реляционных базах есть возможность объединения запросов в batch (группу). Обработка таких запросов выполняется быстрее, т.к. отсутствует затраты на передачу по сети множества маленьких отдельных запросов. В Кассандре тоже есть batch’и, но основное предназначение их несколько другое.
Быстрая установка Kubernetes с админкой на RHEL
Инструкция для установки кубернетиса на одной мастер-ноде, с возможностью запуска на ней pod’ов.
Что хранится в Object Header
У каждого объекта в java, помимо самих полей есть метаданные, которые называются object header. Давайте разберемся, что именно там хранится.
Обзор Zookeeper
Рассказываю про Zookeper. Описание сервиса и особенностей его работы. Примеры использования Curator Recipes.
Cassandra. Часть 5. Compaction
Главной причиной высокой скорости записи Cassandra является то, что запись данных последовательна. Данные попадают в оперативную память, сортируются в memtable, а затем блоком, в виде SSTable сбрасываются на диск. Именно благодаря такому подходу, Cassandra приближается тому, что ее производительность при сохранении равна скорости записи диска.
Cassandra. Часть 4. Writepath
Сохранение Cassandra выполняет в следующем порядке:
- На основе ключа записи вычисляются хеш и определяются ноды, куда согласно replciation factor попадут данные;
- На репликах запись в commit log;
- На репликах запись в memtable в памяти;
- На репликах инвалидация кеша;
- Ожидание координатором подтверждения записи от реплик;
- Отправка ответа клиенту, о том, что запись выполнена;
Шпаргалки Git rebase
Rebase - команда предназначенная для редактирования коммитов в git. Часто ее воспринимают как альтернативу команде git merge, однако это не так. Хотя команда и позволяет переносить коммиты, мержиться все равно придется обычной командой merge.
Алгоритм consistant hashing & virtual nodes
Cassandra, как и другие NoSQL key-value хранилища, имеет распределенную архитектуру и хранит данные на нескольких серверах. При выполнении записи, БД должна однозначно орпеделять ноду, на которую нужно сохранить данные. Такое же требование касается и чтения, БД, получив ключ документа, должна определить к какой ноде обращаться, чтобы не искать по всем нодам. Поэтому необходим алгоритм выбора нод для чтения/записи, который получивключ записи (key) и вернет адрес ноды. Для того, чтобы этот алгоритм можно было использовать в промышленном решении, определим для него несколько условий:
- Высокая скорость работы, не меньше 10.000 операций в секунду.
Операция опеределения ноды очень частая операция, поэтому нельзя в работе подгружать какие-то данные с диска/БД или обращаться по сети в сторонний сервис. - Алгоритм должен одинаково работать на всех нодах.
Запросы на получение данных приходят на все ноды (в materless архитектуре клиент может подключиться к любой ноде), и они самостоятельно должны прийти к верному решению о расположении данных. - При добавлении/удалении нод из кластера не должно быть избыточного перемещения данных.
При добавлении ноды должны перемещаться только данные, необходимые для ее заполнения. Аналогично, при удалении ноды, только ее данные должны распределиться между остальными нодами. Дополнительных, паразитных перемещений данных не должно быть.
Cassandra. Часть 2. DC, Rack, Snitch
В чем разница между датацентры, стойками, нодами и виртуальными нодами? Зачем нужны снитчи?
Cassandra. Часть 1. Проектирование данных
Cassandra представляет собой гибрид между key-value хранилищем и колоночно-ориентированной БД. Если к key-value хранилищам она относится за счет того, что у каждой записи обязательно есть первичный ключ (key) и связанное с ним значение (value), то к семейству колоночных - потому, что значение (value) может состоять из большого количества столбцов.
Стратегии загрузки коллекций в Hibernate
Всего в хибернейте существует 4 способа управлять загрузкой дочерних коллекций:
- SELECT
- JOIN
- SUBSELECT
- BATCH