zoukankan      html  css  js  c++  java
  • nodejs 负载均衡

    教程:http://taobaofed.org/blog/2015/11/03/nodejs-cluster/

    纠正:net.createServerHandle();

    记录:http://www.jianshu.com/p/54b85f278695

    代码:

    master

    const net = require('net');
    const fork = require('child_process').fork;
    
    var handle = net.createServerHandle('0.0.0.0', 3000);
    
    for(var i=0;i<4;i++) {
       fork('./worker').send({}, handle);
    }
    

     worker

    const net = require('net');
    process.on('message', function(m, handle) {
      start(handle);
    });
    
    var buf = 'hello nodejs';
    var res = ['HTTP/1.1 200 OK','content-length:'+buf.length].join('
    ')+'
    
    '+buf;
    
    function start(server) {
        server.listen();
        server.onconnection = function(err,handle) {
            console.log('got a connection on worker, pid = %d', process.pid);
            var socket = new net.Socket({
                handle: handle
            });
            socket.readable = socket.writable = true;
            socket.end(res);
        }
    }
    

     解释,fork('/worker)->emit('message')

    教程:http://taobaofed.org/blog/2015/11/10/nodejs-cluster-2/

    由于多进程模型存在的问题,这里采用了另一种模型。实际中,先采用pm2来作。

    这篇教程,还有很多地方没看懂,有些看懂了,看是还没用到。

  • 相关阅读:
    TCP协议
    数据包以及数据传输
    网络模型
    Executors常见的线程池创建以及其问题
    线程池
    阻塞队列和死锁
    ConcurrentHashMap
    ReentrantLock,公平性锁和非公平性锁
    Lock
    jQuery如何获取table中每一行的数据并发送给后端?
  • 原文地址:https://www.cnblogs.com/wang-jing/p/5115807.html
Copyright © 2011-2022 走看看