2014-12-01 7 views
0

먼저이 질문 제목에 대해 잘 모르겠습니다. 그렇다면 수정 해주십시오. 감사합니다.데이터 디자인 패턴을 문의하십시오

소개 :

내가 PHP를 기반으로 두 개의 프로젝트가 : 첫 번째 프로젝트 (클라이언트) 컬를 통해 두 번째 (API)에 연결합니다. API 프로젝트에서 클라이언트가 데이터를 전송할 때 수행되는 계산이 수행됩니다.

문제 : API 프로젝트 문제로 다운 타임을하거나 속도가 느려 것

경우가 너무 느려 있도록 클라이언트, API 결과를 반환 할 때까지 기다려야합니다. 프로젝트는 집중적으로 개발되므로 계산이 지연되어 지연도 발생합니다.

질문 : 제가 말씀 드린 문제를 방지 할 수 있습니다 방법

가 완벽하게 API 클라이언트의 성능에 영향을주지해야합니다. 어쩌면 어떤 디자인 패턴이나 뭔가가 있을까요? ASYNCH PHP에 대해 읽었지만 패턴을 캐싱했지만 여전히 해결책을 찾지 못했습니다. 어떤 솔루션 (패턴)이 있다면 실제 사례를 갖는 것이 좋습니다!

P. 요청이 느려지지 않고 계산 속도가 느려집니다. 그리고 나는 그들이 우선 최적화되어야한다고 동의합니다. P.P.S. 총 요청은 분당 60 회 이상 (> ~ 60/분)입니다.

답변

1

은 (는 응답 반환)를 반환 할 때까지 클라이언트가 각각 단일 통화 대기하지 않는다는 것을 의미한다 ... 비동기 처리

  1. 이 두 가지 접근 방식, 작업이 모두 있지만 서로 다른 장단점을 가지고, 그러나 일단 들어 오면 응답을 처리하기 위해 콜백 또는 비슷한 메커니즘을 사용합니다. 예를 들어 일반적으로 원격 호출에 javascript 및 ajax를 사용하는 웹 클라이언트에서 수행되는 작업입니다. The는 클라이언트를 상당히 유창하게 만들지 만 코드와 UI의 복잡성이 더 커집니다.

  2. 대기열 기반 처리입니다. 즉, 클라이언트는 이러한 잠재적 차단 요청을 직접 수행하지 않고 대신 일부 대기열 메커니즘 내에서 작업 만 생성합니다. 이러한 작업은 응답을 처리해야하는 일부 스케줄러에 의해 하나씩 처리 될 수 있습니다. 로드 피크 및 API 중단에 대한 확장 및 견고성에 관해서는 매우 강력하지만 구현은 훨씬 더 비쌉니다. 또한 전반적인 작업은 응답 시간이 전혀 보장되지 않는다는 사실을 받아 들여야합니다. 일반적으로 응답은 첫 번째 방법보다 길어 대화 형으로 표시 할 수 없습니다.

+0

자세한 답변 해 주셔서 감사합니다. 나는 거기 둘 다 구현할 수 있다고 생각해! asynch 옵션은 캐시 TTL이 만료되어 응답을 기다리지 않는 경우 요청을 보냅니다. 대기열 메커니즘은 요청이 작업을 대기열에두고 작업이 완료되면 응답을 보냅니다. – deividaspetraitis

+0

주의 : TTL은 일반적인 API 호출에서는 실제로 발생할 수 없습니다. 또한 Caching은 비동기 처리와 관련이 없습니다. 비동기 란 요청을하는 것을 의미하지만, 응답을 처리하는 것은 나중에 백그라운드에서 수행됩니다 (일반적으로 콜백을 통해). 큐잉 시스템은 "응답을 보낸다"는 응답을 처리하고 거기에 관련된 모든 행동을 취한다. – arkascha

관련 문제