Ответ 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 обеспечивает организацию очереди).