본문 바로가기

Programming152

서블릿이란? 서블릿은 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 애플리케이션이다.웹서버에서는 정적인 페이지만을 제공한다. 그렇기 때문에 동적인 페이지를 제공하기 위해서 웹서버는 다른 무언가에게 도움을 요청하여 동적인 페이지를 작성해야한다. 동적인 페이지란 임의의 이미지를 골라 사용자에게 보여준다거나, 도서 목록이나 방문 로그 등 사용자가 요청한 시점에 페이지를 생성해서 전달해주는 것을 의미한다. 이렇게 웹서버를 도와서 동적인 페이지를 만들어주는 도우미 애플리케이션을 CGI 프로그램이라고 부른다. 대부분의 CGI 프로그램은 Perl 스크립트로 작성되는데, C, 파이썬, PHP 와 같은 언어로도 가능하다. 서블릿은 CGI 프로그램과 같은 도우미 애플리케이션인데, 자바로 구현되어있다.(그러므로 개발도 자바로 한다.. 2016. 9. 26.
ZooKeeper 활용해보기 가장 간단하게 ZooKeeper를 활용하기 위해서 서비스 중인 서버의 연결 상태를 체크하기 위한 용도로 구현을 해보기로 했다. 먼저 서비스 중인 각각의 서버를 Worker라 부르고 이를 모니터링하는 서버를 Monitor라고 부르기로 했다.Znode 구성Worker는 서버 구동 시 ZooKeeper의 /workers 노드의 하위에 Ephemeral 모드로 추가가 된다. 그리고 Monitor는 /workers 노드를 watch하고 있다가 변경사항이 발생하면 하위 노드까지 Watch를 수행한다. 결과적으로 아래 그림과 같은 형태가 되고 Worker1,2가 추가되거나 제거되는 경우 이벤트가 발생하여 Monitor가 인지하게 된다. 이를 통해 굉장히 쉽게 서버 상태를 모니터링할 수 있는 기능을 운영툴에 추가 했다.. 2016. 9. 25.
ZooKeeper API 주키퍼는 Java와 C를 위한 공식적인 API를 제공하고, 주키퍼 커뮤니티에서 .NET, python 등 여러 언어의 비공식적인 API를 제공하고 있다.주키퍼 API의 기본Znode는 주키퍼 앙상블의 핵심 컴포넌트이고 주키퍼 API는 주키퍼 앙상블과 znode의 세세히 조작할 수 있는 간단한 메소드를 제공한다.주키퍼 앙상블에 접속하면 주키퍼 앙상블은 클라이언트에게 하나의 Session ID를 발급한다.주기적으로 서버에 heartbeats를 전송한다. 그렇지 않으면 주키퍼 앙상블은 Session ID를 만료하고 클라이언트는 재연결해야한다.znode Get/Set은 session ID가 존재하는 한 활성화된다.모든 작업이 완료되었다면 주키퍼 앙상블과의 연결을 종료한다. 클라이언트가 오랫동안 비활성화 되면, .. 2016. 9. 25.
ZooKeeper 설치 설치ZooKeeper를 다운 받고 압축을 해제한다. ZooKeeper를 시작하기 위해서는 설정 파일이 필요하므로 conf/zoo.cfg 파일을 생성한다. tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181tickTime : milliseconds 단위의 heartbeat 시간을 의미한다.dataDir : in-memory 데이터베이스 스냅샷을 저장하기 위한 경로이고, 한편으로는 데이터베이스 갱신 시 작성되는 로그가 저장되는 경로이다.clientPort : 클라이언트의 커넥션을 listen 하는 port.이제 ZooKeeper를 실행할 수 있다. bin/zkServer.sh startZooKeeper의 로그 메세지는 log4j를 사용한다.여기서는 ZooKe.. 2016. 9. 25.