最近一直学习,主要处理java的分布式,MQ,RPC,通信,数据库,缓存等方向。

一般现在的MQ都是企业级的,庞大,功能齐全。最主要是代码量大,对于我们这些小程序员而言,太大,修改困难,修复更加困难,学习资料现在多了还要好点。因此自己写了个小MQ,取名也叫SmallMQ.

简单言之,三部分。topicServer,负责注册,注册中心。broker,也就是MQ中心另外就是客户端,负责数据订阅发布。

如图:

每部分简单实现:

(一)topicServer

启动之后监听信息,接收MQ注册信息及上报主题信息。以及客户端获取MQ.

(二)MQ

1.MQ.负责数据传输及主题生产。主动定时上报自己的发布订阅地址。

2.定时上报自己的主题信息

3.数据接收及传递,接收主题订阅

4.分发数据,将数据传递给订阅主题的客户端,同时接收客户端的请求,对POLL类型的订阅组,接收订阅者的请求,

将数据分发。

(三)客户端

监测broker(MQ),定时获取主题信息,将发布的主题数据传递给对应的MQ.

查找主题,向MQ订阅数据。

客户端的每个订阅者都要归到订阅组中,订阅组决定2个参数,1是PUSH还是POLL,2是全部复制还是轮训。

PUSH类型的订阅者,由MQ主动分发数据。POLL类型数据,需要订阅端主动发送数据请求,然后返回订阅主题的数据。

这就要客户端是否能够容纳推送数据,不能容纳就自己获取。

复制类型,决定了数据会向每个订阅者发送数据。会缓存数据。不是复制类型,则选择其中一个订阅者,将数据发送之后抛弃。

也就是类似负载均衡的意思。如果是POLL类型,则一个数据被取出,另外的POLL则取出另外的。

以Netty为通信基础。在研究了ZMQ订阅发布扩展之后,自己重新订阅打造了一款软件模拟。

当前基本功能已经测试,可以供大家学习参考,代码量不大,满足我们小程序员的使用。逻辑都是以最原始的方式磊出。

最后还有一个功能是HTTP服务,以netty为基础,在topicServer,实现最简单的,能够查询主题信息,但是我只复制了一个服务代码

没有具体去实现功能。

最后想了想,我以前写了一个DataStrom,差不多。

代码发布在https://github.com/jinyuttt

SmallMQ发布的更多相关文章

  1. SmallMQ实现发布

    最近一直学习,主要处理java的分布式,MQ,RPC,通信,数据库,缓存等方向. 一般现在的MQ都是企业级的,庞大,功能齐全.最主要是代码量大,对于我们这些小程序员而言,太大,修改困难,修复更加困难, ...

  2. MIP 官方发布 v1稳定版本

    近期,MIP官方发布了MIP系列文件的全新v1版本,我们建议大家尽快完成升级. 一. 我是开发者,如何升级版本? 对于MIP页面开发者来说,只需替换线上引用的MIP文件为v1版本,就可以完成升级.所有 ...

  3. Taurus.MVC 2.0 开源发布:WebAPI开发教程

    背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...

  4. DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享

    DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. ...

  5. 发布:.NET开发人员必备的可视化调试工具(你值的拥有)

    1:如何使用 1:点击下载:.NET可视化调试工具 (更新于2016-12-29 19:11:00) (终于彻底兼容了部分VS环境下无法使用的问题) 2:解压RAR后执行:CYQ.VisualierS ...

  6. 微软发布正式版SQL Server 2016

    微软于今天在SQL 官方博客上宣布 SQL Server 数据库软件的正式发布版本(GA),历时一年多,微软为该软件发布了多个公共预览版和候选版本,而今天最终版本终于上线了.在博客中,微软数据集团的企 ...

  7. Castle Core 4.0.0 alpha001发布

    时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...

  8. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  9. ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件

    虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件 ...

随机推荐

  1. 一、IP地址

    IP地址 1)网络地址 IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络. 2)广播地址 广播地址通常称为直接广播地址,是为了区分受限广播地址. 广播地址与网 ...

  2. Java 枚举 获取前后元素,下一个元素

    https://blog.csdn.net/jiangshanwe/article/details/79119219

  3. MySQL出现时区错误的解决方法

    目录 环境 问题 分析 解决方法 环境 windows10 MySQL 8.0.13 IDEA 问题 The server time zone value 'Öйú±ê׼ʱ¼ä' is unre ...

  4. shiro 配置导图

    1 web.xml配置:shiro filter必须放在其他filter之前 <filter> <filter-name>shiroFilter</filter-name ...

  5. ssh整合(spring + struts2 + hibernate)xml版

    1.1分层 1.2jar节点 <dependencies> <dependency> <groupId>junit</groupId> <arti ...

  6. struts quick start

    1.create a dynamic web project 2.import the needed jar(about 11) 3. request page(index.jsp) <%@ p ...

  7. Prime Numbers in a Grid素数网格

    &/@ Shorthand notation for Map If[PrimeQ[#], Framed@Style[#, Orange, Bold, 15], #] & /@ Rang ...

  8. python里面的encode和decode函数

    转自 http://www.cnblogs.com/evening/archive/2012/04/19/2457440.html 总结一句话 encode:    字符串打算输出(给别人用)比如pr ...

  9. Angular js 双向绑定时字符串的转换成 数字类型的问题

    问题: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <scrip ...

  10. 在科技圈不懂“机器学习”?那你就out了

    当联网的终端设备越来越多时,产生的信息数据也将呈指数式增长,大型.复杂.增长快速的数据收集已经无处不在.而机器学习能够扩增这些数据的价值,并基于这些趋势提出更广泛的应用情境. 那么,被人们津津乐道的机 ...