Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo instalar el cliente de Dropbox como un servicio en Ubuntu 14.04

marzo 4, 2020

 

Introducción

Hay muchas maneras que usted puede elegir para describir ZeroMQ; sin embargo, sigue siendo como lo que realmente es: un verdaderamente notable biblioteca de comunicación que beneficia a los desarrolladores en gran medida con su rica y madura conjunto de características.

En esta segunda entrega de los artículos digitalocean ZeroMQ, siguiendo nuestra anterior en la instalación de la aplicación, vamos a sumergirse en su uso y descubrir maneras de implementar realmente esta biblioteca rápido y potente. Vamos a hacer nuestro camino a través de diversos ejemplos divididos en secciones sucesivas, a partir de simples mensajes entre procesos (es decir, utilizando el modelo de solicitud / respuesta).

Nota: Este artículo constituye la segunda pieza sobre el tema. Si usted está interesado en aprender más sobre él (es decir, qué es y cómo se compara con un corredor mensaje completo), echa un vistazo a ZeroMQ Introducción y procedimientos de instalación antes de leer este tutorial.

Sobre

ZeroMQ

ZeroMQ es una biblioteca utilizada para implementar los sistemas de mensajería y comunicación entre aplicaciones y procesos – rápido y de forma asíncrona.

Si usted tiene experiencia previa con otras soluciones de mensajería de aplicaciones tales como RabbitMQ, podría llegar un poco poco difícil de entender la posición exacta de ZeroMQ.

Cuando se compara con algunos proyectos mucho más grandes, que ofrecen todas las partes necesarias de mensajería empresarial, ZeroMQ sigue siendo tan sólo una herramienta ligera y rápida para crear su propia cuenta.

Este artículo

Aunque técnicamente no es un marco, dada su funcionalidad y la posición clave que tiene para las tareas de los que resuelve, se puede considerar ZeroMQ siendo la columna vertebral de la aplicación de la capa de comunicación real de su aplicación.

En este artículo, nuestro objetivo es ofrecer que algunos ejemplos para inspirar que con todas las cosas que puede hacer.

Nota: Vamos a trabajar con el lenguaje Python y su intérprete clásico (Python C intérprete) en nuestros ejemplos. Después de instalar los enlaces de lenguaje necesarias, usted debe ser capaz de simplemente traducir el código y utilizar su favorito en su lugar sin ningún problema. Si desea aprender acerca de la instalación de Python en un VPS CentOS, visita nuestra Cómo configurar Python 2.7 en CentOS 6.4 tutorial.

Programación con ZeroMQ

ZeroMQ, funciona como un biblioteca a través de sockets siguiendo ciertos patrones de comunicación de red. Está diseñado para trabajar de forma asíncrona, y ahí es donde el sufijo MQ a su nombre viene – a partir de mensajes de gestión de colas de hilo antes de enviarlos. Tipos

ZeroMQ Socket difiere

ZeroMQ en la forma en que sus zócalos trabajo. A diferencia de la forma síncrona las tomas regulares de trabajo, la aplicación toma de ZeroMQ “presentar una abstracción de una cola de mensajes asíncrono”.

La forma en que estos zócalos de trabajo dependen del tipo de enchufe elegido. Y el flujo de mensajes que se envían dependerá de los patrones elegidos, de los cuales hay cuatro:

  • Solicitud / Respuesta patrón: Se utiliza para enviar una solicitud y recibir respuestas subsiguientes para cada uno enviado.
  • Publish / Subscribe patrón: se utiliza para la distribución de datos a partir de un único proceso (por ejemplo, editor) a varios destinatarios (por ejemplo, usuarios registrados). Patrón
  • Pipeline: Se utiliza para distribuir datos a los nodos conectados. Patrón
  • Exclusivo Par: Se utiliza para la conexión de dos pares entre sí, formando un par.

patrón de petición / respuesta: utiliza para enviar una solicitud y recibir respuestas subsiguientes para cada uno enviado.

