添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1、nanomsg概述

Ø  nanomsg是一个socket library,它提供了几种常见的通信模式,为了能使网络层快速、可扩展并且能易于使用。用C实现,且适用于广泛的操作系统,几乎不需要依赖。这里的通信模式(也称为“可扩展性协议”)是构建分布式系统的基本框架。通过组合它们,可以创建广泛的分布式应用程序。

Ø  目前可用的可扩展性协议有:

PAIR - 简单的一对一沟通

BUS - 简单的多对多通信

REQREP - 允许构建无状态服务集群来处理用户请求

PUBSUB - 将消息分发给订阅消息的用户

PIPELINE - 汇总来自多个来源的消息,并在许多目的点之间进行负载平衡

SURVEY - 允许一次查询多个应用程序的状态

Ø  可扩展性协议分层在传输层之上的网络堆栈中,目前nanomsg library支持以下传输机制:

INPROC - 进程内的传输(线程,模块等之间)

IPC - 在单个机器上的进程间传输

TCP - 通过TCP的网络传输

该库向应用程序公开了一个类似BSD的套接字C API。

2、nanomsg源码

Ø  nanomsg/src/

nn.h:nanomsg对外暴露的api接口

transport.h:通信层定义,主要是为了暴露给用户以实现扩展,但目前包含了utils下的相关头文件,其中inproc.h/ipc.h/tcp.h是对应的transport

protocol.h:协议层定义,也是为了暴露给用户以实现扩展,其中reqrep.h/pubsub.h/bus.h/pair.h/pipeline.h/survey.h是对应的protocol

utils/:实用工具包,包含基本数据结构(list/queue/hash)、互斥及原子操作(mutex/atomic)等

transports/:通信层实现,包括(inproc:进程内通信;ipc:进程间通信;tcp:tcp通信)

protocols/:协议层实现,包括(REQREP:请求响应;PUBSUB:订阅发布等)

core/:通用代码

aio/:线程池模拟的异步操作,带状态机的事件驱动等

CMakeLists.txt:cmake编译文件

pkgconfig.in:pkgconfig工具配置文件

Ø  nanomsg/src/nn.h

NN_EXPORT int nn_socket (int domain, intprotocol);

ü  domain:AF_SP(标准稳定的SP Socket);AF_SP_RAW(原始套接字省略了AF_SP套接字中的端到端功能,因此可用于在SP拓扑结构中实现中间设备)

ü  protocol:相应的6种可扩展性协议对应的socket types

:1)所有SP sockets是基于消息的,所以其忽略了类型定义,这里都是SOCK_SEQPACKE(有序分组套接字)类型的;

2)nn_socket函数返回的文件描述符不是标准描述符,如果与系统函数一起使用时将呈现为无法定义的行为,可能会发生冲突。

ü  errors:

1)EAFNOSUPPORT:指定address family不支持;

2)EINVAL:未知的protocol;

3)EMFILE:达到打开的SP Socket或OS限制的最大的文件描述符;

4)ETERM:library终止。

NN_EXPORT int nn_close (int s);

ü  errors:

1)     EBADF:提供的socket是无效的

2)     EINTR:操作被某个信号打断,socket不能完全关闭,调用nn_close()函数能重新启动操作

注:关闭socket,任何未被应用程序接收的入站缓冲的消息将被丢弃,同时该库将传输出站消息并指定NN_LINGER socket选项。

NN_EXPORT int nn_setsockopt (int s, intlevel, int option,                             const void *optval, size_t optvallen);

NN_EXPORT int nn_getsockopt (int s, intlevel, int option,                            void *optval, size_t *optvallen);

NN_EXPORT int nn_bind (int s, const char*addr);

NN_EXPORT int nn_connect (int s, const char*addr);

NN_EXPORT int nn_shutdown (int s, int how);

NN_EXPORT int nn_send (int s, const void*buf, size_t len, int flags);

NN_EXPORT int nn_recv (int s, void *buf,size_t len, int flags);

NN_EXPORT int nn_sendmsg (int s, conststruct nn_msghdr *msghdr, int flags);

NN_EXPORT int nn_recvmsg (int s, struct nn_msghdr*msghdr, int flags);

