组合开发一个订阅发布通信库minimsg

曾经的付出

  以前根据自己的喜好和项目,研究过opendds,编译和使用都很复杂的东西,但是它是dds的一个标准。

  以后学习Java,所以了解过netty,弄过dotnetty,但是官方都没有管了。

  接触通信传输,UDP的使用很快,弄过一个udt.

  Java的mq都接触过,还了解过nsq(go).

看见没有,我对网络通信很感兴趣。

自己也写过简单的网络通信,当然号称高效通信。

当然还有正在使用的grpc库。

看,我多么无聊。所以,我任然关注通信、数据库、分布式。

最近又开始了

最近根据项目的问题和积累,又在准备一个订阅发布库,除了满足一般的订阅发布,还打算利用grpc模式进行批量传输,用一个订阅来流传输。还支持一下ftp.

当然,作为一个不合格的码农,是不愿意自己从底层做起的。所以悲剧,这次还是组合库。

先看看我打算采用的原理图:

1.订阅方:

2.发布方

介绍

  在说明库使用之前,先给大家介绍一下组合的库。

zmq

 具体请查找其它博文,我使用底层c++库的方式,不使用netmq.以方便感兴趣的小伙伴转换其它语言。这是一个封装socket的api库,当然还远远不止,我就不介绍了,官网很齐备。

nanomsg

  简单说,zmq的作者觉得c++很不好用,有些问题不方便解决,所有用c语言替换zmq开发的,但是zmq已经有很多贡献者了。它不支持udp。并且现在也不怎么支持维护了。

nng 

简单说,它是下一代nanomsg。不知道作者又怎么了,觉得nanomsg也不好,又重新弄了一个c语言库,正在发展维护。感兴趣你们可以问问作者为啥这么折腾。

grpc

google的玩意,我就不多说了自己查阅。

ftpserver

 github上一个ftp服务端库,我有使用例子。

berkeleydb

这是一个数据库,用于处理文件记录信息的,以前的文章中我提到过,该数据库目前是开源的(因为被oracle收购,就不知道以后了,不过有其他替换)

我的开始

  那么我怎么使用的呢?

我用zmq库寻址,进行订阅发布的地址处理。发布数据时用zmq库更新发布列表。

用nng进行数据传输。

用grpc提供基于流的传输模式。

用ftp处理文件问题。

用berkeleydb记录文件信息和处理一些缓存问题。

使用介绍

   为什么使用zmq?因为要全网更新主题发布地址,没有中心节点,所以用组播的方式进行寻找,这类是很小的短消息,并且只是在应用软件初期有变化,一旦稳定就没有变化了。所以我使用zmq的组播协议寻址更新全局发布列表。zmq中集成了可靠组播协议pgm,我自己编译通过。后面我整理文档结构时会详细介绍编译和项目地址。

  为什么使用nng?因为这次打算通信直接用tcp,不选择其它协议,而且用c语言库好直接编译跨平台库。当然也可以直接用zmq,但是我还是打算用nng,毕竟它号称下一代。

   grpc?本身流式接口,可以跨平台,方便其它小伙伴修改转其它语言使用。

 

该项目正在开发中,还没有发布。

地址:https://github.com/jinyuttt/MiniMsg.git

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值