Giter Site home page Giter Site logo

stormmq's Introduction

StormMQ

一.简介

  • StormMQ是一个支持消息发布-订阅的消息中间件,java语言开发,采用netty网络框架.Kryo序列化框架为网络传输数据序列化,protostruff序列化框架作为数据持久化的序列化

二.功能简介

1.支持消息者集群.

  • 消费者A是一个集群,订阅了topicA,broker收到topicA的某条消息后,只投递给消费者A集群中的一台机器.消费者集群的每台机器每秒消费的消息是均衡的.

2.简单的支持消息属性过滤订阅.

  • broker只能投递符合属性条件的消息给订阅者
  • 支持消费者的退订服务.

3.提供可靠的消息服务

  • broker保证数据同步落盘后才向生产者返回成功Ack.(生产者发布一个消息阻塞等待其Ack,超时时间是10s,避免忙轮询等待,基于netty的事件通知);
  • 生产者也支持异步发送消息给broker.(生产者发布一个消息后不阻塞,Ack返回后触发回调函数).
  • 消息投递后,如果消费失败、消费超时进行消息重投.
  • 消费者订阅主题后同步等待broker发送Ack确认broker收到订阅消息
  • 消费者收到消息后,回答broker消费结果,如果消费失败,broker会尽快重投.

三.性能优化点

  • 持久化采用缓存技术,减少磁盘.
  • 记录线程的发送速度,控制重发线程的启动.(5秒记录一次)
  • 采用netty的主从Reactor线程模型.
  • 采用protostruff和Kryo序列化框架.

四.性能测试

模型300个生产者,一个消费者
测试结果:

SendTps(个/s) recvTps(个/s) Sendrt(ms) delay(ms)
6265 6269 47 73

五.后续改进

  • 添加消息配置中心,实现broker集群化对外提供服务.
  • 存储备份,防止数据损坏.
  • 实现消费者自主消费(拉模式)

stormmq's People

Contributors

liuhangyang avatar darknessitachi avatar yangliuhang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.