NN_EXPORT int nn_device (int s1, int s2);

3、pubsub模式

4、reqrep模式

5、参考链接

nanomsg 源代码

nanomsg 用户手册

nanomsg 社区

nan omsg : 简单高效的网络消息通信库 nan omsg 是一个轻量级、高性能的跨平台网络消息通信库,它提供了多种协议,支持点对点通信、发布/订阅模式、请求/应答模式等多种通讯方式。 项目 简介 nan omsg 的目标是提供简单易用的接口,用于构建分布式系统中的各种组件之间的通信。它将复杂的网络通信协议进行了抽象和封装,使得开发者只需要关注业务逻辑,而不需要关心底层网络通信细节。 目前, nan om...
Nan omsg 文档 Nan omsg 是现代消息传递库,它是MartinSustrik及其同事用C语言编写的ZeroMQ的后继程序。 nan oms Nan omsg 文档 Nan omsg 是现代消息传递库,它是ZeroMQ的后继程序,由Martin Sustrik及其同事用C语言编写。 nan omsg 库已获得MIT / X11许可。 “ nan omsg ”是250bpm sro的商标http:// nan omsg .org/ https://github.com/ nan omsg / nan omsg 要求 Nan omsg 1.1.4安装 nan omsg :make deps安装[依赖项] nan omsg =“ 0.7.2”导入板条箱以使用它:extern crate nan omsg ; 创建一个套接字
Nan omsg nam omsg 是一种提供多种常用通信模式的套接字库。它可以使网络通信变得更快,可扩展,并且还很容易使用。nam omsg 是用c语言实现的,所以可以在多种操作系统上使用,对操作系统没有特殊的要求。通信模式也被称为扩展性协议,是构建分布式系统的基础模块。通过链接它们,你可以创建一系列的分布式应用。目前,nam omsg 只支持下列的扩展性协议: * PAIR - 简单的一对一的通信协议;
Nan oMsg 简介 Nan oMsg 是一个Socket的通讯库,使用C语言编写实现的,这样就可以适用于多种操作系统,而且几乎不需要什么依赖,可扩展并且能易于使用。 Nan omsg 提供了几种常见的通信模式 ( 也称为“可扩展性协议” ) 是构建分布式系统的基本 框架 。 通过组合它们,可以创建广 泛的分布式应用程序。 可扩展性协议类型
nan omsg 是一个socket library,它提供了几种常见的通信模式,为了能使网络层快速、可扩展并且能易于使用。用C实现,且适用于广泛的操作系统,几乎不需要依赖。这里的通信模式(也称为“可扩展性协议”)是构建分布式系统的基本 框架 。通过组合它们,可以创建广泛的分布式应用程序。 #include <stdio.h> #include<stdlib.h> #include<string.h> #include <assert.h> #inclu
欢迎来到 nan omsg nan omsg 库是几个“可伸缩性协议”的简单高性能实现。 这些可伸缩性协议是轻量级消息传递协议,可用于解决许多非常常见的消息传递模式,例如请求/答复,发布/订阅,调查员/响应者等。 这些协议可以运行在各种传输方式上,例如TCP,UNIX套接字,甚至是WebSocket。 有关更多信息,请。 Windows Vista或更高版本(不支持Windows XP和2003) Microsoft Visual Studio 2010(包括C ++)或更高版本,或mingw-w64。 (特别是不支持mingw和较早的Microsoft编译器,并且我们根本不测试mingw-w64,因此YMMV。) CMake 2.8.7或更高版本,在$ PATH中作为cmake POSIX(Linux,MacOS X,UNIX) 支持C89的ANSI C编译器
nan omsg 是一个消息通信组件 - zeromq的作者之一用C语言重写的通信 框架 , 使用宽松的MIT许可开源,小、轻、快,非常方便,介绍我就不多写了,下面我具体的讲用法,用了你就知道是怎么回事。 pull/push 单向管道推送模式 push/pull套接字结合使用可实现消息队列的扇出模式, 这是一个1对多的模式,服务端不能有多个,但客户端可以多个。 官网上给的这个图是1对1的,...