2016-06-08 4 views
0

두 스트림이 있습니다. 하나는 이벤트 스트림이고 다른 하나는 데이터베이스 업데이트 스트림입니다. DB 업데이트 스트림에서 생성 된 정보로 이벤트 스트림을 풍부하게하고 싶습니다.스트림로드 밸런싱

이벤트 스트림은 매우 방대하며 5 개의 필드를 사용하여 분할됩니다. 이것은 나에게 좋은 분배를 준다. DB 스트림은 훨씬 덜 차분하며 두 필드를 사용하여 분할됩니다. 현재 두 개의 공통 필드를 사용하여 두 스트림을 연결하고 flapMap을 사용하여 첫 번째 스트림을 풍부하게합니다. flatMap 연산자는 ValueState를 사용하여 상태를 유지 관리합니다. 상태는 두 개의 공통 필드에 의해 자동으로 입력됩니다.

이벤트 스트림의로드가 일반적인 두 필드의 관점에서 왜곡되는 경향이 있다는 것을 알게되었습니다. 이로 인해 flapMap 인스턴스에서로드 밸런싱이 고르지 않게되고 일부 인스턴스는 다른 인스턴스보다 약 10 배 더로드됩니다.

모든 플랫 맵 인스턴스에서 DB 업데이트 스트림을 브로드 캐스팅하고 단순히 기존의 파티션 구성표를 기반으로 이벤트 스트림을 전달하는 것이 더 나은 방법이라고 생각합니다. 그러나 문제는 연결 연산자에 지정된 키가 없기 때문에 ValueState를 사용할 수 없다는 것입니다.

수동으로 키를 추출하고 유지 관리 상태를 업데이트하기 위해 사용자 지정 논리를 구현하는 것 외에 내가 할 수있는 일이 있습니까?

누락 된 간단한 방법이 있습니까?

답변

0

CoFlatMapFunction이있는 Checkpointed 인터페이스를 구현하여 키 - 값 상태 인터페이스를 사용하는 대신 브로드 캐스트 된 DB 업데이트를 검사 할 수 있습니다.