개발 과정에서 우리는이 같은 상황을 발생합니다 :
예를 들어, 우리는 등록 된 사용자에게 메시지를 보낼 수있는 기능을 개발해야합니다. 사실, 할 어려운 일이 아니다, 두 단계에 지나지,
1, 메일을 보낼 사서함을 얻을 필요 채우기 위해 콘텐츠를 보낼 수 있습니다.
2, 보냈다.
이 기능은, 또한 기록 구현하기가 간단하다, 그것을하지 않습니다!
그래서, 지금 질문입니다.
지금은 사용자의 동시 만 좋은 수백만이 동시에 (물론,이 가정)에 등록되어있다. 이러한 높은 동시성의 경우, 여전히 상기 두 단계 (1)과 (2)를 수행하는 동기 방식을 사용한다.
내가 거기 확실히 경우가 보내지 못했습니다 수 있지만이 많이 될 것입니다, 당신에게 책임입니다.
그럼 어떻게이 문제를 해결하기 위해?
메시지 큐! ! !
여기에서 우리는 메시지 큐의 개념을 소개합니다. 이 개념을 이해하기 전에, 작은 예제에서의 생활을 살펴 보자 :
우리 모두는 저녁 식사, 오른쪽, 웨이터 레스토랑에 가서, 그것은 웨이터 요리 요리사 요리보다 훨씬 더 빨리해야 한 점을 요리 요리사. 그래서 여기에 다시, 웨이터와 요리사 동기화의 단일 지점을 요리 할 경우 문제는 단일 스레드 실행이다.
그래서 우리는 고객으로 상당한 불만이 될 것입니다. 우리는 순서에 과정에 사르코지 후 단일 지점에서 대기해야하기 때문에.
그러나 현실에서,이 같은하지 레스토랑. 레스토랑의 직원 통상 단일 포인트와 직접 조리 단지 웨이터 단일 지점 (이하, 용지에 기록 된 것으로 가정) 성공적인 기록 매체상의 도트 하나를 조리에 관련된 다음 Houchu에 전달되지 다음 Houchu 목록에 따라 전 순서를 한 후에.
메시지 큐에서 메시지를 게시 소유자 (웨이터), 메시지가 메시지 큐에 (단일 도트 페이퍼 기록)에 저장되고, 뉴스 임원 (쿡)와 수 : 사실, 우리는이 경우는 일반적인 메시지 큐입니다 매일 위를 통과 한 실행.
위의 예제를 읽고, 나는 메시지 큐에 사람들의 대다수가 특정 이해하고 있어야합니다 생각합니다.
다음은도의 추상적 인 메시지 큐입니다. (프로듀서 : 웨이터, 소비자 : 요리사)
여기, 우리가 백만 동시를 달성하기 위해 큐를 사용하여 메일 메시지를 보내는 방법에 대해 말하고있는 (고객이 잘못된 이메일 주소를 기입하지 않는 한 모든 메시지가 성공적으로 전송 될 수 있도록하기 위해, 우리가이 사건을 고려하지 않음)
그것은 주목해야한다 매체가 메시지를 저장하기 위해 많은 계획을 가지고, 우리는 필요에 따라 선택, 단단히 레디 스 목록을 준수 할 수 없습니다 . 우리가 메시지의 저장 매체 같은 곳 MySQL의를 선택할 수 있습니다.
우리는 메시지를 저장하는 새 테이블을 만들 수 있습니다. 그것은 세 개의 필드 ID를 u_email (사용자 메일)을 POST_CONTENT (콘텐트의 전송)을 포함하는, MQ로 나타낸다.
사용자 등록 신청, 사용자의 사서함 및 콘텐츠를 전송할 때 1, 성공 후 우리는 즉시 사용자에게 적립 할 수 MQ 테이블에 (내용을 보낼 수 있습니다 경우에 따라, 여기에 논리는 특정 문제 카자흐스탄을 분석하는 것입니다) 피드백. 예를 들어 (메시지가 사서함에 전송되었는지 확인 사서함으로 이동 ...)
타이머 PHP 구현 (2)는, 상기 타이밍 데이터는 MQ 테이블 메일 송신로부터 추출된다. 이 기록을 삭제하면 성공하지 못한 경우에는 삭제되지 않습니다, 데이터 테이블 MQ 성공에서 (물론, 우리는 일반적으로 삭제 표시를 사용).
장점 :
1, 백그라운드에서 실행, 대기없이 전경은 즉시 높은 고객에게 우정의 정도 반응 할 수 있습니다.
성공할 때까지 2, 높은 성공률을 기록, 실패는 자동으로 재전송됩니다.
작품은 메시지 큐에 새로운 많은 프로그래머가 발생합니다 목록은 잘못된 레디 스 메시지 큐입니다. 사실,리스트는 단지 데이터 유형 레디 스, 단지 메시지 큐 기능을 실현할 수있다.
메시지 큐 확인 요약 :
메시지 (메시지)는 애플리케이션 간의 데이터 전송을 의미하는 메시지가 매우 단순 할 수 있으며, 예를 들면, 단지 텍스트 문자열을 포함하는,보다 복잡 할 수 있고, 내장 된 객체를 포함 할 수있다.
메시지 큐 (메시지 큐) 응용 프로그램 사이의 통신이다, 메시지 전송이 신뢰할 수있는 메일 메시지 정보를 확인하기 위해 시스템을 즉시 반환 할 수 있습니다, 메시지는 출판사에 관계없이 가지고 사람의 MQ에 메시지를 게시
출판사와 사용자가 서로에 대해 알고하지 않도록 메시지 소비자는 게시 누구든지 MQ에서 메시지를 가져 가라.
메시징 미들웨어 큐 추천, 우리는 알게 시간이 : RabbitMQ를
우리는 필요로하는 사람들을 돕고 싶다.