sistemas procesos problemas ppt operativos memoria gestion entre ejemplos distribuidos comunicaciĆ³n comunicacion ipc go

ipc - procesos - gestion de la memoria en linux



Ir a la comunicaciĆ³n entre procesos (2)

Go tiene un sistema RPC integrado ( http://golang.org/pkg/rpc/ ) para facilitar la comunicación entre los procesos de Go.

Otra opción es enviar datos codificados en gob ( http://blog.golang.org/2011/03/gobs-of-data.html ) a través de una conexión de red.

No debe descartar las redes locales sin una evaluación comparativa. Por ejemplo, Chrome utiliza canalizaciones con nombre para IPC y transfieren una gran cantidad de datos (por ejemplo, mapas de bits procesados) entre procesos:

Nuestra principal primitiva de comunicación entre procesos es la tubería con nombre. En Linux & OS X, usamos un par de socket ()

- http://www.chromium.org/developers/design-documents/inter-process-communication

Si las tuberías con nombre son lo suficientemente buenas para eso, probablemente sean lo suficientemente buenas para su caso de uso. Además, si escribe bien las cosas, podría comenzar a utilizar canalizaciones con nombre (porque es fácil) y luego cambiar a la memoria compartida si considera que el rendimiento de las canalizaciones con nombre no es lo suficientemente bueno (la memoria compartida no es fácil independientemente del idioma).

Estoy escribiendo un sistema de servidor de carga equilibrada en Go.

El servidor de equilibrio de carga se comunicará con varios servidores de aplicaciones y solicitudes de proceso. Estos servidores pueden funcionar tanto en la misma máquina como en la red.

Ya calculé la conexión de red, pero ahora necesito encontrar una forma óptima para que el equilibrador de carga se comunique con un servidor de aplicaciones local. Usar localhost -networking parece lejos de ser óptimo.

Estoy tratando de compartir memoria a través de las shmget sistema shmget y shmat , pero no he encontrado ningún ejemplo que funcione y el paquete syscall tampoco está completamente documentado.

¿Puede alguien proporcionarme un ejemplo de cómo usar estas llamadas o una alternativa realista que funcione en Go for doing IPC?


Sugeriría mirar 0mq . Es una biblioteca de mensajería diseñada para ser rápida y fácil ya sea que la use a través de la red, para IPC local o incluso para comunicación entre hilos. Maneja muchos de los bits difíciles de IPC, como hacer que los remitentes rechacen el envío de solicitudes si el receptor se sobrecarga, el encuadre de mensajes y la reconexión después de un error. Y tiene enlaces para MUCHOS idiomas, incluido Go, lo que lo hace útil para conectar sistemas escritos en diferentes idiomas.