文章实时采集(基于MIT开源协议发布NSQ的数据流模型结构如下图解析 )

优采云 发布时间: 2021-10-12 21:19

  文章实时采集(基于MIT开源协议发布NSQ的数据流模型结构如下图解析

)

  NSQ 是一个基于 Go 语言的分布式实时消息平台。它是基于 MIT 开源协议发布的。代码托管在 GitHub 上。最新版本为0.3.1。NSQ 可用于大型系统中的实时消息服务,每天可处理数亿条消息。它的设计目标是为在分布式环境中运行的去中心化服务提供强大的基础设施。NSQ具有分布式、去中心化的拓扑结构,具有无单点故障、容错、高可用、消息传递可靠等特点。NSQ 非常易于配置和部署,并且具有最大的灵活性,支持多种消息传递协议。此外,官方还提供了开箱即用的 Go 和 Python 库。

  NSQ 由四个重要组件组成:

  NSQ的主要特点如下:

  为了实现高效的分布式消息服务,NSQ 实现了合理的智能权衡,使其能够在生产环境中得到充分的应用。具体内容如下:

  官方和第三方也为NSQ开发了很多客户端函数库,比如官方的基于HTTP、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs,以及异步C客户端libnsq、Java客户端nsq -java 和许多基于各种语言的第三方客户端函数库。更多客户端函数库请点击查看。

  从NSQ设计文档可知,单个nsqd被设计为一次处理多个流数据,NSQ中的数据流模型由stream和consumer组成。Topic 是一个独特的流,Channel 是订阅给定 Topic 的消费者的逻辑分组。NSQ的数据流模型结构如下图所示:

  

  从上图可以看出,单个nsqd可以有多个topic,每个topic可以有多个channel。Channel可以接收所有Topic消息的副本,从而实现消息组播分发;并且Channel上的每条消息都分发给它的订阅者,从而实现负载均衡,所有这些形成一个单片,可以代表各种简单和复杂的拓扑结构。

  NSQ 最初是为 Bitly 开发的,Bitly 是一个提供短链接服务的应用程序。另外还有很多使用NSQ的知名应用,比如社交新闻网站Digg、私有社交应用Path、知名开源应用容器引擎Docker、支付公司Stripe、新闻聚合网站@ >Buzzfeed,移动应用Life360、 网络工具公司SimpleReach 等,用于检查家庭成员的位置。

  有兴趣的读者也可以向NSQ贡献代码,反馈问题,或者通过官方的快速入门教程体验NSQ给高吞吐量网络服务带来的性能提升。NSQ安装部署、客户端开发等相关信息请登录其官网。

  感谢郭磊对本文的审阅。

  如有问题请联系站长微信(非本文作者)

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线