Это 9-й день моего участия в августовском испытании обновлений.Подробности о мероприятии:Испытание августовского обновления
текст
Фон схемы
Предположим, что кластеру необходимо передавать 1 миллиард данных в день. 24 часа в сутки, с 12 дня до 8 утра, данных почти нет.
использоватьПравило двадцати восьмиПодсчитано, что 80% данных (800 миллионов) будут переданы в течение 16 часов, а 80% из 800 миллионов данных (640 миллионов) будут переданы в течение 20% из 16 часов (3 часа).
Формула расчета QPS=640000000÷(36060)=60 000, а это значит, что наш кластер Kafka должен выдерживать 60 000 одновременных операций в секунду в часы пик.
Расчет дискового пространства, 1 млрд данных в сутки, каждые 50кб, то есть 46Т данных.
Сохраните 2 копии, 46*2=92T, сохраните данные за последние 3 дня. Значит нужно 92*3=276Т
Угол QPS
Для развертывания Kafka, Hadoop, MySQL и распределенных систем ядра больших данных обычно рекомендуется использовать физические машины напрямую, а некоторые низкопрофильные виртуальные машины не рекомендуются.
QPS, нельзя сказать, что пока вы поддерживаете 60 000 QPS, ваш кластер может поддерживать только 60 000 QPS.
Если вам нужно поддерживать только 6w QPS, 2 физических машин абсолютно достаточно.Развернуть kafka на одной физической машине для поддержки десятков тысяч QPS не проблема.
Но здесь есть проблема.Обычно мы рекомендуем компании иметь достаточный бюджет и стараться удерживать пиковый QPS на уровне около 30% от общего QPS, который может нести кластер.Поэтому общий QPS, который может нести кластер kafka, который мы строим составляет от 200 000 до 300 000. безопасно.
Вообще говоря, для развертывания требуется ==5~7 физических машин==, что в принципе очень безопасно. Каждая физическая машина требует пропускной способности в десятки тысяч данных в секунду. Конфигурация и производительность физической машины t также должен быть очень высоким.
Угол диска
количество дисков
Теперь нам нужно 5 физических машин и нужно хранить 276T данных, поэтому каждая машина должна хранить 60T данных.Общая конфигурация компании — 11 дисков.В этом случае мы можем обрабатывать 7T одного диска.
Диск SAS или SSD?
Теперь нам нужно рассмотреть вопрос: Вам нужен твердотельный накопитель SSD или обычный механический жесткий диск?
SSD — это твердотельный накопитель, который быстрее механического жесткого диска, так где же он быстрее?
На самом деле, скорость SSD в основном высока при случайном чтении и записи на диск, когда необходимо читать и записывать в произвольные позиции на диске, SSD быстрее, чем механический жесткий диск.
Например, такая система, как MySQL, должна использовать SSD.
Например, когда мы планируем и развертываем кластер MySQL онлайн-системы, вообще говоря, мы должны использовать SSD, и производительность может быть значительно улучшена, так что количество одновременных запросов, которые может выполнять MySQL, будет намного выше, а производительность выполнения операторов SQL также будет улучшена.
Кластер Kafka, использует ли физическая машина дорогой SSD? Или использовать обычный механический жесткий диск?
Потому что при записи на диск кафкаписать последовательноиз.
Возможности производительности последовательной записи механического жесткого диска аналогичны производительности чтения и записи памяти, поэтому для кластера Kafka мы можем использовать == механический жесткий диск ==.
угол памяти
Собственный jvm Kafka не может использовать слишком много памяти кучи, потому что дизайн Kafka заключается в том, чтобы избежать использования объектов jvm для сохранения данных и избежать проблем, вызванных частым полным gc, поэтому, как правило, собственной памяти кучи jvm Kafka, выделяющей около 10 ГБ, достаточно. память зарезервирована для кеша ОС.
Сколько памяти нужно серверу?
По нашим оценкам, имеется около 100 тем, поэтому необходимо убедиться, что данные ведущего раздела из 100 тем находятся в os chache.
100 тем, в одной теме 5 разделов. Тогда всего будет 500 разделов.
Размер каждой партиции 1Гб, а копий у нас 2, а это значит, что для хранения в памяти данных лидирующей партиции 100 топиков требуется 1000Гб памяти.
Теперь у нас 5 серверов, поэтому в среднем серверу требуется 200 ГБ памяти в день, но на самом деле нам не нужно, чтобы все данные раздела находились в памяти, только 25% данных должны быть в памяти. , 200G * 0,25 = 50G
Таким образом, всего требуется 60G памяти, поэтому мы можем выбрать сервер с == 64G памяти ==.Большое дело, что данные раздела меньше в памяти.Конечно, лучше, если это будет 128G памяти.
Сколько процессора нужно?
Планирование ЦП в основном зависит от того, сколько потоков будет в вашем процессе.Потоки в основном выполняются, полагаясь на многоядерные ЦП.
Если у вас много потоков, но мало ядер ЦП, это приведет к очень высокой нагрузке на ЦП, что приведет к снижению общей эффективности выполнения рабочего потока.
В Kafka's Broker поток-акцептор отвечает за доступ к запросу клиента на подключение, но после того, как он получит к нему доступ, подключение фактически будет выделено на несколько процессоров, по умолчанию 3,
Но, если честно, в общей производственной среде рекомендуется добавить еще несколько.Общую пропускную способность кафки можно улучшить.Например, можно увеличить ее до 6 или 9.
Другой поток отвечает за обработку запросов, это пул потоков, по умолчанию 8 потоков, в рабочем кластере рекомендуется увеличить количество потоков в этом блоке в 2-3 раза.
На самом деле это нормально, например есть 16 рабочих потоков и 24 рабочих потока.
В фоновом режиме будет много других потоков, таких как поток, который регулярно очищает данные 7 дней назад, Контроллер отвечает за обнаружение и управление потоком всего кластера, и поток, который синхронно реплицирует данные, поэтому каждый брокер будет иметь по крайней мере сотни потоков потока.
На основе опыта4 ядра процессора, как правило, десятки потоков, почти полностью загруженные процессоры в часы пик.
8 ядер процессора могут относительно щедро поддерживать напряженную работу десятков потоков.
Поэтому сервер Kafka обычно рекомендует ==16 ядер==, которые в принципе могут выдержать работу одной или двух сотен потоков. Конечно, было бы лучше, если бы процессору дали 32 ядра.
Угол NIC
Текущая сеть в основном представляет собой сетевую карту Gigabit (1 ГБ / с) и сетевую карту 10 Gigabit (10 ГБ / с).
Между кластерами kafka выполняется синхронизация данных между брокерами и брокерами, потому что лидеру необходимо синхронизировать данные с последователями.Они находятся на разных машинах-брокерах.Между машинами-брокерами выполняется частая синхронизация данных, и передается большой объем данных.
Сколько данных передается между двумя брокерскими машинами в секунду?
В пиковый период каждую секунду будет заливаться около 60 000 единиц данных, каждый день обрабатывается около 10 000 запросов, и каждый запрос составляет 50 КБ, поэтому каждую секунду будет поступать около 488 М данных.У нас также есть данные синхронизации реплик, поэтому 488M * 2 = пропускная способность сети составляет 976 Мбит/с, поэтому в часы пик при использовании ==гигабитной пропускной способности== сеть по-прежнему сильно загружена.
Резюме: рекомендуемая конфигурация кластера Kafka
1 миллиард данных, пропускная способность 6 Вт/с, 276 Тб данных, 5 физических машин
Жесткий диск: 11 (SAS) * 7Т, 7200 об/мин
Память: 64 ГБ/128 ГБ, JVM выделяет 10 ГБ, остальное для кеша ОС
ЦП: 16 ядер/32 ядра
Сеть: гигабитная сетевая карта, лучше 10 гигабит