Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
파일기반 메세지큐
레스토랑 서비스 시뮬레이션 구현
조 성 수
컴퓨터 공학과 / 2011104054
August 3, 2016 자료구조 최종 발표
2
1. 프로젝트 목표
2. 설계 및 구현
3. 테스트
4. 회고
Contents
프로젝트 목표
1
일반 자료구조의 고도화
• 수업시간에 배운 자료구조의 특징은 이해가 되었다.
• 자료구조의 응용은 서비스의 개발로 이어진다.
• 어느 상황에서 써야한다는 걸 익히기엔 좋지만 도전적인가? = 결코 그렇지 않다.
• 무언가...
공유 큐
• 기존의 큐는 단일 프로그램에서 사용하는 자료구조이다.
• 만일 여러 프로그램이 같은 큐를 공유해서 사용하려면 어떻게 해야할까?
• 여러 프로그램이 같이 사용할 수 있는 공유 큐를 만들어보자
August 3,...
대략적인 그림
August 3, 2016 자료구조 최종 발표
6
동시적 Enqueue / Dequeue
생산자 / 소비자 구분
August 3, 2016 자료구조 최종 발표
7
구현의 간단함을 위해 생산자와 소비자를 구분
역할 구분
August 3, 2016 자료구조 최종 발표
8
.
생산자 소비자
공유 큐에 데이터를 넣는
Enqueue 의 기능만 한다.
공유 큐에서 데이터를
꺼내는 Dequeue의
능을 한다.
공유 큐를 어떻게 구현할까
• 한 컴퓨터에서 여러 프로그램이 같이 사용할 수 있는 자원??
• 가장 쉬운 방법으로 파일을 이용하자.
• 파일을 기반으로 한 공유 큐를 구현
• 공유 큐를 이용하여 메시지를 교환하는 메시지...
메시지큐의 응용
• 메시지큐를 이용하여 무엇을 만들까?
• 생산자와 소비자가 구분이 되는 역할의 프로그램을 만들자.
• 여러 생산자가 ‘주문’이라는 메시지를 생산하고, 매장이 ‘주문’을 소비하는
소비자가 되는 레스토랑 ...
최종 목표
August 3, 2016 자료구조 최종 발표
11
파일기반 메시지큐의 구현
설계와 구현
2
레스토랑 서비스
August 3, 2016 자료구조 최종 발표
13
• 레스토랑 서비스의 기능
• 주문
• 주문 취소
• 결제
• 회원가입
• 로그인
레스토랑 서비스 구조
August 3, 2016 자료구조 최종 발표
14
• 주기적으로 메시지큐에서 메시지를
가져와 주문을 처리한다.
• Request Worker가 주문을 해석/실행
어떤 자료구조를 사용할 것인가?
• 큐
• 음식 주문 큐
• 메시지큐
• 해시 테이블
• 사용자 관리
August 3, 2016 자료구조 최종 발표
15
• 링크드 리스트
• 큐 자체 구현
• 결제 내역
• 해시 테이블...
해시 테이블
• 왜 필요한가?
• 서비스를 하는 매장이다 보니 이용하는 사람들이 매우 많을 것이다.
• 각 사람들을 기록하고, 그 사람들의 결제 내역을 기록해야한다.
• 그리고 그 사람들을 빠르게 검색해야한다.
• 어떻...
메시지큐의 구현
August 3, 2016 Presentation Title
17
• 여러 프로그램이 동시에 사용하도록 해야한다.
• 하지만 ‘동시’ 접근을 할 경우 파일에 메시지가 올바르게 저장되지 않는다.
• ‘동시...
메시지큐의 구현
August 3, 2016 자료구조 최종 발표
18
Lock 파일의 도입
-> 모든 프로그램은 메시지큐를 이용하기 전 Lock 파일이 존재하는지 확인한다.
-> 만약 존재하면 일정 시간 대기한 후 다시 ...
메시지큐 사용 흐름
August 3, 2016 자료구조 최종 발표
19
테스트
3
메시지큐의 테스트
August 3, 2016 Presentation Title
21
• 시뮬레이션 프로그램을 만들어서 메시지큐가 잘 동작하는지 확인
• Thread를 이용하여 동시 접근 클라이언트의 갯수와 요청 수를 조절
메시지큐의 테스트 결과
August 3, 2016 자료구조 최종 발표
22
• 동시 접근 클라이언트가 20개 이상을 넘어가면 메시지큐에 데이터가 중첩되
어 저장된다.
• 20개 미만일 경우에도 한 클라이언트당 요청 갯수...
원인 분석
August 3, 2016 자료구조 최종 발표
23
• Lock 파일을 생성해도 그것이 실제로 반영되기까지의 지연시간을 계산하지
못함.
• 1ms와 같은 찰나의 순간에 동시에 접근하는 것에 대해 컨트롤 하지 ...
회고
4
회고
도전적인 정신으로 만들었던 메시지큐가 그래도 잘 동작해서 다행이다.
비록 특정 케이스에서만 잘 동작하지만 더 많은 연구를 한다면 모든 상황을 대
응할 수 있을 것이다.
하나의 주요 자료구조를 이용하여 부가적인 산출...
파일기반 동기식 메세지큐를 이용한 간단한 레스토랑 서비스 시뮬레이션 구현
Upcoming SlideShare
Loading in …5
×

