- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它:
这是我的解决方案:
'use strict';
const zmq = require('zeromq');
const cluster = require('cluster');
const push = zmq.socket('push');
const pull = zmq.socket('pull');
const cores_num = require('os').cpus().length;
let workers_num = 0;
push.bind('tcp://127.0.0.1:9998');
pull.bind('tcp://127.0.0.1:9999');
// push.bind('ipc://push.ipc');
// pull.bind('ipc://pull.ipc');
nếu (cluster.isMaster) {
for (let j = 0; j < cores_num; j++) {
cluster.fork();
}
cluster.on('online', (worker) => {
console.log(`Worker with pid ${worker.process.pid} is created!`);
});
pull.on('message', (data) => {
const response = JSON.parse(data.toString());
if (response.type === 'ready') {
if (workers_num >= 0 && workers_num < 3) {
workers_num++;
if (workers_num == 3) {
console.log('Ready!');
for (let i = 0; i < 10; i++) {
push.send(JSON.stringify({
type: 'job',
data: `This message has id ${i}`
}));
}
}
}
} else if (response.type === 'result') {
console.log(data.toString());
}
});
} khác {
const worker_push = zmq.socket('push');
const worker_pull = zmq.socket('pull');
worker_pull.connect('tcp://127.0.0.1:9998');
worker_push.connect('tcp://127.0.0.1:9999');
// worker_pull.connect('ipc://push.ipc');
// worker_push.connect('ipc://pull.ipc');
worker_push.send(JSON.stringify({
type: 'ready'
}));
worker_pull.on('message', data => {
const request = JSON.parse(data);
if (request.type === 'job') {
console.log(`Process ${process.pid} got message ${request.data}`);
worker_push.send(JSON.stringify({
type: 'result',
data: `This message is a response from process ${process.pid}`,
time: Date.now()
}));
}
});
}
如您所见,它仅在 PUSH/PULL 套接字和 worker 通过 TCP 通信时有效,但我想知道它不能通过 IPC 工作的原因。
gia hạn(引用:“路径名phải可写”下方的条件 4): 我希望你能帮助我找到问题。
câu trả lời hay nhất
你有ipc://push.ipc
(2个斜线)你真的需要ipc:///push.ipc
协议(protocol)是 ipc://
然后你需要文件路径 /push.ipc
你的进程是否有写入根目录的权限?除非您以 root 身份运行,否则我认为不会。
我会将路径更改为类似 /tmp/push.ipc
的路径,它在大多数系统中对所有用户都是可写的。
在这种情况下,您的网址应该是:
ipc:///tmp/push.ipc
我根本不使用 Node ,但根据我对其他语言分支的了解,我认为整个程序在不同的进程/线程中再次运行。
在这种情况下,不是每个工作人员都尝试再次 bind()
,因为套接字创建/绑定(bind)代码在 nếu (cluster.isMaster) {
我觉得应该是这样的
nếu (cluster.isMaster) {
const push = zmq.socket('push');
const pull = zmq.socket('pull');
push.bind('ipc://push.ipc');
pull.bind('ipc://pull.ipc');
....
}
关于node.js - ZeroMQ PUSH/PULL 通信不能通过 IPC 工作,但它可以通过 TCP 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56983708/
Tôi mới làm quen với ZMQ. Tôi thấy việc triển khai ổ cắm ZMQ đơn giản hơn nhiều so với winock. Nhưng tôi nghi ngờ "liệu máy khách được tạo bằng ổ cắm ZMQ TCP có thể giao tiếp với máy chủ TCP truyền thống không?"
Tôi muốn gửi dữ liệu tới Logstash bằng giao thức TCP. Để gửi dữ liệu tôi đang sử dụng Node-RED. Một cấu hình đơn giản trông như thế này: Trong thư mục Logstash tôi đã tạo một tệp có tên no
Khi tôi cố gắng thay đổi tùy chọn chia tỷ lệ cửa sổ, với quyền root, tôi có thể thay đổi giá trị bằng cách thực thi net.ipv4.tcp_mem=16777000 trong /proc/sys/net/. Nếu tôi phải thay đổi 100 hệ thống này thì sẽ cần một lượng lớn
Hãy thực hiện một số câu hỏi thực hành vào ngày mai nhưng tôi không thể tìm ra câu hỏi này. Số lượng cổng socket tối thiểu cần thiết để máy chủ TCP kết nối với máy khách TCP để liên lạc là bao nhiêu? Chắc chỉ có hai thôi phải không? Một cho máy chủ và một cho máy khách, nhưng điều đó có vẻ hiển nhiên. Bạn bè của tôi nghĩ TCP
Hãy xem xét một tình huống có một máy chủ và nhiều máy khách. Mỗi máy khách tạo một kết nối TCP để tương tác với máy chủ. Ba cách sử dụng TCP còn hoạt động: Duy trì phía máy chủ: Máy chủ gửi TCP duy trì hoạt động để đảm bảo rằng máy khách đang ở trạng thái sự kiện. Nếu khách hàng chết,
Sự khác biệt giữa TCP TAHOE và TCP RENO là gì? Điều tôi muốn biết là về hành vi của 3-dup-ack và thời gian chờ? Chuyện gì đã xảy ra với SST? Cảm ơn bạn! Câu trả lời hay nhất TCP Tahoe và Reno đang xử lý TC
Chào buổi sáng mọi người. Tôi đã đọc (chủ yếu trong Stack Overflow) về cách thực hiện xác thực mật khẩu an toàn (băm n lần, sử dụng muối, v.v.) nhưng tôi nghi ngờ về cách tôi thực sự sẽ triển khai nó trong kiến trúc máy khách-máy chủ TCP của mình. Tôi đã thực hiện và thử nghiệm phương pháp tôi cần
Trong khi duyệt qua RFC793, tôi biết rằng số thứ tự ban đầu phải được chọn theo cách ngăn chặn sự chồng chéo phân đoạn. Ai đó có thể giải thích các phân đoạn trùng lặp sẽ ảnh hưởng đến TCP như thế nào nếu xảy ra sự chồng chéo không? Câu trả lời hay nhất Các hệ điều hành khác nhau có hành vi khác nhau. Xem http://ins
Bạn có thể đưa ra một ví dụ minh họa khái niệm thuật toán nagle trong tcp/ip không? Câu trả lời hay nhất Tôi nghĩ Wikipedia làm rất tốt đoạn mở đầu. Tài liệu của Nagle, Kiểm soát tắc nghẽn trong IP
Có vẻ như kích thước cửa sổ nhận TCP tối đa là 1GB (khi sử dụng tỷ lệ). Do đó, RTT tối đa vẫn có thể lấp đầy ống 100Gb bằng một kết nối là 40ms (vì 2 * 40E-3 * 100E9/8 = 1GB). điều này sẽ
Hãy xem xét một kết nối TCP được thiết lập giữa hai điểm cuối TCP, một trong số đó gọi: close(): Ở đây, không được phép đọc hoặc ghi thêm. Tắt máy (fd, SHUT_WR): Điều này chuyển đổi kết nối song công hoàn toàn thành kết nối đơn giản, trong đó điểm cuối gọi SHUT_WR
Tôi mới viết trình phân tích cú pháp bằng Lua và tôi có hai câu hỏi nhanh. Tôi có một gói chứa các tùy chọn TCP như MSS, TCP SACK, Dấu thời gian, NOP, Tỷ lệ cửa sổ, Không xác định. Về cơ bản, tôi đang cố gắng phân tích những điều chưa biết trong trường tùy chọn TCP
TCP không chịu trách nhiệm đảm bảo rằng luồng được gửi nguyên vẹn qua mạng bằng cách thực hiện bất kỳ bước nào có thể cần thiết nếu xảy ra mất mát trong quá trình truyền, v.v.? Nó không được thực hiện đúng không? Tại sao các giao thức lớp ứng dụng cao hơn và các ứng dụng của chúng vẫn thực hiện tổng kiểm tra? câu trả lời hay nhất
Hãy xem xét một kết nối TCP (Reno) sử dụng liên kết 10 Mbps. Giả sử rằng liên kết này không đệm dữ liệu và bộ đệm nhận của người nhận lớn hơn nhiều so với cửa sổ tắc nghẽn. Giả sử rằng kích thước của mỗi phân đoạn TCP là 1500 byte và đường truyền hai chiều giữa người gửi và người nhận là
Hãy xem xét một kịch bản với client-a và server-b. server-b vô hiệu hóa các thủ tục TCP. server-b không có logic ứng dụng nào để kiểm tra xem kết nối TCP có mở hay không. khách hàng-a
Tôi đang cố gắng viết một máy chủ echo bằng Rust. sử dụng std::net::{TcpStream, TcpListener}; sử dụng std::io::prelude::*;
Tôi nghe nói rằng đối với các kết nối TCP, máy chủ sẽ lắng nghe trên một cổng và sử dụng cổng khác để gửi dữ liệu. Ví dụ: máy chủ web lắng nghe trên cổng 80. Bất cứ khi nào máy khách kết nối với nó, máy chủ sẽ sử dụng một cổng khác (giả sử 9999) để gửi dữ liệu (nội dung Web) cho máy khách
Tôi đang cố gắng tìm hiểu sự khác biệt giữa các phân đoạn TCP được gắn thẻ PSH và URG được gắn thẻ. Tôi đã đọc RFC nhưng vẫn không hiểu, một cái có đệm dữ liệu trước khi gửi nó đến quy trình còn cái kia thì không? Câu trả lời hay nhất Chúng là hai cơ chế hoàn toàn khác nhau. #
Có một dịch vụ của bên thứ ba hiển thị máy chủ TCP và máy chủ Node của tôi (máy khách TCP) phải sử dụng mô-đun tls Node để thiết lập kết nối TCP với nó. Là một máy khách TCP, máy chủ Node cũng là một máy chủ HTTP.
Tôi đang gửi một số gói TCP SYN để nhận lại TCP RST. Để xác định từng đầu dò, tôi đưa một bộ đếm vào trường chuỗi TCP. Tôi nhận thấy điều sau: Khi chuỗi bị tê liệt trong đầu dò SYN
Tôi là một lập trình viên xuất sắc, rất giỏi!