Я оцениваю Google PUB/SUB против Kafka?

Я не работал над кафкой, но хотел построить канал данных в GCE. Поэтому мы хотели знать Kafka vs PUB/Sub. В основном я хочу знать, как согласованность сообщений, доступность сообщений, надежность сообщений поддерживаются как в Kafka, так и в Pub/sub

Спасибо

Ответ 1

В дополнение к тому, что Google Pub/Sub управляется Google, а Kafka является открытым исходным кодом, другое отличие состоит в том, что Google Pub/Sub - это очередь сообщений (например, Rabbit MQ), где Kafka - это скорее потоковый журнал. Вы не можете "перечитывать" или "переигрывать" сообщения с помощью Pubsub. (РЕДАКТИРОВАТЬ - по состоянию на февраль 2019 года вы МОЖЕТЕ воспроизводить сообщения и искать назад во времени до определенной отметки времени, согласно комментарию ниже)

В Google Pub/Sub, когда сообщение считывается из подписки и ACKed, оно исчезает. Чтобы иметь больше копий сообщения для чтения разными читателями, вы "разветвляете" тему, создавая "подписки" на эту тему, где каждая подписка будет иметь полную копию всего, что входит в тему. Но это также увеличивает стоимость, потому что Google взимает плату за паб/суб-загрузку за количество прочитанных данных.

С Kafka вы устанавливаете срок хранения (я думаю, по умолчанию это 7 дней), и сообщения остаются в Kafka независимо от того, сколько потребителей читают его. Вы можете добавить нового потребителя (он же подписчик), и он начнет потреблять в начале темы в любое время. Вы также можете установить период хранения равным бесконечности, а затем вы можете использовать Kafka в качестве неизменного хранилища данных, как описано здесь: fooobar.com/questions/50960/...

Amazon AWS Kinesis - это управляемая версия Kafka, тогда как Google Pubsub я считаю управляемой версией Rabbit MQ. Amazon SNS с SQS также похож на Google Pubsub (SNS обеспечивает разветвление, а SQS обеспечивает организацию очереди).

Ответ 2

Одна большая разница между Kafka vs. Cloud Pub/Sub заключается в том, что Cloud Pub/Sub полностью управляется для вас. Вам не нужно беспокоиться о машинах, настройке кластеров, параметрах тонкой настройки и т.д., Что означает, что для вас работает много работы DevOps, и это важно, особенно когда вам нужно масштабировать.