Мой источник производит примерно 4000–5000 сообщений в день, и Кафка, способный обрабатывать огромный объем данных с высокой пропускной способностью, сможет ли он обрабатывать такой низкий объем, и частота сообщений также будет низкой?
blockquote>Да. И «Да» не только для Kafka «Core» (брокеры = хранилище, публикация / подписка), но и «Да» для:
- Производители и клиенты-клиенты Kafka (пишут сообщения и читают сообщения соответственно) [ 110]
- Kafka Connect (для интеграции Kafka с другими системами, такими как MySQL, Elastisearch, S3)
- Kafka Streams (для написания приложений обработки в Java / Scala)
- KSQL (для обработки записи приложения в потоковом SQL)
Предположение, что Вы знаете, не будет больше чем 50 состояниями (Вы имеете в виду штаты США?),
Set<String> uniqueStates = new HashSet<String>(allStates.length, 0.75);
заключенный в кавычки является определенно неправильным. Я предложил бы, чтобы Вы пошли для начальной способности 50 / 0.75 = 67, или возможно 68, чтобы быть на безопасной стороне.
Я также чувствую потребность указать, что Вы, вероятно, сверхдумаете это сильно. При изменении размеров arraylist дважды от 16 до 64 не собираются давать Вам значимый хит производительности, если это не правильно в самой критической по отношению к производительности части программы.
Таким образом, лучший ответ должен, вероятно, использовать:
new HashSet<String>();
Тем путем Вы не будете возвращаться год спустя и ломать голову, почему Вы выбрали такие странные аргументы конструктора.
Используйте конструктора, где Вы не должны указывать эти значения, затем разумные значения по умолчанию выбраны.
Безопасная ставка является движением для размера, который является слишком небольшим.
Поскольку изменение размеров улучшено алгоритмом экспоненциального роста (см. stackoverflow подкаст с нескольких недель назад), хождение маленького никогда не будет стоить Вам так очень. Если у Вас будет много наборов (удачный Вы), то для производительности будет иметь значение, если они будут увеличенным размером.
Коэффициент загрузки является хитрым. Я предлагаю оставить его в значении по умолчанию.Я понимаю: Ниже о 0.70f Вы делаете массив слишком большим и поэтому медленнее. Выше 0.80f и Вы начнете добираться до многих ключевых столкновений. По-видимому, зондирование алгоритмов потребует более низких коэффициентов загрузки, чем алгоритмы блока.
Также обратите внимание, что "начальная способность" означает что-то немного отличающееся, чем это появляется думает, большинство людей. Это относится к количеству записей в массиве. Для получения точной способности ко многим элементам разделитесь на желаемый коэффициент загрузки (и вокруг соответственно).
Я второй Zarkonnen. Вашим последним вопросом является самый важный. Если это, оказывается, происходит в горячей точке Вашего приложения, это могло бы стоить усилия посмотреть на него и попытаться оптимизировать, иначе циклы ЦП являются более дешевыми, чем зажигание Ваших собственных нейронов.
Выскажите хорошее предположение. Нет никакого твердого правила. Если бы Вы знаете, что, вероятно, будет, говорят, что 10-20 состояний, я начался бы с тем номером (20).