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