这个也是开放讨论题,主要讨论下 Kafka 在消息中是如何进行实现的。
总结
这个题目的开发性太强了。
Kafka 可以用的地方非常多,我经历过的项目有 Kafka 用在消息处理策略上的。这个主要是 IoT 项目,因为这个项目需要对温度传感器采集获得数据。
当我们有多个数据采集点的时候,通常是在每分钟发送几条数据的样子。
哪怕是这种使用场景,我觉得从系统架构的考虑来说还是过于臃肿了,因为 Kafka 的运行需要 ZooKeeper,一套 ZooKeeper 的运行至少是需要3 台服务器。
正常的生产环境部署,我们可能要部署到5 太服务器上。
对于一个每秒钟消息都不到1 条的消息服务器来说,实在是太重了。
其实这种使用场景,我们可以用一些轻量的消息服务器,比如说 ActiveMQ,我就觉得非常好。
可以简单到使用一个 Docker 容器就可以完成了,但消息处理能力也还是强大的。
对于 Kafka 这种野兽级的消息处理服务器,实在是用不上。
缓存
我们还经历过一个项目,Kafka 被用作缓存了。
每次项目启动的时候,都需要从 Kafka 上获得缓存数据,然后系统才能运行。
这个也是非常痛苦的,有时候因为缓存机制的使用不确定,导致部分时候的数据缓存上没有。
然后在调试的过程中就非常的痛苦。
面试回答
根据上面的情况,对这开放性的问题,通常只需要说说你对问题的了解情况就好了。
一般来说还是不会要求你做到具体的实现的,只要你对消息服务器有一些相关的知识,上面的2 个使用案例还是比较经典的。
其实消息服务器还有很多可以使用的场景,比如说数据解耦,对爬虫数据的数据解耦等等,都是可以用的。
很多公司还会做一个消息服务器,比如说对订阅用户的消息回复,手机消息推送等等,都需要我们的消息服务器去处理。
所以这个问题为设计型问题,只需要对相关问题有所了解即可。