티스토리 뷰

AWS

잡큐 - Gearman and Lambda (1) - Gearman

장송송 2016. 4. 10. 11:53

잡큐 - Gearman  and   Lambda (1) - Gearman



0. 잡큐를 왜 쓸까?

- 분산 처리.

- 빅데이터 처리.

- 본인 서버가 있으면 기어맨!     AWS 유저라면  Lambda

- 예1) 동영상 인코딩

- 파일을 서버에 올리고 그걸 다시 인코딩프로세스로 넘길떄


- 1명이 올리면 총 11초


- 여러사람이라고 가정하면?


- n명이 올린거니까 n개 프로세스 동작...... 서버 사망 위험.


- 예2) 데이터 처리

- 1개 데이터 1개 워커 - 처리하는데 10초


- 1000개 데이터 5개 워커면 10 * 1000 / 5

- 워커만 늘려주면 무한 확장가능



1. 기어맨 설치.

       - sudo yum install uuid-devel libuuid libuuid-devel uuid boost-devel libevent libevent-devel

       - tar xvfz gearmand-1.1.7.tar.gz

cd gearmand-1.1.7

./configure

make -j

make test

make install

      - http://gearman.org/getting-started/

- apt-get install gearman-job-server


2. 기어맨 사용. (NODEJS 이용)

- 워커

var hostname = "localhost";

var port = 4730;

var gearmanode = require('gearmanode');

var worker = gearmanode.worker({

    servers: [{

        host: hostname,

        port: port

    }]

});

worker.addFunction("gearman_test", function(job) {

    try {

        var payload = job.payload.toString();

        var ret = JSON.parse(payload);

        console.log(ret);

        setTimeout(function() {

            job.workComplete("success_" + ret.id);

        }, 3000);

    } catch (e) {

        job.workComplete("Error");

    }

});


- 클라이언트

var hostname = "localhost";

var port = 4730;

var gearmanode = require('gearmanode');

var client = gearmanode.client({

    servers: [{

        host: hostname,

        port: port

    }]

});

var job = client.submitJob("gearman_test", JSON.stringify({

    id: "529ca0dc847c397d5e000655"

}));

job.on("complete", function() {

    console.log(job.response);

});

job.on("error", function() {

    console.log(job.Error);

}); 


3. 후기

- 현재 프로젝트에 사용하고있는데 매우 잘됨.

- 클라이언트가 많아지면 상황에 따라 워커만 늘려주면 된다.

- 상황에 따라 급하면 클라우드서버 100대 늘려놓고 워커 실행하면 만사 OK

- 나는 Nodejs를 이용했지만 다른언어(Java Python PHP C..)등도 이용가능 하다.

- 물론 서로간의 통신으로도 이용해도 된다.





'AWS' 카테고리의 다른 글

AWS Elasticsearch 직접 구축기  (0) 2016.04.22
AWS EC2 처음시작.  (1) 2016.04.21
잡큐 - Gearman and Lambda (2) - Lambda  (0) 2016.04.10
AWS Load Balancer 처리  (0) 2016.02.22
AWS EC2 서버 생성하기.  (0) 2016.02.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함