All Projects → HowProgrammingWorks → InterProcessCommunication

HowProgrammingWorks / InterProcessCommunication

Licence: MIT license
Inter-process Communication

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to InterProcessCommunication

Scalecube Services
v2.0 - ScaleCube Services provides a low latency Reactive Microservices library for serverless service registry and discovery based on gossip protocol and without single point-of-failure or bottlenecks.
Stars: ✭ 23 (+109.09%)
Mutual labels:  tcp, ipc, rpc
metacom
RPC communication protocol for Metarhia stack 🔌
Stars: ✭ 42 (+281.82%)
Mutual labels:  tcp, ipc, rpc
Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (+1100%)
Mutual labels:  tcp, ipc, rpc
twjitm-core
采用Netty信息加载实现长连接实时通讯系统,客户端可以值任何场景,支持实时http通讯、webSocket通讯、tcp协议通讯、和udp协议通讯、广播协议等 通过http协议,rpc协议。 采用自定义网络数据包结构, 实现自定义网络栈。
Stars: ✭ 98 (+790.91%)
Mutual labels:  tcp, rpc
Ohsce
PHP HI-REL SOCKET TCP/UDP/ICMP/Serial .高可靠性PHP通信&控制框架SOCKET-TCP/UDP/ICMP/硬件Serial-RS232/RS422/RS485 AND MORE!
Stars: ✭ 206 (+1772.73%)
Mutual labels:  tcp, ipc
Watsontcp
WatsonTcp is the easiest way to build TCP-based clients and servers in C#.
Stars: ✭ 209 (+1800%)
Mutual labels:  tcp, rpc
Kalm.js
The socket manager
Stars: ✭ 155 (+1309.09%)
Mutual labels:  tcp, ipc
SuperSimpleTcp
Simple wrapper for TCP client and server in C# with SSL support
Stars: ✭ 263 (+2290.91%)
Mutual labels:  tcp, rpc
Hprose Html5
Hprose is a cross-language RPC. This project is Hprose 2.0 Client for HTML5
Stars: ✭ 237 (+2054.55%)
Mutual labels:  tcp, rpc
Ether1
Official Go implementation of The Etho Protocol
Stars: ✭ 41 (+272.73%)
Mutual labels:  ipc, rpc
socket
Dazzle Async Socket
Stars: ✭ 19 (+72.73%)
Mutual labels:  tcp, ipc
Asio2
Header only c++ network library, based on asio,support tcp,udp,http,websocket,rpc,ssl,icmp,serial_port.
Stars: ✭ 202 (+1736.36%)
Mutual labels:  tcp, rpc
Iot Dc3
IOT DC3 is an open source, distributed Internet of Things (IOT) platform based on Spring Cloud. It is used for rapid development of IOT projects and management of IOT devices. It is a set of solutions for IOT system.
Stars: ✭ 195 (+1672.73%)
Mutual labels:  tcp, rpc
Tosdatabridge
A collection of resources for pulling real-time streaming data off of TDAmeritrade's ThinkOrSwim(TOS) platform; providing C, C++, Java and Python interfaces.
Stars: ✭ 229 (+1981.82%)
Mutual labels:  tcp, ipc
Swoft Im
基于swoft-cloud的微服务架构,最小化拆分粒度,PHP7、多进程、协程、异步任务、mysql连接池、redi连接池、rpc连接池、服务治理、服务注册与发现、Aop切面、全注解
Stars: ✭ 189 (+1618.18%)
Mutual labels:  tcp, rpc
RRQMSocket
TouchSocket是.Net(包括 C# 、VB.Net、F#)的一个整合性的、超轻量级的网络通信框架。包含了 tcp、udp、ssl、http、websocket、rpc、jsonrpc、webapi、xmlrpc等一系列的通信模块。一键式解决 TCP 黏分包问题,udp大数据包分片组合问题等。使用协议模板,可快速实现「固定包头」、「固定长度」、「区间字符」等一系列的数据报文解析。
Stars: ✭ 286 (+2500%)
Mutual labels:  tcp, rpc
server-framework
纯C的分布式服务器框架通用模板,跨平台,模块动态加载,tcp/可靠UDP,协程RPC,日志,集群建立
Stars: ✭ 24 (+118.18%)
Mutual labels:  tcp, rpc
coreipc
WCF-like service model API for communication over named pipes and TCP. .NET and node.js clients.
Stars: ✭ 22 (+100%)
Mutual labels:  ipc, rpc
Ti Rpc
基于swoole封装的一个简易的JSON协议的RPC框架,思路是借鉴的,代码是自己写的。小修小改的,目前服务于前公司(注意是前公司)生产环境,每日支撑大约8000万次调用。
Stars: ✭ 144 (+1209.09%)
Mutual labels:  tcp, rpc
Co
Art of C++. Flag, logging, unit-test, json, go-style coroutine and more.
Stars: ✭ 2,264 (+20481.82%)
Mutual labels:  tcp, rpc

Межпроцессовое взаимодействие

Задать вопрос

Межпроцессовое взаимодействие в Node.js

Через IPC в node.js

Заходим в каталог /workers, проект разделен на 3 файла (хотя, все можно было бы написать и в одном, но мы делаем так для нашего удобства):

  • multicore.js - это запускаемый модуль, запускаем так node multicore
  • master.js - модуль, который запускается в родительском процессе
  • worker.js - модуль, который запускается в дочернем процессе

Запускаем 'node multicore', который подгружает сначала master.js и происходит порождение дочерних процессов по количеству ядер процессора os.cpus().length при помощи cluster.fork(), ссылки на воркеры складываются в массив workers. Родительский процесс рассылает дочерним через worker.send() задачу на исполнение. Дочерний процесс ловит задачу (это массив) и перемножает все его элементы на 2, после чего отправляет результат обратно в родительский процесс. Когда родительский процесс получает ответы от всех дочерних, то он выходит, завершая и дочерние.

Через TCP сокеты

Заходим в каталог /tcpServer. Тут лежит пример передачи объекта из адресного пространства одного процесса, в адресное пространство другого при помощи протокола TCP/IP и сокетов операционной системы, API которых обернуто в библиотеку 'net' для Node.js.

  • server.js - серверная часть, слушает TCP порт 2000 (ждет подключений);
  • client.js - клиентская часть, подключается к 127.0.0.1 на порт 2000.

Запускать нужно из двух консолей, сначала из первой консоли node server, потом из второй node client. После запуска client.js подключается к серверу и отправляет ему привет. При подключении клиента, сервер отправляет ему при помощи метода socket.write(data) объект user, сериализованный (преобразованный в строку) через JSON.stringify(object). При подключении сервер еще выводит в консоль IP адрес клиента из socket.localAddress. Дальше сервер вешает событие на получение данных из клиентского сокета через socket.on('data', function). Клиент, точно так же вешает на свой сокет событие получения данных, и когда они приходят, то передает их для парсинга (синтаксического разбора) в метод JSON.parse(string), результатом выполнения которого, есть обычный объект JavaScript, с которым можно работать, как с объявленным в нашем процессе, например, читать и писать его свойства и обращаться к методам (функциям). Например: console.log(user.age) или console.log(user['age']) или user.doSometging(argument).

Задания

  1. Сделать ту же распределенную задачу с умножением массива, пример которой приведен в /workers, только на TCP сокетах.
  2. Усовершенствовать задачу так, чтоб массив разбивался на части, которые отправляются в разные процессы и разные части массива должны обрабатываться в разных процессах, а результаты сливаться в родительский процесс в любом порядке.
  3. Сделать так, чтобы результаты склеивались в родительском процессе в том же порядке, в котором задача была разделена на части.

Дополнительные задания

  1. Реализовать работу системы с произвольным кол-вом вычислительных клиентов и отслеживать их занятость, т.е. мы имеем массив клиентов, отмечаем в нем, что некоторые получили задачу и еще не вернули ответ, и можем разделять новые задачи в любой момент на свободных клиентов.
  2. Реализовать два типа клиентов, первый уже есть, он выполняет вычисления, а второй - дает задачу серверу. Таким образом, один тип клиента это customer (заказчик услуги), а второй это worker (исполнитель услуги). Сервер теперь выполняет функцию brocker (брокера услуги).
  3. Применить для обмена между процессами протокол JSTP: HowProgrammingWorks/JSTP
  4. Реализовать любую задачу при помощи этого примера распределенных вычислений из курса "Численные методы" или других разделов вычислительной математики. Например, решение СЛАУ.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].