publicación / suscripción Patrón: utiliza para distribuir datos de un solo proceso (por ejemplo, editor) a varios destinatarios (por ejemplo, usuarios registrados). Patrón

Pipeline: utiliza para distribuir datos a los nodos conectados. Patrón

Exclusivo Par: utiliza para conectar dos pares entre sí, formando un par. Tipos

ZeroMQ Transporte

ZeroMQ ofrece cuatro tipos diferentes de transporte para la comunicación. Estos son:

  • en proceso (INPROC): transporte de comunicación local (en proceso).
  • entre procesos (IPC): Local (entre procesos) Transporte de comunicación.
  • TCP: el transporte de comunicación de unidifusión a través de TCP.
  • PGM: Transporte de comunicación multidifusión con PGM.

en proceso (INPROC): Local (en proceso) transporte la comunicación.

entre procesos (IPC): local (entre procesos) Transporte de comunicación.

TCP: el transporte de comunicación Unicast utilizando TCP.

PGM: Transporte de comunicación multidifusión con PGM. Aplicaciones

Estructuración ZeroMQ

ZeroMQ funciona de manera diferente que UPS típicos y tradicionales de comunicación establecidos. Puede tener uno y otro lado del enlace (es decir, el servidor o el cliente) se unen y espera para las conexiones. A diferencia de enchufes estándar, ZeroMQ trabaja por la idea de saber que podría producirse una conexión y por lo tanto, se puede esperar a que se perfectamente bien.

Cliente – Servidor Estructura

para la estructuración de su cliente y el código del servidor, sería lo mejor para decidir y elegir uno que es más estable que la unión lateral y el otro (s) como el conectar .

Ejemplo:

