NATS是一个开源的、轻量级的、高性能的分布式消息通信系统,使用的公司有百度、西门子、VMware、HTC和爱立信。NATS Streaming是以NATS为动力的数据流系统,是用go语言写的,NATS Streaming server可执行文件的名称是nats-streaming-server,NATS Streaming嵌入,扩展,并且与核心的NATS平台无缝的对接,NATS Streaming server是根据麻省理工学院许可提供的开源软件,Apcera积极维护和支持NATS Streaming server。



此图来自官网,其他特性也可在官网查看。

测试环境

os:CentOS release 6.8 (Final) ip:192.168.0.31

Install the NATS Streaming server

我这里使用go环境安装,所以先部署go环境。

Install Go

wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

tar -C /usr/local -xzvf go1.8.3.linux-amd64.tar.gz

上面将go安装到/usr/local下。

配置环境变量

将下面这句添加到/etc/profile作为全局变量,或者$HOME/bash_profile作为此用户的变量。然后source此文件让环境变量生效。

export PATH=$PATH:/usr/local/go/bin

设置你的GOPATH

你的go工作目录(GOPATH)存储你的go代码。它可以是除了go安装目录(GOROOT)外的任何路径。

  • 为你的工作空间设置GOPATH环境变量
export GOPATH=$HOME/go
  • 还设置GOPATH/bin变量,用于运行编译go程序。
export PATH=$PATH:$GOPATH/bin

然后使用go get来下载源代码并进行编译安装:

go get github.com/nats-io/nats-streaming-server

上面编译安装完成后,会在GOPATH/bin目录下生成一个nats-streaming-server的二进制文件。

Start the NATS Streaming server

可以直接运行上面生成的nats-streaming-server二进制文件,启动一个独立的server。

nats-streaming-server

当启动成功时,你可以看到nats-streaming-server在tcp端口4222上监听客户端连接:

[3132] 2017/07/30 20:10:33.943821 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.6.0
[3132] 2017/07/30 20:10:33.944007 [INF] STREAM: ServerID: TN2MjoOfZd83WZLJIGwtYh
[3132] 2017/07/30 20:10:33.944016 [INF] STREAM: Go version: go1.8.3
[3132] 2017/07/30 20:10:33.944226 [INF] Starting nats-server version 0.9.6
[3132] 2017/07/30 20:10:33.944424 [INF] Listening for client connections on 0.0.0.0:4222
[3132] 2017/07/30 20:10:33.944436 [INF] Server is ready
[3132] 2017/07/30 20:10:34.225391 [INF] STREAM: Message store is MEMORY
[3132] 2017/07/30 20:10:34.225513 [INF] STREAM: ---------- Store Limits ----------
[3132] 2017/07/30 20:10:34.225531 [INF] STREAM: Channels: 100 *
[3132] 2017/07/30 20:10:34.225543 [INF] STREAM: --------- Channels Limits --------
[3132] 2017/07/30 20:10:34.225555 [INF] STREAM: Subscriptions: 1000 *
[3132] 2017/07/30 20:10:34.225566 [INF] STREAM: Messages : 1000000 *
[3132] 2017/07/30 20:10:34.225577 [INF] STREAM: Bytes : 976.56 MB *
[3132] 2017/07/30 20:10:34.225588 [INF] STREAM: Age : unlimited *
[3132] 2017/07/30 20:10:34.225599 [INF] STREAM: ----------------------------------

启动带有NATS监控的NATS Streaming Server

NATS Streaming Server暴露监控界面在嵌入NATS Server(gnatsd)在端口8222。

nats-streaming-server -m 8222

运行可以看到如下信息:

[3143] 2017/07/30 20:20:06.961108 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.6.0
[3143] 2017/07/30 20:20:06.961250 [INF] STREAM: ServerID: EYubV70M1FW4xetDCi8cXJ
[3143] 2017/07/30 20:20:06.961268 [INF] STREAM: Go version: go1.8.3
[3143] 2017/07/30 20:20:06.963097 [INF] Starting nats-server version 0.9.6
[3143] 2017/07/30 20:20:06.963988 [INF] Starting http monitor on 0.0.0.0:8222
[3143] 2017/07/30 20:20:06.964162 [INF] Listening for client connections on 0.0.0.0:4222
[3143] 2017/07/30 20:20:06.964183 [INF] Server is ready
[3143] 2017/07/30 20:20:07.247235 [INF] STREAM: Message store is MEMORY
[3143] 2017/07/30 20:20:07.247366 [INF] STREAM: ---------- Store Limits ----------
[3143] 2017/07/30 20:20:07.247385 [INF] STREAM: Channels: 100 *
[3143] 2017/07/30 20:20:07.247397 [INF] STREAM: --------- Channels Limits --------
[3143] 2017/07/30 20:20:07.247408 [INF] STREAM: Subscriptions: 1000 *
[3143] 2017/07/30 20:20:07.247420 [INF] STREAM: Messages : 1000000 *
[3143] 2017/07/30 20:20:07.247430 [INF] STREAM: Bytes : 976.56 MB *
[3143] 2017/07/30 20:20:07.247457 [INF] STREAM: Age : unlimited *
[3143] 2017/07/30 20:20:07.247471 [INF] STREAM: ----------------------------------

到谷歌浏览器访问192.168.0.31:8222可看到如下监控界面:

使用Go NATS Streaming clients的例子

发布者

stan-pub.go

package main

import (
"github.com/nats-io/go-nats-streaming"
"runtime"
"fmt"
"time"
) func main() {
//stan.Connect(clusterID, clientID, ops ...Option)
//默认clusterID为test-cluster
ns, err := stan.Connect("test-cluster", "myid", stan.NatsURL("nats://192.168.0.31:4222"))
if err != nil{
panic(err)
}
// Simple Synchronous Publisher
// does not return until an ack has been received from NATS Streaming
t1 :=time.Now().Format("2006-01-02 15:04:05")
//发布50000条消息
for i:=0;i<50000;i++ {
ns.Publish("logp", []byte("hello go"))
}
t2 :=time.Now().Format("2006-01-02 15:04:05")
// 打印发布开始时间和结束时间,可看出发布50000条消息耗时
fmt.Println("开始时间:"+t1, "结束时间"+t2)
ns.Close()
runtime.Goexit()
}

订阅者

stan-sub.go

package main

import (
"github.com/nats-io/go-nats-streaming"
"fmt"
"runtime"
"log"
) func main() {
//stan.Connect(clusterID, clientID, ops ...Option)
ns, err := stan.Connect("test-cluster", "myid1", stan.NatsURL("nats://192.168.0.31:4222"))
if err != nil{
panic(err)
}
// Simple Synchronous Publisher
// does not return until an ack has been received from NATS Streaming
i:=0
_, err1 := ns.Subscribe("logp",func(msg *stan.Msg){
i++
fmt.Printf("Received a message: %s+%d\n", string(msg.Data),i)
},stan.DurableName("cdn1"))
if err1 != nil{
panic(err1)
}
log.Printf("Listening on [%s]\n", "logp")
runtime.Goexit()
}

我是在IDEA中同时的运行这两个程序,则会看到发布出去的消息被及时的订阅了。

参考网址:

官网

go客户端

