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

26
파일기반 메세지큐 레스토랑 서비스 시뮬레이션 구현 조성수 컴퓨터 공학과 / 2011104054

Upload: nexusz99

Post on 14-Apr-2017

181 views

Category:

Software


8 download

TRANSCRIPT

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

파일기반 메세지큐레스토랑 서비스 시뮬레이션 구현

조 성 수컴퓨터 공학과 / 2011104054

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

August 3, 2016 자료구조 최종 발표

2

1. 프로젝트 목표

2. 설계 및 구현

3. 테스트

4. 회고

Contents

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

프로젝트 목표

1

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

일반 자료구조의 고도화

• 수업시간에 배운 자료구조의 특징은 이해가 되었다.

• 자료구조의 응용은 서비스의 개발로 이어진다.• 어느 상황에서 써야한다는 걸 익히기엔 좋지만 도전적인가? = 결코 그렇지 않다.

• 무언가 도전적인 것을 해보자

• 기존 자료구조를 고도화하여 나만의 자료구조를 만들어보자

August 3, 2016 자료구조 최종 발표

4

기존의 자료구조를 응용한 고도화된 자료구조 개발

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

공유 큐

• 기존의 큐는 단일 프로그램에서 사용하는 자료구조이다.

• 만일 여러 프로그램이 같은 큐를 공유해서 사용하려면 어떻게 해야할까?

• 여러 프로그램이 같이 사용할 수 있는 공유 큐를 만들어보자

August 3, 2016 자료구조 최종 발표

5

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

대략적인 그림

August 3, 2016 자료구조 최종 발표

6

동시적 Enqueue / Dequeue

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

생산자 / 소비자 구분

August 3, 2016 자료구조 최종 발표

7

구현의 간단함을 위해 생산자와 소비자를 구분

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

역할구분

August 3, 2016 자료구조 최종 발표

8

.

생산자 소비자

공유 큐에 데이터를 넣는Enqueue 의 기능만 한다.

공유 큐에서 데이터를꺼내는 Dequeue의능을 한다.

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

공유 큐를 어떻게 구현할까

• 한 컴퓨터에서 여러 프로그램이 같이 사용할 수 있는 자원??

• 가장 쉬운 방법으로 파일을 이용하자.

• 파일을 기반으로 한 공유 큐를 구현

• 공유 큐를 이용하여 메시지를 교환하는 메시지큐를 만들자

August 3, 2016 자료구조 최종 발표

9

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

메시지큐의 응용

• 메시지큐를 이용하여 무엇을 만들까?

• 생산자와 소비자가 구분이 되는 역할의 프로그램을 만들자.

• 여러 생산자가 ‘주문’이라는 메시지를 생산하고, 매장이 ‘주문’을 소비하는

소비자가 되는 레스토랑 서비스를 만들자.

August 3, 2016 자료구조 최종 발표

10

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

최종 목표

August 3, 2016 자료구조 최종 발표

11

파일기반 메시지큐의 구현

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

설계와구현

2

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

레스토랑 서비스

August 3, 2016 자료구조 최종 발표

13

• 레스토랑 서비스의 기능

• 주문

• 주문 취소

• 결제

• 회원가입

• 로그인

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

레스토랑 서비스 구조

August 3, 2016 자료구조 최종 발표

14

• 주기적으로 메시지큐에서 메시지를

가져와 주문을 처리한다.

• Request Worker가 주문을 해석/실행

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

어떤 자료구조를 사용할 것인가?

• 큐

• 음식 주문 큐

• 메시지큐

• 해시 테이블• 사용자 관리

August 3, 2016 자료구조 최종 발표

15

• 링크드 리스트

• 큐 자체 구현

• 결제 내역

• 해시 테이블의 키 리스트

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

해시 테이블

• 왜 필요한가?• 서비스를 하는 매장이다 보니 이용하는 사람들이 매우 많을 것이다.

• 각 사람들을 기록하고, 그 사람들의 결제 내역을 기록해야한다.

• 그리고 그 사람들을 빠르게 검색해야한다.

• 어떻게 구현할 것인가?• 사람이 매우 많으므로 좋은 해시 알고리즘을 써야한다.

• 키를 MD5 단방향 해시화하여 이용하자.

• 테이블에 저장된 키 리스트를 보관하기 위해, 링크드 리스트를 사용하자

August 3, 2016 자료구조 최종 발표

16

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

메시지큐의 구현

August 3, 2016 Presentation Title

17

• 여러 프로그램이 동시에 사용하도록 해야한다.

• 하지만 ‘동시’ 접근을 할 경우 파일에 메시지가 올바르게 저장되지 않는다.

• ‘동시’ 접근을 방어하면서 모든 메시지를 저장할 수 있는 방안이 필요하다.

• 파일의 한 줄에 반드시 하나의 메시지가 기록되어야한다.

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

메시지큐의 구현

August 3, 2016 자료구조 최종 발표

18

Lock 파일의 도입

-> 모든 프로그램은 메시지큐를 이용하기 전 Lock 파일이 존재하는지 확인한다.

-> 만약 존재하면 일정 시간 대기한 후 다시 접근을 시도한다.

MessageQueue.lock

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

메시지큐 사용 흐름

August 3, 2016 자료구조 최종 발표

19

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

테스트

3

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

메시지큐의 테스트

August 3, 2016 Presentation Title

21

• 시뮬레이션 프로그램을 만들어서 메시지큐가 잘 동작하는지 확인

• Thread를 이용하여 동시 접근 클라이언트의 갯수와 요청 수를 조절

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

메시지큐의 테스트 결과

August 3, 2016 자료구조 최종 발표

22

• 동시 접근 클라이언트가 20개 이상을넘어가면 메시지큐에 데이터가중첩되

어 저장된다.

• 20개미만일 경우에도 한 클라이언트당요청 갯수가 많다면중첩이 발생한

다.

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

원인 분석

August 3, 2016 자료구조 최종 발표

23

• Lock 파일을 생성해도 그것이 실제로 반영되기까지의 지연시간을 계산하지

못함.

• 1ms와 같은찰나의순간에 동시에 접근하는 것에 대해컨트롤하지못함.

• 그래도 적절히컨트롤하면 메시지큐를 이용할 수 있다.

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

회고

4

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

회고

도전적인 정신으로 만들었던메시지큐가 그래도 잘 동작해서 다행이다.

비록 특정케이스에서만 잘 동작하지만더많은연구를 한다면 모든 상황을 대

응할 수 있을 것이다.

하나의 주요 자료구조를 이용하여부가적인 산출물을 만들면서 프로그램을

더잘 만들 수 있다는 자신감이 생겼다.

August 3, 2016 Presentation Title

25

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