파일기반 동기식 메세지큐를 이용한 간단한 레스토랑 서비스 시뮬레이션 구현

805 views

Published on

파일을 기반으로 한 동시기 메세지큐를 이용하여, 레스토랑 서비스를 시뮬레이션 한 프로젝트의 소개 슬라이드

Published in: Software
  • Be the first to comment

파일기반 동기식 메세지큐를 이용한 간단한 레스토랑 서비스 시뮬레이션 구현

  1. 1. 파일기반 메세지큐 레스토랑 서비스 시뮬레이션 구현 조 성 수 컴퓨터 공학과 / 2011104054
  2. 2. August 3, 2016 자료구조 최종 발표 2 1. 프로젝트 목표 2. 설계 및 구현 3. 테스트 4. 회고 Contents
  3. 3. 프로젝트 목표 1
  4. 4. 일반 자료구조의 고도화 • 수업시간에 배운 자료구조의 특징은 이해가 되었다. • 자료구조의 응용은 서비스의 개발로 이어진다. • 어느 상황에서 써야한다는 걸 익히기엔 좋지만 도전적인가? = 결코 그렇지 않다. • 무언가 도전적인 것을 해보자 • 기존 자료구조를 고도화하여 나만의 자료구조를 만들어보자 August 3, 2016 자료구조 최종 발표 4 기존의 자료구조를 응용한 고도화된 자료구조 개발
  5. 5. 공유 큐 • 기존의 큐는 단일 프로그램에서 사용하는 자료구조이다. • 만일 여러 프로그램이 같은 큐를 공유해서 사용하려면 어떻게 해야할까? • 여러 프로그램이 같이 사용할 수 있는 공유 큐를 만들어보자 August 3, 2016 자료구조 최종 발표 5
  6. 6. 대략적인 그림 August 3, 2016 자료구조 최종 발표 6 동시적 Enqueue / Dequeue
  7. 7. 생산자 / 소비자 구분 August 3, 2016 자료구조 최종 발표 7 구현의 간단함을 위해 생산자와 소비자를 구분
  8. 8. 역할 구분 August 3, 2016 자료구조 최종 발표 8 . 생산자 소비자 공유 큐에 데이터를 넣는 Enqueue 의 기능만 한다. 공유 큐에서 데이터를 꺼내는 Dequeue의 능을 한다.
  9. 9. 공유 큐를 어떻게 구현할까 • 한 컴퓨터에서 여러 프로그램이 같이 사용할 수 있는 자원?? • 가장 쉬운 방법으로 파일을 이용하자. • 파일을 기반으로 한 공유 큐를 구현 • 공유 큐를 이용하여 메시지를 교환하는 메시지큐를 만들자 August 3, 2016 자료구조 최종 발표 9
  10. 10. 메시지큐의 응용 • 메시지큐를 이용하여 무엇을 만들까? • 생산자와 소비자가 구분이 되는 역할의 프로그램을 만들자. • 여러 생산자가 ‘주문’이라는 메시지를 생산하고, 매장이 ‘주문’을 소비하는 소비자가 되는 레스토랑 서비스를 만들자. August 3, 2016 자료구조 최종 발표 10
  11. 11. 최종 목표 August 3, 2016 자료구조 최종 발표 11 파일기반 메시지큐의 구현
  12. 12. 설계와 구현 2
  13. 13. 레스토랑 서비스 August 3, 2016 자료구조 최종 발표 13 • 레스토랑 서비스의 기능 • 주문 • 주문 취소 • 결제 • 회원가입 • 로그인
  14. 14. 레스토랑 서비스 구조 August 3, 2016 자료구조 최종 발표 14 • 주기적으로 메시지큐에서 메시지를 가져와 주문을 처리한다. • Request Worker가 주문을 해석/실행
  15. 15. 어떤 자료구조를 사용할 것인가? • 큐 • 음식 주문 큐 • 메시지큐 • 해시 테이블 • 사용자 관리 August 3, 2016 자료구조 최종 발표 15 • 링크드 리스트 • 큐 자체 구현 • 결제 내역 • 해시 테이블의 키 리스트
  16. 16. 해시 테이블 • 왜 필요한가? • 서비스를 하는 매장이다 보니 이용하는 사람들이 매우 많을 것이다. • 각 사람들을 기록하고, 그 사람들의 결제 내역을 기록해야한다. • 그리고 그 사람들을 빠르게 검색해야한다. • 어떻게 구현할 것인가? • 사람이 매우 많으므로 좋은 해시 알고리즘을 써야한다. • 키를 MD5 단방향 해시화하여 이용하자. • 테이블에 저장된 키 리스트를 보관하기 위해, 링크드 리스트를 사용하자 August 3, 2016 자료구조 최종 발표 16
  17. 17. 메시지큐의 구현 August 3, 2016 Presentation Title 17 • 여러 프로그램이 동시에 사용하도록 해야한다. • 하지만 ‘동시’ 접근을 할 경우 파일에 메시지가 올바르게 저장되지 않는다. • ‘동시’ 접근을 방어하면서 모든 메시지를 저장할 수 있는 방안이 필요하다. • 파일의 한 줄에 반드시 하나의 메시지가 기록되어야한다.
  18. 18. 메시지큐의 구현 August 3, 2016 자료구조 최종 발표 18 Lock 파일의 도입 -> 모든 프로그램은 메시지큐를 이용하기 전 Lock 파일이 존재하는지 확인한다. -> 만약 존재하면 일정 시간 대기한 후 다시 접근을 시도한다. MessageQueue.lock
  19. 19. 메시지큐 사용 흐름 August 3, 2016 자료구조 최종 발표 19
  20. 20. 테스트 3
  21. 21. 메시지큐의 테스트 August 3, 2016 Presentation Title 21 • 시뮬레이션 프로그램을 만들어서 메시지큐가 잘 동작하는지 확인 • Thread를 이용하여 동시 접근 클라이언트의 갯수와 요청 수를 조절
  22. 22. 메시지큐의 테스트 결과 August 3, 2016 자료구조 최종 발표 22 • 동시 접근 클라이언트가 20개 이상을 넘어가면 메시지큐에 데이터가 중첩되 어 저장된다. • 20개 미만일 경우에도 한 클라이언트당 요청 갯수가 많다면 중첩이 발생한 다.
  23. 23. 원인 분석 August 3, 2016 자료구조 최종 발표 23 • Lock 파일을 생성해도 그것이 실제로 반영되기까지의 지연시간을 계산하지 못함. • 1ms와 같은 찰나의 순간에 동시에 접근하는 것에 대해 컨트롤 하지 못함. • 그래도 적절히 컨트롤 하면 메시지큐를 이용할 수 있다.
  24. 24. 회고 4
  25. 25. 회고 도전적인 정신으로 만들었던 메시지큐가 그래도 잘 동작해서 다행이다. 비록 특정 케이스에서만 잘 동작하지만 더 많은 연구를 한다면 모든 상황을 대 응할 수 있을 것이다. 하나의 주요 자료구조를 이용하여 부가적인 산출물을 만들면서 프로그램을 더 잘 만들 수 있다는 자신감이 생겼다. August 3, 2016 Presentation Title 25

×