A. 怎么看linux 有没有安装 zeromq
不要用iojs来编译。 npm包基本上都是根据nodejs来开发的。iojs太超前了,而且和nodejs的也不太一样。
B. 在云服务器上,如何使用 zeromq 进行广播消息
你好。
建立了 VPS 虚拟服务器(windows server),然后安装了 python 和 zero mq。
写了一个简单的 pub/sub 程序, pub 端放在 VPS 这里。
你的采纳是我前进的动力,记得好评和采纳,互相帮助,
如果我的回答没能帮助您,请继续追问。
C. zeromq安装运行出现问题,请问该怎么解决
首先,运行vs2013,打开解决方案\zeromq-4.0.5\builds\msvc\msvc.sln,系统提示转换方案,选择是即可。设置配置为release win32。
执行“生成/生成解决方案”,没有意外的话构建会成功。
生成的libzmq.lib位于\zeromq-4.0.5\builds\msvc\Release,libzmq.dll则位于\zeromq-4.0.5\lib中,将libzmq.lib拷贝到\zeromq-4.0.5\lib目录,方便后面安装jzmq。
D. 如何解决 no jzmq in java.library.path
1. 确保zmq的各种library有安装正确,检查方法:查看/usr/local/lib,看里面有没有libjzmq.a, libjzmq.dylib, libzmq.a, libjzmq.dylib等
正确的安装方法是:(1)安装libzmq-master (2)安装zeromq-3.2.4,注意版本最好选这个,试过最新版本会报错 (3)安装jzmq-master java binding
直接搜这些关键词都能找到相应地github网页或者官网,然后按步骤输指令就行。
2.看看问题是不是出在java.library.path,打开 ~/.bash_profile, 加入 export LD_LIBRARY_PATH=/usr/local/lib. 或者直接在命令行里提供路径,例如:
javac -classpath /usr/local/share/java/zmq.jar HelloWorldClient.java
java -classpath .:/usr/local/share/java/zmq.jar -Djava.library.path=/usr/local/lib HelloWorldClient
E. 为啥linux使用zeromq出现未定义zmq
Windows下VS2008使用ZeroMQ说明一、下载ZeroMQ
二、编译ZeroMQ库文件
解压zeromq-4.0.3.zip文件,进入builds\msvc目录,用VS打开*.sln工程文件,编译生成解决方案。编译完成后,会在lib目录下生成dll和lib文件
三、编写简单的测试工程
用VS新建2个项目,一个是server端,一个是client端
将ZeroMQ源码项目的include目录下的两个文件“zmq.h”,“zmq_utils.h”拷贝至自己新建的工程
将ZeroMQ源码项目的lib目录下的两个文件“libzmq.dll”,“libzmq.lib”拷贝至自己新建的工程
将文件“zmq.h”,“zmq_utils.h”和“libzmq.lib”添加进自己新建的项目。
client端代码:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include "zeroMQ/zmq.h"
#include "zeroMQ/zmq_utils.h"
int main(int argc,char** argv)
F. 一名优秀的Linux运维人员该掌握哪些工具
运维人员必须熟悉的运维工具汇总
某日受邀请参加了一个BBS活动,于是有了下面的内容。
下面是在linux网站运维方向老男孩最近几年常用的免费的开源软件,临时即兴想起来的,在这里和大家分享,希望给初学者指引一点路。
linux的世界真的很精彩,还没入门的朋友赶紧进来吧!
操作系统:Centos※,Ubuntu,Redhat※,suse,Freebsd
网站服务:nginx※,apache※,lighttpd,php※,tomcat※,resin※
数据 库:MySQL※,Mysql-proxy,MariaDB,PostgreSQL
DB中间件:MyCat,amoeba,MySQL-proxy
代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
网站缓存:squid※,nginx※,varnish
NOSQL库:memcached※,memcachedb,TokyoTyrant※,MongoDB※,Cassandra※,redis※,CouchDB
存储相关:Nfs※,Moosefs(mfs)※,Hadoop※,glusterfs※,lustre,FastDFS
版本管理:svn※,git※
监控报警:nagios※,cacti※,zabbix※,munin,hyperic,mrtg,graphite
域名解析:bind※,powerdns,dnsmasq※
同步软件:rsync※,inotify※,sersync※,drbd※,csync2,union,lsyncd,scp※
批量管理:ssh+rsync+sersync※,Saltstack※,expect※,puppet※,ansible,cfengine
虚拟 化:kvm※,xen※
云计 算:openstack※,docker,cloudstack
内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop
邮件软件:qmail,posfix※,sendmail
远程拨号:openvpn※,pptp,openswan※,ipip※
统一认证:openldap(可结合微软活动目录)※
队列工具:ActiveMQ,RabbitMQ※,Metaq,MemcacheQ,Zeromq
打包发布:mvn※,ants※,jenkins※,svn
测试软件:ab,smokeping,siege,JMeter,Webbench,LoadRunner,http_load(都是※)
日志相关:syslog,rsyslog,Awstats,flume logstash scribe kafka,storm,ELK(Elasticsearch+Logstash+Kibana)DB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)
搜索软件:Sphinx,Xapian(大公司会自己开发类似网络的小规模内部搜索引擎)
提示:
1)以上所有软件都是老男孩用过或测试过的。
2)带※的为老男孩最近几年用的比较多,可信任使用的。也是近年来linux运维的大众。
3)有了功能分类和软件名,大家有需求,可以按功能找软件直接G就知道了。
4)学习要有舍有得,什么都抓必然短时间都不会精,希望大家能抓重点,抓精髓,大众软件(带※)先熟练了,这是基础加提高,在研究小众软件(不带※),这是高手之路,最后在研究偏门的,世外高手之路,当然前提是先掌握前面的大众和小众。
5)当然还有一些没有大众开源的有一些也很棒,如审计堡垒机程序。
G. suse11上安装emq报错
...
H. 如何在Python中使用ZeroMQ和Docker构建微服务架构
微服务是什么?
微服务是一种架构风格,它包括多个彼此间进行通信的独立进程。在设计上,这些进程具有高度的可扩展性、相互解耦而且一次只完成一个较小的任务。这些服务都拥有自己的资源以及通过网络实现彼此间通信的进程。
相比于靠后端的 单体结构
来封装所有服务器逻辑的传统客户端-服务器架构(C/S架构)而言,微服务架构的差异性体现在关注点分离(Separation of
concern)。这种设计模式更易于维护,使得灵活性、可扩展性及容错能力更强。但是这种分布式架构所的不足之处体现在如果设计不合理就会使得排错及维
护变得复杂。
一个简单微服务的例子
让我们来分析这样的一个场景:你正在使用微服务模式构建一个电子商务网店。
对于一个电商网店上的常见商品,好比说iPhone,其详情页会显示:
。产品的及基本信息
。你的购买历史
。哪些人买了iPhone也买了手机套
。与苹果手机相关的优惠和折扣
。店家的数据
。送货方式
。推荐商品等等
此外,这个简单的产品详情页的接口将有多个版本的来匹配web、移动端以及用于第三方应用程序的REST API。
在微服务模式中数据分布在多个服务之间。在这个例子中,服务包括:
。产品详情服务
。商家服务
。支付服务
。优惠及折扣服务
。库存服务
。定价服务
。回顾服务
。推荐服务
这些独立的服务是如何被访问的呢?
解决办法是使用一个API网管,它作为所有客户端的单一入口并且根据需求调用分布在整个基础架构中的特定微服务。以上模式的行业应用案例是NetFlix API网关,它具有支持不同设备的多个API客户端。你可以点击此处 了解更多 。
构建一个简单的微服务
目前有很多方法可以用于构建你的微服务。
在本文中我们将使用ZeroMQ来创建两个进程之间的通信。ZeroMQ提供了用于在套接字之上开发可扩展、分布式systed的构建块。它使用椭圆曲线密码体制(第四版)来实现安全性,并提供了即刻开启的 通讯模式 。
关于ZMQ,还有很多 优点 。MQ即是针对异步工作而设计的线程化消息队列。谈论太多zeroMQ的内容已经超出了本文的范畴,你可以阅读 使用zeromq 以及 zeromq用于分布式系统 。
我们要使用的另一个工具是 Docker 。本文假设读者对Docker已经有了基础的了解。
ZeroMQ有很多种通讯模式,为了开始我们的工作,让我们用ZeroMQ和Flask来配置一个简单的PUB-SUB。下图展示了组件之间的关系和数据流。
1&3 - 一个flask服务器运行在5000端口上而且其URL是 /downcase/ 。该URL用来接受(GET)请求,而所有格式为的请求将收到回应:答谢字符将会转换为小写字符并返回。
2 - 回应的消息也被发送给同一个容器中的ZMQ发布者(Publisher)
4,5 - ZMQ订阅者(subscriber)持续监听并将来自ZMQ服务器的消息保存到名为 subscriber.log 的文件中
创建服务器
首先看一下我们的Dockerfile
<pre><code>
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y --force-yes python python-dev python-setuptools software-properties-common gcc python-pip
RUN apt-get clean all
RUN pip install pyzmq
RUN pip install Flask
ADD zmqserver.py /tmp/zmqserver.py
Flask Port
EXPOSE 5000
Zmq Sub Server
EXPOSE 4444
CMD ["python","/tmp/zmqserver.py"]
</code></pre>
我们选择Ubuntu
14.04作为容器操作系统。我们安装了基本的软件包。通过pip,我们安装pyzmq(zeromq的Python绑定)同时也安装了Flask。接着
我们导出端口5000(flask服务器)和4444(发布者运行的端口)。此外,我们复制了包含所有flask及zeromq
pythond代码的脚本文件 zmqserver.py 并运行它。
现在我们来看一下zmqserver.py的内容:
server.py
import time
import zmq
HOST = '127.0.0.1'
PORT = '4444'
_context = zmq.Context()
_publisher = _context.socket(zmq.PUB)
url = 'tcp://{}:{}'.format(HOST, PORT)
def publish_message(message):
try:
_publisher.bind(url)
time.sleep(1)
_publisher.send(message)
except Exception as e:
print "error {}".format(e)
finally: _publisher.unbind(url)
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/downcase/", methods=['GET'])
def lowerString():
_strn = request.args.get('param')
response = 'lower case of {} is {}'.format(_strn, _strn.lower()) publish_message(response)
return response
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=False)
ZMQ发布者运行在4444端口上。我们创建了一个context并且声明了URL。我们运行了flask app,它通过URL /downcase/ 把GET获得的参数 Param 转换成小写字符,这就是服务的应答。应答的字符串是 published ,它作为一个消息把相同的字符串返回给浏览器。
为了构建以上的Docker映像(image),我们执行以下的命令:
sudo docker build -t docker-zmq-pub
并且在该映像之上执行:
docker run --name docker-pub-server -p 5000:5000 -p 4444:4444 -t docker-zmq-pub
我们把容器中的端口5000和4444映射到这台主机上,于是无论客户端在哪里,它们都可以订阅这个发布者。
订阅者客户端
client.py
import zmq
import sys
import time
import logging
import os
HOST = '127.0.0.1'
PORT = '4444'
logging.basicConfig(filename='subscriber.log', level=logging.INFO)
class ZClient(object):
def __init__(self, host=HOST, port=PORT):
"""Initialize Worker"""
self.host = host
self.port = port
self._context = zmq.Context()
self._subscriber = self._context.socket(zmq.SUB)
print "Client Initiated"
def receive_message(self):
"""Start receiving messages"""
self._subscriber.connect('tcp://{}:{}'.format(self.host, self.port))
self._subscriber.setsockopt(zmq.SUBSCRIBE, b"")
while True:
print 'listening on tcp://{}:{}'.format(self.host, self.port)
message = self._subscriber.recv()
print message
logging.info(
'{} - {}'.format(message, time.strftime("%Y-%m-%d %H:%M")))
if __name__ == '__main__':
zs = ZClient()
zs.receive_message()
我们声明了发布者的IP地址及端口,当前它运行在同一个的主机上因此地址是127开头。我们在URL tcp://IP:PORT 上进行监听。一旦我们收到一个消息,就将其附上时间戳后记录到名为 subscriber.log 的文件中。运行客户端要做的所有工作就是执行 python <name_of_client_file>.py 。如果你在以上的架构上进行构建,它可以很好地充当近实时的日志聚合引擎。
我在Unbuntu主机上对以上的代码进行了测试。这里所用的代码保管在 github 上。这是一个如何配置zmq、docker和python服务器的基础讲解,在我的下一片文章中我们会使用我们已经学习的东西构建简单的微服务。
I. 怎么在虚拟机上的linux系统安装ipython
一、通过系统的软件包管理器安装ipython软件包。
1、ubuntu直接用以下命令:
#apt-get install ipython
//ubuntu将ipython的库文件安装到/usr/share/python-support/ipython目录下,包括一系列.pth文件和符号链接,而ipython的二进制文件则安装在/usr/bin/ipyton目录下。
2、redhat(centos)使用下面的命令:
#yum list | grep ipython
//查看所使用的yum源是否有ipython包,没有的话,就只能换源或者源码安装了。
#yum install ipython.noarch
//安装ipython
二、下载tar包安装方法:
1、 解压:
[root@CentOS_1 ~]# tar xf Python-2.7.8
2、进入解压后的文件夹Python-2.7.8,编译:
[root@centos_1 Python-2.7.8]# ./configure --prefix=/usr/local/python2.7
3、make安装
[root@centos_1 Python-2.7.8]# make && make
安装Ipython
1、下载Ipython
下载Ipython的源码包ipython-3.0.0.tar.gz。
2、解压安装包
[root@centos_1 tmp]# tar zxvf ipython-3.0.0
3、安装readline-devel包
在编译安装Ipython之前,确保已经安装了readline-devel包,否则安装完成后,IPython将无法正常输入;
[root@centos_1 ~]# yum install readline-devel
3、使用Python2.7.8编译安装。
[root@centos_1 ipython-3.0.0]# /usr/local/python2.7/bin/python setup.py build
[root@centos_1 ipython-3.0.0]# /usr/local/python2.7/bin/python setup.py install
4、安装完成之后,会在Python2.7.8的bin目录下面生成一个IPython的可执行文件,为了方便使用,将IPython连接到/usr/bin目录下面。
[root@centos_1 bin]# ln -sf ipython /usr/bin/ipython