2015-09-07 6 views
1

Теперь я делаю небольшое исследование, чтобы найти способ хранения огромного объема данных (временно, до тех пор, пока некоторые потребители не будут потреблять эти сообщения) от разных «производителей сообщений» (источник). Данные поступают из разных источников, например, HTTP, FTP, SMPP или загрузки файлов, каждый тип может иметь десятки или сотни экземпляров, создающих сообщения. Полученные ими сообщения могут расти настолько огромными, что потребители сообщений могут отставать в потреблении сообщений, поскольку процессы могут занять много времени или недолго. Теперь система использует RabbitMQ в некоторых частях, но ее производительность падает, когда растет огромный объем непонятного сообщения (я также изучаю улучшение его производительности, но это другое). Как альтернатива, я смотрю на Apache Kafka, который использует диск для сохранения сообщений.Cassandra для обмена сообщениями

Как я прочитал многие статьи в Интернете, я прочитал несколько статей, в которых рассказывается о Apache Cassandra с очень быстрой записью, обрабатывающей миллионы вставок в секунду и аналогичный объем чтения. Я был удивлен и попытался найти несколько потенциальных клиентов в использовании Кассандры для моего случая, но без каких-либо ясных результатов.

Предполагая, что у меня есть большое количество производителей сообщений, можно ли вставлять ручки Cassandra (кластера) (в партиях) быстрее (общая высокая пропускная способность), которые производители не дросселируют?

Я уверен, что некоторые из вас могли бы использовать Кассандру для этого или подобных видов использования, поделитесь опытом. (Я готов предоставить вам дополнительную информацию, если этого не достаточно)

ответ

2

Да! Cassandra может обрабатывать записи очень эффективно. Но, по моему опыту, использование его в качестве системы обмена сообщениями (очередь и подобные) приводит к некоторым техническим ограничениям из-за tombstones.

Cassandra не удаляет удаленные строки немедленно и маркирует их томом, который будет собран позже. Сверхурочная работа, если есть много исключений (например, сообщения dequeue), общая производительность будет очень больной и довольно быстро.

Вы можете пойти в Cassandra, но вам придется реализовать работу по проблеме tomstone (ведро времени, несколько таблиц состояния).

IMHO, Apache Kafka гораздо более подходит для использования в случае использования сообщений, а также может масштабироваться массово.

+1

Хороший ответ. Я думаю, что установка значения gc_grace_seconds в довольно подходящее значение (сохранение производительности и gc служебных данных и дополнительного хранилища, вызванных надгробиями) может помочь вам, потому что Cassandra предназначен для тяжелых/быстрых вставок с меньшим количеством прочтений и удалений и, следовательно, может быть не лучшим выбором для вас , Кафка предназначена для таких случаев использования. –

Смежные вопросы