基于WAMP的Crossbario 安装入门
简单学习和使用WAMP协议,Router 是crossbario, Client是Autobahn, 了解运作的流程。
测试环境是Centos6 虚拟机一台 目录为 /data/wamp/ ,用的是Python 2的版本,主要就是参考文档(其他地方也没有什么资料)
- WAMP 协议的介绍,这个
必须要看看
,否则下面写的东西也没什么用了, 基于Websocket
的上层协议 - crossbario Router ,下文中的 crossbaio 或者 crossbar 都是指的这个,安装之后会有一个 crossbar 命令
- Autobahn|Python Client
- Pycon2016 的ppt 1
关于router和client library有很多语言的实现,Python比较熟悉,所以都是用Python的版本。
原理性知识
这两个组建官网都有详细的原理介绍,建议先看一遍。
crossbario 支持 PubSub模式 和 rRPC 模式 两种模式。
autobahn 是client端,它跟 crossbar 交互使用的协议叫做 WAMP 协议(基于 Websocket 的上层协议), 它是基于 Twisted 或者是 Asyncio(py3)的,教程中两种方式都有写, 我用的是Twisted版本。
Where to start 入门文章的小列表
websocket 案例 很多经典的问题,还没用到 crossbario
WAMP 编程 这是重点,看明白,跑通案例。
Crossbar 启动
Crossbar 主要的操作就是启动,停止和配置,他是封装好的服务端。
[root@orangleliu helloworld]# crossbar init
Automatically choosing optimal Twisted reactor
Running on Linux and optimal reactor (epoll) was installed.
Initializing application template 'default' in directory '/data/wamp/helloworld'
Using template from '/opt/rh/python27/root/usr/lib/python2.7/site-packages/crossbar/templates/default'
Creating directory /data/wamp/helloworld/.crossbar
Creating file /data/wamp/helloworld/.crossbar/config.json
Application template initialized
To start your node, run 'crossbar start --cbdir /data/wamp/helloworld/.crossbar'
在当前目录生成一个 .crossbar
目录,并包涵一个 config.json 的默认配置
[root@orangleliu helloworld]# crossbar start
2016-08-05T00:27:46+0800 [Controller 13433] Automatically choosing optimal Twisted reactor
2016-08-05T00:27:46+0800 [Controller 13433] Running on Linux and optimal reactor (epoll) was installed.
2016-08-05T00:27:47+0800 [Controller 13433] New node key generated!
2016-08-05T00:27:47+0800 [Controller 13433] __ __ __ __ __ __ __ __
2016-08-05T00:27:47+0800 [Controller 13433] / `|__)/ \/__`/__`|__) /\ |__) |/ \
2016-08-05T00:27:47+0800 [Controller 13433] \__,| \\__/.__/.__/|__)/~~\| \. |\__/
2016-08-05T00:27:47+0800 [Controller 13433]
2016-08-05T00:27:47+0800 [Controller 13433] Crossbar.io Version: 0.13.0
2016-08-05T00:27:47+0800 [Controller 13433] Node Public Key: dbdc15e38c8e8d5ea53fb51ad1234affedcfd2e55480e6408ff69ff173e47653
2016-08-05T00:27:47+0800 [Controller 13433]
2016-08-05T00:27:47+0800 [Controller 13433] Running from node directory '/data/wamp/helloworld/.crossbar'
2016-08-05T00:27:47+0800 [Controller 13433] Controller process starting (CPython-EPollReactor) ..
2016-08-05T00:27:47+0800 [Controller 13433] Node configuration loaded from 'config.json'
启动服务器,读取配置,并开始监听
Client端
Components
的概念,就是组建,是RPC 的调用和被调用方,也可以是 PubSub的发布和订阅方,四种角色都是组件,在这个前提下写应用code。
RPC模型
3个角色 Caller
, Callee
, Dealer
Caller
(调用者) 使用url和参数调用远程接口,Callee
拿到参数去执行,然后返回结果Callee
首先会注册调用到Dealer
(crossbario),Caller
的调用首先到Dealer
,Dealer
会把Caller
的调用路由到对应的Callee
,然后把Callee
的结果,返回给Caller
.Caller
和Callee
会跑应用代码,Dealer
会做RPC的通用路由。
RPC模型主要有个两个步骤,注册程序,调用程序。
现在问题是,我写好了RPC的程序,怎么注册到router里面呢?是在crossbar中自动生成,还是要手动改配置文件等?
其实都不是,都是由 Components自己去注册,其他Componets来自己使用。具体的操作类似 Callee程序连接 crossbar, 然后注册自己能给别人提供的API,然后Caller
连接 Router crossbario 调用程序,如果 Callee
掉线了,那么 Caller
也就无法调用了。
PubSub 模型
有3个角色 Publisher
, Subscriber
, Broker
Publiser
(发布者)提供 url和对应的 payload, Subscribers
订阅者可以接收到发布者的信息。Broker
就是提供发布和订阅的场所。跟我们大多数的消息队列中提供的发布订阅模式类似.
基于入门教程 WAMP programming 写了一遍,大概有感性的认识。
思考
如果是1w台设备的管理,有定时上报信息,有控制设备端的指令,怎么设计呢?
设备主动通信的时候,使用RPC,服务端提供通用的接口就行了。
服务端主动通信的时候就需要使用PubSub,这样可以及时把消息push到设备上。
服务端性能要求比较高,对于设备端可以简单的实现协议,然后封装API就能完成很多工作了。
这玩意的性能和工业案例有吗?
官网上给了几个,不过看起来都不熟悉
基于WAMP的Crossbario 安装入门的更多相关文章
- 基于PHP的cURL快速入门
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性,以及在PHP中如 ...
- (转)基于PHP的cURL快速入门
1. 原文:基于PHP的cURL快速入门 英文原文:http://net.tutsplus.com/tutorial ... for-mastering-curl/ 原文作者:Burak Guzel ...
- Express安装入门与模版引擎ejs
Express安装入门与模版引擎ejs 目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set ...
- Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
摘要: Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1 安装遇到问题请文末留言. 悦动智能公众号:aibbtcom AI这个概念好像突然就 ...
- 基于PHP的cURL快速入门教程 (小偷采集程序)
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数. 最爽的是,PHP也支持 cURL 库.本文将介绍 c ...
- Eclipse Che安装入门和使用(一)
Eclipse Che序列博文如下: 安装和调试篇:Eclipse Che安装入门和使用(一) Web进阶篇:Eclipse Che开发Spring Web应用(入门) (二) 本文摘要: Eclip ...
- 3分钟wamp中php安装 pear 然而并没有用 并没能借此安装phpunit 不得不借用了其他的方式安装phpunit
15:42 2015/11/233分钟wamp中php安装 pear环境介绍:windows10,wamp2.5(推荐博客的博主是win7,所以系统应该不是问题)注意:在过程中要输入一次 yes,不要 ...
- Solr安装入门、查询详解
Solr安装入门:http://www.importnew.com/12607.html 查询详解:http://www.360doc.com/content/14/0306/18/203871_35 ...
- Docker安装入门 -- 应用镜像
Docker安装入门 -- 应用镜像 WordPress 1.docker build -t csphere/wordpress:4.2 . 2.docker run -d -p 80:80 -- ...
随机推荐
- redis中密码设置
先打开redis-server 再打开redis-cli 在redis-cli对redis进行操作 可以通过编辑redis.conf配置文件来设置密码. 1.重启Redis设置密码: 在配置文件中有个 ...
- virtualenvwrapper 的安装和使用
virtualenvwrapper是用来管理virtualenv的扩展包,用着很方便. 1. 安装: #安装virtualenv (sudo) pip install virtualenv #安装vi ...
- Node.js Query Strings
Query String 稳定性: 3 - 稳定 这个模块提供了一些处理 query strings 的工具,包括以下方法: querystring.stringify(obj[, sep][, eq ...
- PHP 5 常量
PHP 5 常量 常量值被定义后,在脚本的其他任何地方都不能被改变. PHP 常量 常量是一个简单值的标识符.该值在脚本中不能改变. 一个常量由英文字母.下划线.和数字组成,但数字不能作为首字母出现. ...
- HTML DOM 改变 HTML 内容
HTML DOM 允许 JavaScript 改变 HTML 元素的内容. 改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Feb 25 201 ...
- 算法之路(三)----查找斐波纳契数列中第 N 个数
算法题目 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: * 前2个数是 0 和 1 . * 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, 1 ...
- Swift中方法闭包参数不能省略括号的一种情况
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在swift中,如果方法的最后一个参数是一个闭包类型, ...
- maven配置详解
什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的 ...
- springmvc的介绍和第一个例子
SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...
- 使用Java正则表达式去掉Double类型的数据后面多余的0
方法 /** * 使用java正则表达式去掉多余的.与0 * @param s * @return */ public static String subZeroAndDot(String s){ i ...