2.7Kпросмотров
59.4%от подписчиков
5 декабря 2025 г.
Score: 2.9K
Пятничное чтиво Буду рад предложениям, вопросам и идеям связанным с каналом или архитектурными/техническими вопросами. Можно написать в личку, а можно анонимно. А ответы на вопросы можно прочитать на сайте. ————————————— Deep dive into kafka Offset Tracking Если привыкли к очередям и начали использовать кафку, то могут возникнуть проблемы с системой оффсетов в брокере. Связанно это с тем, что вместо того, чтобы «вытащить» сообщение из очереди, кафка читает сообщения из лога (партиции) по офсету, который шарится на консьюмер группу целиком. И благодаря тому, что сообщения не удаляются, разные консьюмер группы обрабатывают одни и те же байты из лога. И главный вопрос, который возникает — где и как в кафке хранить этот офсет, с учетом того, что это распределенная система. А с ответами поможет статья выше. Первое, с чего начинается статья — предложение автора пофантазировать самостоятельно, перед тем, как читать текст. Далее рассказывается о двух идеях где офсет может храниться: в бд и локально. После рассказывается почему zookeeper не спасет и как придумали __consumer_offsets топик, для хранения оффсетов в кафке. После описывается структура и партицирование топика, формат сообщений с офсетом, как консьюмеры обрабатывают данные. Во второй части статьи найдете способы обработки ошибок вокруг оффсетов и как другие системы работают с оффсетами (в списке монга, кролик, EventStoreDB и pulsar). #kafka ————————————— You're getting index scans, but it's still slow Кажется, что добавив индексы в бд запросы станут быстрым и улучшать уже нечего. На деле есть куда еще расти, о чем рассказывает автор. В тексте найдете три совета, которые помогут оптимизировать запросы к таблицам, в которых уже присутствуют индексы. Первый совет связан с Rows Removed by Filter. Для этого приводится пример поиска по двум условиям, т.е. создается таблица с двумя колонками и выполняется селект WHERE a = 42 AND b = 42. В этом случае, если индекс стоит только на a, то сначала достанутся значения, где a == 42, после чего из этой кучи отсеется значения где b == 42. Чтобы избежать подобных ситуаций, стоит добавить индекс по второй колонке (ускорение, в примере автора в 100 раз). Второй совет связан с циклическими запросами, где в каждом цикле также произойдет фильтрация данных, что влияет на перфоманс. Третий совет связан с index column order (порядок колонок в индесе). Описываются две ситуации: когда происходит фильтрация значения по одному (a = 42) и нескольким значениям (a = 42 AND b = 42). Главный плюс статьи — автор показывает как использовать EXPLAIN в постгресе #db #psql ————————————— How IT managers fail software projects Разбавлю две технические статьи историями о том, как проваливаются проекты. В начале текста дается ссылка на причины провалов технологических проектов, где приводятся очевидные и постоянно обсуждаемые причины (проблемы с определением цели бизнеса, скоупом работ, менеджмент, навыками людей, поддержкой и «культурой» компании). Далее в тексте рассказывается о восьми проектах, которые провалились. Вот некоторые из них:
- Phoenix. Переписывая систему выкинули «лишнее», отказались от тестирования и проект оказался слишком амбициозным;
- Создание системы приема безналичных платежей (EPOS) в британской Post Office. Скрывали ошибки из-за чего пострадали люди, объем работ оказался чрезмерным и сказалось отсутствие профессиональных кадров;
- Модернизация программы ведения торгового реестра в австралии. Скоуп работы оказался больше, чем ожидалось (потратили 2.8 миллиарда австралийских доллара, хотя хотели 480 миллионов);
- ERP сети супермаркетов Lidl. Три года пытались переписать ERP, в итоге вернулись на легаси решение. Русский перевод #management #why_system_fail