Install and Run NATS Streaming Server的更多相关文章

  1. NATS_12:NATS Streaming详解

    NATS Streaming NATS Streaming是一个以NATS为驱动的数据流系统且它的源码也是由Golang语言编写的.其中NATS Streaming服务是一个可执行的文件名为:nats ...

  2. Darwin Streaming Server 6.0.3安装、订制、插件或模块

    How to setup Darwin Streaming Server 6.0.3 on 32 or 64 bit Linux platforms, add custom functionality ...

  3. Darwin Streaming Server 简介

    Darwin Streaming Server     概要 Darwin Streaming Server简称DSS.DSS是Apple公司提供的开源实时流媒体播放服务器程序.整个程序使用C++编写 ...

  4. Darwin Streaming Server 安裝操作備忘

    Darwin Streaming Server 安裝操作 Darwin Streaming Server是蘋果公司推出的開放源碼.跨平台多媒體串流伺服器, 提供音樂 (mp3) 與影音 (3gp.mp ...

  5. Linux编译安装Darwin Streaming Server 6.0.3。。。

    目前主流的流媒体服务器有微软的windows media server.RealNetworks的Helixserver和苹果公司的Darwin Streaming Server. 微软的window ...

  6. Linux编译安装Darwin Streaming Server 6.0.3

    买回来VPS后就一直想在上面搭建一个流媒体服务,在网上搜索了很多资料,大部分都是介绍Linux中安装Darwin Streaming Server 5.5.5版本,因为这个版本提供了针对linux的安 ...

  7. Darwin Streaming server 的 Task 类

    Darwin Streaming Server 是一个开放源代码的streaming server,对于streaming server的编程和软件结构有着一定的参考价值,它是使用C++写的,其中的并 ...

  8. Darwin Streaming Server用vs2005编译运行过程

    原创. 一:编译 Darwin6.0.3版本是最新版本,也提供了.dsw文件.但是使用vs2005和vc6是编译不过的.所以,采用Darwin5.5.5版本.使用vc6打开WinNTSupport文件 ...

  9. Install and run DB Query Analyzer 6.04 on Microsoft Windows 10

          Install and run DB Query Analyzer 6.04 on Microsoft Windows 10  DB Query Analyzer is presented ...

随机推荐

  1. AppServ安装的一点小麻烦----

    好久,没装AppServ了,今天安装过程顺利,但是Apache,服务开启不了,页面也不能访问. 刚开始以为是版本下载错误了,先后换了N个版本,都不行. 在网上搜的过程中,偶然发现,一句话:64位系统, ...

  2. Linux文件锁定保护命令chattr介绍

    chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files- 最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTt ...

  3. 一篇文章让你搞懂 SSL 证书

    关于结婚这件事 那天和同事讨论到底什么才算是真正的「结婚」?这种话题本来是极其不应该存在的.传统意义的领个证书,办个婚礼.吃吃喝喝,但随着社会各族人民身心发展进化,原本那些繁琐流程简直是反人类,貌似现 ...

  4. PHP完成一个日历

    今天我们就用php中的数组合date 做一个日历. 先让我们回顾一下PHP里面的date . 1.时间戳:表示从计算机元年/UNIX纪年(0时区 1970/1/1 00:00:00)到当前事件的秒数. ...

  5. 用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上

    本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明 CefSharp说白了就是Chromium浏览器的嵌入式核心,我们 ...

  6. 【PHP】最详细PHP从入门到精通(四)——PHP中的字符串

     PHP从入门到精通 之PHP中的字符串 大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用.在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能, ...

  7. MySQL数据表的创建、查看、插入

    数据表:数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础.     1.首先我们打开一个数据库(这里我打开的是新创建的一个aaa数据库). 打开数据库:use + 数据库名;     2 ...

  8. web前段2017.6.8

    <body></body>background='图片路径'---表示背景图片图片:.jpg .png(透明图片) .gif(动态图)... 路径---绝对路径:相对于磁盘的路 ...

  9. (转载)配置tomcat支持jython

    工作需要,特记录下配置tomcat支持jython开发的过程.参考链接:@http://blog.itpub.net/13186779/viewspace-201861/ *环境在win7下搭建,jd ...

  10. (转载)VB6之鼠标移出事件

    转载链接:http://www.ltesting.net/ceshi/ruanjianceshikaifajishu/rjcskfyy/vb/2007/0525/3426.html Windows提供 ...