타이머의 지원을 발표하게 되어 기쁘게 생각합니다. Couchbase 6.0 베타 릴리스를 출시했습니다. 이는 다음과 같은 중요한 혁신입니다. 카우치베이스 기능 를 사용하여 월 클럭 이벤트를 참조하여 비동기 계산을 가능하게 합니다.
타이머는 개발자가 미래의 시간에 트리거될 루틴(비즈니스 로직)을 지정할 수 있는 구성 요소입니다.
샘플 사용 사례
- 만료 전에 문서 보관
- 호텔 체크인 후 1시간 후 고객에게 알림(SMS 또는 이메일)을 전송합니다.
- 항공편 출발 30분 전까지 체크인하지 않은 게스트를 필터링하세요.
- 신용 카드 거래에 대한 실시간에 가까운 위험 평가
- 마지막 업데이트 이후 지정된 기간 동안 문서가 변경되었는지 확인합니다.

카우치베이스 함수의 타이머
타이머 구문
타이머를 만드는 방법은 다음과 같습니다:
createTimer(callback_function, expiry_ts, reference, context_payload)
어디에:
콜백_기능타이머가 실행될 때 호출할 함수입니다.
expiry_ts: 함수를 실행할 타임스탬프(자바스크립트 날짜 객체)
참조고유 참조 ID/ 문자열
컨텍스트_페이로드콜백 함수에 전송할 추가 페이로드를 설정합니다.
참고: 함수 이름, 콜백 함수 및 참조의 조합은 고유해야 하며, 그렇지 않은 경우 기존 타이머를 덮어씁니다. 즉, 특정 함수에 대해 해당 범위 내에서 생성된 타이머는 콜백 함수와 참조의 고유한 조합을 가져야 합니다.
샘플 코드
다음은 생성 시간으로부터 5초 후에 실행되도록 예약된 타이머를 생성하는 샘플 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
함수 온업데이트(doc,메타) { 로그('document', doc); var 만료 = new 날짜(); //현재 시간 가져오기 만료.setSeconds(만료.getSeconds() + 5); //5초 추가 var 컨텍스트_페이로드 = {docID : 메타.id, random_text : "임의의 텍스트"}; createTimer(타이머 콜백, 만료, 메타.id, 컨텍스트_페이로드); } 함수 타이머 콜백(컨텍스트) { 로그('From timerCallback', 컨텍스트); dst_버킷[컨텍스트.docID] = 컨텍스트.random_text; } |
타이머 기능
구조는 매우 간단하고 사용하기 쉬워 보이지만, 시맨틱을 제공하기 위해 플랫폼에서 수행한 작업은 상당히 많습니다.
몇 가지 주목할 만한 기능은 다음과 같습니다:
- 대규모 분산 처리: 노드 간에 타이머를 자동으로 샤딩하여 탄력적인 확장성을 지원합니다. 즉, 타이머를 실제로 생성한 노드와 동일한 노드에서 타이머를 실행할 필요가 없습니다.
- 노드 장애 및 클러스터 재조정에도 불구하고 타이머가 한 번 이상 실행됨
- 처리해야 할 이벤트 백로그가 많은 경우 타이머의 최종 실행
타이머의 동작
- 함수에 대해 생성된 바인딩은 타이머 내부에서도 액세스할 수 있습니다. 이렇게 하면 코드의 일관성과 가독성을 유지할 수 있습니다.
- 타이머는 부모 함수와 동일한 타임아웃 의미를 따릅니다. 따라서 함수의 실행 시간 제한이 60초인 경우 함수에서 생성된 각 타이머는 동일한 실행 시간 제한 값인 60초를 상속받게 됩니다.
- 타이머는 비주얼 디버거를 사용하여 디버깅할 수 없습니다.
- 로그() 메시지는 타이머에서 출력된 부모 함수와 동일한 애플리케이션 로그에 캡처됩니다.
- 함수가 삭제되거나 배포 취소되면 관련된 모든 타이머도 삭제됩니다.
- 타이머는 런타임 또는 프로그래밍 오류로 인해 실행이 실패할 경우 자동으로 재시도되지 않습니다. 코드가 적절하게 예외 처리되는 것이 좋습니다(예: try-catch 블록으로 묶음).
- 함수와 연결된 타이머에 대한 정보는 메타데이터 버킷에 저장되므로 이 버킷을 삭제하거나 플러시하거나 키를 업데이트해서는 안 됩니다. 다른 애플리케이션에서 메타데이터 버킷을 사용하지 않는 것이 좋습니다.
- 타이머 정보는 메타데이터 버킷에 저장되므로 사용 사례에서 요구하고 시스템의 타이머 수가 많은 경우 메타데이터 버킷에 할당된 메모리도 적절히 높게 설정하는 것이 좋습니다.
관련 리소스
- 카우치베이스 서버 6.0 베타 다운로드
- 자세히 알아보기 카우치베이스 서버 그리고 이벤트