2013-02-05 2 views
0

다음과 같은 문제가 있습니다. 트위터 API를 호출하여 상태 업데이트를 보내야하는 경우이 트위터 업데이트가 발생한 것을 기록하여 로컬 데이터베이스에 레코드를 작성해야합니다.외부/제 3 자 호출과의 일관성

제 질문은 Twitter 또는 데이터베이스 호출이 실패 할 경우 어떻게 데이터 일관성을 유지할 수 있습니까? 트위터를 업데이트하고 데이터베이스 호출이 실패하면 트위터 호출에 대한 로컬 레코드가 없으며 트위터 호출이 실패하지만 데이터베이스 호출이 성공하면 잘못된 로컬 레코드가 생깁니다.

나는 트위터 호출이 성공했거나 그 반대의 경우에만 DB를 업데이트하는 것과 같은 분명한 첫 번째 단계를 이해하지만 이는 절반의 문제를 해결합니다.

나는 이것이 일반적인 문제라고 상상하지만 나는 많은 정보를 찾기 위해 노력했다.

답변

1

스티븐은

당신은 어떤 경우에 SPOF (단일 실패 지점)를해야합니다 - 당신의 응용 프로그램이 될 것입니다. 그러나 실패의 위험을 줄이기 위해 데이터를 대기열에 덤프 할 수 있으며 (웹 서버의/tmpfs조차도 가능) 대기열에 데이터를 덤프 할 수 있습니다.

트위터 API에 대한 호출이 실패하면 분명히 실패한 시도에 대한 기록을 DB에 넣을 수 있습니다.

+0

아하! 물론 큐잉을 잊어 버렸습니다. 고맙습니다. 나는 분산 된 트랜잭션 리소스의 구현을 작성하는 것에 대해 걱정하고 있었지만, 이것을 정렬 할 것이다. 감사. – sroughley