Server Application Client Application
---------------------[ < .. < .. < .. < .. ...................... Bound -> Port:8080 Connects <- Port:8080

Client - Proxy - estructura del servidor

para resolver los problemas causados ​​por los dos extremos del ser comunicación en un estado dinámico (por lo tanto inestable), ZeroMQ proporciona dispositivos (es decir utensilios fuera de la caja) de red. Estos dispositivos se conectan a dos puertos diferentes y encaminar las conexiones a través.

  • Streamer: Un dispositivo streamer para las comunicaciones paralelas pipeline.
  • Forwarder: Un dispositivo de reenvío para las comunicaciones pub / sub.
  • cola: Un dispositivo de reenvío para las comunicaciones de petición / respuesta.

Ejemplo:

Server App. Device | Forward Client App.
............ > .. > . ]------------------[ < .. < .. ......... Connects 2 Port Binding Connects

Ejemplos de programación

Usando nuestro conocimiento de la sección pasado, ahora vamos a comenzar a utilizar que les permite crear aplicaciones sencillas.

Nota: continuación ejemplos por lo general consisten en aplicaciones que se ejecutan simultáneamente. Por ejemplo, para una configuración cliente / servidor para el trabajo, usted tendrá que tener tanto el cliente como el servidor que ejecuta la aplicación en conjunto. Una de las maneras de hacer esto es mediante el uso de la pantalla de Linux herramienta. Para obtener más información al respecto, consulte este DigitalOceanTutorial. Para instalar la pantalla en un sistema CentOS, recuerde que sólo tiene que ejecutar: yum install -y pantalla.

mensajería simple uso de petición / respuesta del patrón términos

En de comunicación entre aplicaciones, el patrón de petición / respuesta, probablemente, forma el clásico absoluto y nos da una buena oportunidad de comenzar con los fundamentos básicos de ZeroMQ.

casos de uso:

  • Para las comunicaciones simples entre un servidor y el cliente (s).
  • Comprobación de la información y solicitar actualizaciones.
  • Envío de cheques y actualizaciones al servidor.
  • Eco o implementaciones de ping / pong.

Para las comunicaciones simples entre un servidor y el cliente (s).

Comprobación de la información y solicitar actualizaciones.

Envío de cheques y actualizaciones del servidor.

Eco o implementaciones de ping / pong. tipo

Socket (s) utilizado:

  • zmq.REP
  • zmq.REQ

Ejemplo Servidor: server.py

crear un “server.py” utilizando nano ( nano server.py) y pegar el contenido de abajo explica por sí mismo.

import zmq

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
sock = context.socket(zmq.REP)
sock.bind("tcp://127.0.0.1:5678")

# Run a simple "Echo" server
while True:
message = sock.recv()
sock.send("Echo: " + message)
print "Echo: " + message

Cuando haya terminado de editar, guardar y enviar Salir presionando CTRL + X siguió con Y.

Ejemplo de cliente: client.py

crear un “client.py” usando nano (client.py nano ) y pegar el siguiente contenido.

import zmq
import sys

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
sock = context.socket(zmq.REQ)
sock.connect("tcp://127.0.0.1:5678")

# Send a "message" using the socket
sock.send(" ".join(sys.argv[1:]))
print sock.recv()

Cuando haya terminado de editar, guardar y salir pulsando CTRL + X siguió con Y.

Nota: Cuando se trabaja con la biblioteca ZeroMQ, recuerda que cada hilo usado para enviar un mensaje (es decir .send (..) ) espera un .recv (..) a seguir. No aplicar el par provocará excepciones.

Uso

Nuestra server.py se puso a trabajar como una aplicación “eco”. Lo que elegimos para enviar a la misma, se enviará de nuevo (por ejemplo, “Echo: mensaje ”).

Ejecutar el servidor utilizando el intérprete de Python:

python server.py

en otra ventana, mensajes enviar utilizando la aplicación cliente:

python client.py hello world!
# Echo: hello world!

Nota: Para apagar el servidor, puede utilizar la combinación de teclas: Ctrl + C

de Trabajo con la publicación / suscripción patrón

En el caso de publicación / suscripción patrón, ZeroMQ se utiliza para establecer uno o más suscriptores, que conecta a uno o varios editores y recibir continuamente lo envía editor (o semillas ).

Una opción para especificar un prefijo para aceptar sólo aquellos mensajes que comienzan con que está disponible con este patrón.

casos de uso:

publicación / suscripción patrón se utiliza para distribuir uniformemente mensajes a través de diversos consumidores. Las actualizaciones automáticas para marcadores y noticias pueden ser considerados como posibles áreas para utilizar esta solución. tipo

Socket (s) utilizado:

  • zmq.PUB
  • zmq.SUB

Editorial Ejemplo: pub.py

crear un “pub.py” utilizando nano ( nano pub.py) y pegar el siguiente contenido.

import zmq
import time

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
sock = context.socket(zmq.PUB)
sock.bind("tcp://127.0.0.1:5680")

id = 0

while True:
time.sleep(1)
id, now = id+1, time.ctime()

# Message [prefix][message]
message = "1-Update! >> #{id} >> {time}".format(id=id, time=now)
sock.send(message)

# Message [prefix][message]
message = "2-Update! >> #{id} >> {time}".format(id=id, time=now)
sock.send(message)

id += 1

Cuando haya terminado de editar, guardar y salir pulsando CTRL + X siguió con Y.

Abonado Ejemplo: sub.py

crear un “sub.py” usando nano ( nano sub.py) y pegar el siguiente contenido.

import zmq

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
sock = context.socket(zmq.SUB)

# Define subscription and messages with prefix to accept.
sock.setsockopt(zmq.SUBSCRIBE, "1")
sock.connect("tcp://127.0.0.1:5680")

while True:
message= sock.recv()
print message

cuando se está editando terminado, guarde y salga pulsando CTRL + X siguió con Y.

Nota: Usando el procedimiento .setsockopt (..), que se suscriben para recibir mensajes que comienzan con cadena 1. para recibir todo, dejarlo sin indicación (es decir, "").

Uso

Nuestra pub.py se puso a trabajar como editor , el envío de dos mensajes diferentes simultáneamente - - destinados a diferentes abonados.

Ejecutar el editor para enviar mensajes:

python pub.py

en otra ventana, ver las impresiones de contenido suscrito (es decir, 1):

python sub.py!
# 1-Update! >> 1 >> Wed Dec 25 17:23:56 2013

Nota: Para apagar el las aplicaciones de editores de abonado y, puede utilizar la tecla combinación: Ctrl + C

Pipelining la Pub./Sub. con el patrón de la tubería (Push / Pull)

muy similar en la forma en que se ve al patrón de publicación / suscripción, el tercero en la línea patrón de la tubería se presenta como una solución a un problema diferente: la distribución de mensajes a la demanda.

casos de uso:

tuberias de patrón se puede utilizar en casos en que la lista de elementos en cola necesita ser enrutado (es decir empujó en línea) para el que hace de ella (es decir, aquellos que tirón ). tipo

Socket (s) utilizado:

  • zmq.PUSH
  • zmq.PULL

PUSH Ejemplo: manager.py

crear un “manager.py” utilizando nano ( nano manager.py) y pegar el siguiente contenido.

import zmq
import time

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
sock = context.socket(zmq.PUSH)
sock.bind("tcp://127.0.0.1:5690")

id = 0

while True:
time.sleep(1)
id, now = id+1, time.ctime()

# Message [id] - [message]
message = "{id} - {time}".format(id=id, time=now)

sock.send(message)

print "Sent: {msg}".format(msg=message)

El archivo manager.py actuará como una tarea asignador .

TIRE Ejemplo: worker_1.py

crear un “worker1.py” utilizando nano ( `worker1.py` nano ) y pegar el siguiente contenido.

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
sock = context.socket(zmq.PULL)
sock.connect("tcp://127.0.0.1:5690")

while True:
message = sock.recv()
print "Received: {msg}".format(msg=message)

El worker_1.py archivo

importación ZMQ actuará como una tarea procesa (consumidor / trabajador).

Uso

Nuestra manager.py se fija para tener un papel de un asignador de tareas (es decir, un gerente), PUSH ing los artículos. Del mismo modo, trabajador _1.py se puso a trabajar como una instancia trabajador recibe estos elementos, cuando es procesado realizado por TIRE ing abajo en la lista.

Ejecutar el editor para enviar mensajes:

python manager.py

en otra ventana, ver las impresiones de contenido suscrito (es decir, 1):

python worker_1.py!
# 1-Update! >> 1 >> Wed Dec 25 17:23:56 2013

Nota: Para apagar el las aplicaciones de editores de abonado y, puede utilizar la tecla combinación: modelo Ctrl + C

Exclusivo par

Exclusivo patrón par implica y permite establecer un tono de tipo de canales de comunicación utilizando el / pAIR tipo de socket ZMQ.

Enlazar Ejemplo: bind.py

crear un “bind.py” utilizando nano ( nano bind.py) y pegar el siguiente contenido.

import zmq

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
socket = context.socket(zmq.PAIR)
socket.bind("tcp://127.0.0.1:5696")

cuando se está editando terminado, guarde y salga pulsando CTRL + X siguió con Y.

Conectar Ejemplo: connect.py

Crear un “connect.py” usando nano ( nano connect.py) y pegar el siguiente contenido.

import zmq

# ZeroMQ Context
context = zmq.Context()

# Define the socket using the "Context"
socket = context.socket(zmq.PAIR)
socket.connect("tcp://127.0.0.1:5696")

cuando se está editando terminado, guarde y salga pulsando CTRL + X siguió con Y.

Uso

Puede utilizar el ejemplo anterior para crear las aplicaciones bidireccionales de comunicación unidireccional de conexión.

Nota: Para apagar o bien, puede utilizar la combinación de teclas: Ctrl + C

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *