2012-09-19 2 views
3

web hooks을 애플리케이션 REST API의 일부로 구현하려고합니다.대량 작업을위한 웹 훅 구현

처음에는 엔티티 업데이트 이벤트에 등록 할 API 소비자를위한 메커니즘을 구현하려고합니다. 엔터티가 변경되면 해당 엔터티의 변경 이벤트에 대해 등록한 모든 웹 훅을 호출합니다 (등록 프로세스의 일부로 API 소비자는 관심있는 엔터티의 하위 집합에 대한 콜백 만 수신 할 수 있도록 추가 필터 조건을 포함 할 수 있습니다) 에서).

이제는 사용자가 시작한 변경 사항에 효과적입니다. 느리게 처리되지만, 변경 사항이 많이 발생했을 때이를 처리하는 가장 좋은 방법에 대해 우려하고 있습니다. 예를 들어 대량 작업의 일부로 UI 또는 API 소비자로부터 발생하는 변화의 홍수.

은 지금까지 고려했다 :

  • 그냥 비동기 풀의 어떤 종류를 사용하여 각 개체에 대한 콜백을 수행 - 문제는 내가 여기에 참조되어 규모와 잠재적으로 유발 해 해당 응용 프로그램이 웹 후크에 가입 할 수 있습니다.
  • 웹 훅 등록 당 변경 기록을 10 초 동안 대기 한 다음 영향을받는 항목 목록으로 구독에 단일 웹 훅 알림을 푸시합니다. 여기에서 볼 수있는 문제는 작업 사이에 불필요한 대기 시간을 도입한다는 것입니다 웹 훅 (webhook)은 이벤트가 유입되는 순간에 특히 오버 헤드와 복잡성을 초래합니다. 특히 웹 팜 시나리오에서 구현하는 경우 더욱 그렇습니다.
  • 실제로 대량 작업을 웹 훅으로 노출하므로 대량 삭제가 수행 된 경우 소비자가이 작업을 구독하게됩니다. 따라서 개별 엔티티 변경에 대한 후크를 설정하면 대량 업데이트/삭제 등의 엔티티 변경 이벤트가 수신되지 않습니다. 대량 작업 웹 훅을 통해이를 처리해야합니다.

몇 가지 추가 세부 정보 -이 애플리케이션의 대량 작업은 10 개에서 100,000 개 정도의 항목을 포함 할 가능성이 높습니다.

구현 방법을 밝힐 수있는 대량 작업을 위해 웹 후크를 구현 한 사람이 있습니까?

+0

나는 webhooks를 호출하는 동안 기본 HTTP 처리를 단순히 차단하지 않는 것 외에도 이러한 모든 문제를 가지고 있습니다. 어떤 솔루션을 사용 했습니까? 2017에 대한 제안 사항이 있습니까? (선호하는 Python/Lambda) –

답변

1

우리는 최근에 나머지 API의 일부로 웹 후크를 구현했으며 주요 관심사는 대량 작업에 관한 것이 었습니다. 여기서는 대량 가져 오기를 사용하여 사용자가 웹 응용 프로그램을 통해 Excel 또는 CSV 파일로 레코드를 가져올 수 있습니다.

우리의 가져 오기 프로세스는 전체 프로세스가 트랜잭션으로 실행되는 방식으로 설계되었습니다. 따라서 실패 할 경우 단순히 롤백하여 아무 것도하지 않습니다. 성공적으로 완료되면 영향을받은 항목에 대한 정보가 포함 된 거대한 하나의 몸으로 가입 된 클라이언트에게 웹 후크 알림을 게시합니다.

이제 응용 프로그램에서 벌크 동작이 어떻게 발생하는지 잘 모르겠습니다. 그 거래 내에서 다음 문제가 없다면. 다른 현명한 방법으로는 단일 및 일괄 작업 웹 후크를 별도로 유지하는 것이 좋습니다. 나는 이것이 webhooks를 사용하는 단점 중 하나라고 생각합니다. POST 요청을 되풀이하여 가입자를 끌어 내릴 수 있습니다.