● 摘要
近年来,互联网在电子商务、社交网络、广告投放、社会化营销等领域取得了巨大的成功,同时也产生了海量的结构化和半结构化数据。一般而言,数据都具有时效性,并且其价值随时间的流逝而降低,需要实时或近实时地处理。消息系统,又称作消息中间件,能够解耦消息的生产者和消费者,在业界使用广泛。高性能,是指系统的吞吐量、平均响应时间以及并发处理能力要满足一定的要求。如吞吐量要超过10MB/s,平均响应时间在10ms以内,最大并发处理达到100以上等。早期的消息系统以JMS规范为蓝本,遵循相同的JMS语义,但多不支持分布式系统且性能不高。近几年来国内外新型的消息系统层出不穷,包括Apache Kafka、Active MQ、Rabbit MQ、Zero MQ、Redis Pub/Sub、Notify等。这些典型的消息系统在消息策略、分布式、接口设计等方面各有特点,但也存在较多不足之处。比如Active MQ部署使用成本高,接口复杂等。
本课题参考现有的典型消息系统,尤其是Redis Pub/Sub和Apache Kafka,从消息模型、消息策略、分布式系统、延迟吞吐等方面进行系统阐述,结合实际场景需求,设计并实现了LemurM消息系统。LemurM是一个分布式消息系统,支持消息持久化,优先级投递,分组消费等消息策略,采用RESP协议与外界通信,采用Raft协议和Quorum算法支持分布式一致性。LemurM单机每秒处理请求数在1万到5万之间,响应时间在毫秒以内,很好的满足了高吞吐、低延迟的场景需求。
目前LemurM系统已经稳定在生产环境运行超过3个月。每天接收到的消息超过200万条,消费的消息超过1000万条,99%的消息端到端延时在10毫秒以内。
相关内容
相关标签