第一届阿里中间件性能挑战赛-答辩资料学习

题目

题目内容

实现一个基于发布/订阅模型的消息中间件,功能要求如下:

  1. broker保证消息落盘后才向producer返回发送成功的ack,并把消息推送给consumer;
  2. consumer消费成功或失败都返回ack给broker;
  3. consumer消费失败、消费超时、不在线时,消息不能丢失,需要尽快重新推送,且consumer正常后可以及时消费完堆积的消息;
  4. 采用push模式把消息推送给consumer;
  5. 支持简单过滤功能,即broker只推送符合订阅条件的消息给consumer;
  6. broker宕机重启后,保证消息不能丢失;
  7. 支持consumer group,即consumer群组订阅了某topic,该topic的消息发送给其中任意一台机器都可以;
考核方式

性能指标:
每秒消息接收量,每秒消息投递量,消息投递延迟;
测试场景:

  • 4k消息,一个producer发布topicA,一个consumer订阅topicA,consumer能正常消费所有消息,且无堆积;
  • 4k消息,一个producer发布topicA,二十个consumer订阅topicA,consumer能正常消费所有消息,且无堆积;
  • 4k消息,一个producer发布topicA,一个consumer订阅topicA,consumer消费超时,有大量堆积;
  • 4k消息,一个producer发布topicA,二十个consumer订阅topicA,只有一个consumer能正常消费,其它消费者消费超时、失败、不在线,有大量堆积;
  • 4k消息,二十个producer发布20个不同的topic,每个topic有二十个consumer,且每个consumer订阅不同属性值的消息,都正常消费,且无堆积;
  • 4k消息,二十个producer发布20个不同的topic,每个topic有二十个consumer,且每个consumer订阅不同属性值的消息,所有消费均超时,有大量堆积。堆积一段时间后,减少90%的发送量,且消费者恢复正常,broker尽可能把堆积的消息推送出去;

你可能感兴趣的:(第一届阿里中间件性能挑战赛-答辩资料学习)