2014-05-21 3 views
0

트라이던트 트랜잭션 토폴로지를 구현해야합니다. 카프카를 스파우트로 사용하여 내 토폴로지를 트랜잭션으로 만들 수 있음을 알았습니다. 내가 https://github.com/nathanmarz/storm-contrib/tree/master/storm-kafka 폭풍에 대한 카프카 주둥이지만 그것은 거래가 아니에요. 또한 https://github.com/nathanmarz/storm/blob/master/storm-core/src/jvm/storm/trident/spout/IOpaquePartitionedTridentSpout.java은 트라이던트 카프카 트랜잭션 스파우트입니다. 그러나 나는 그것에 대한 maven 소스가 없으며 그것을 사용하기위한 지침이 없습니다. 카프카 스톰 스파우트를 사용하는 방법에 대해서만 설명합니다. 또한 파티션 된 카프카 구현을위한 지침이 필요합니다. 트랜잭션 토폴로지를 구현 한 경험이 있다면 제발 도와주세요! 고맙습니다!Trident kafka 트랜잭션 오우 토

답변

1

당신은 이것을 Kafka Spout에서 보았습니까?

트랜잭션 스파우트는 토폴로지가 트랜잭션 성을 보장하기에 충분하지 않습니다. OpaqueTridentKafkaSpout는 다음과 같은 속성을 구현 : 주어진 TxID 삽입에 대한

  • 일괄 처리는 항상 동일합니다. txid에 대한 일괄 처리의 재연은 해당 txid에 대해 일괄 처리가 처음으로 생성 된 것과 동일한 튜플 세트를 완료합니다.
  • 튜플의 배치간에 겹치는 부분이 없습니다 (튜플이 배치 또는 다른 배수 일 때 배수가 아님).
  • 모든 튜플이 배치에 있습니다 (튜플을 건너 뛰지 않음).

그러나 당신은 당신의 데이터베이스 업데이트가 당신이 처리 정확히 한 번만 달성하기 위해 튜플

의 각 배치에 대해 정확히 한 번만 실행되도록 당신이 트랜잭션 상태를 구현해야 다음 몇 가지 계산을 유지하려고하면 배치 트랜잭션 ID 및 이전 업데이트 값을 계산에 사용합니다. 당신은 튜플의 다음 배치를 처리하는

: [ "사람"] [ "사람"] [ "개"] 트랜잭션 ID와 관련 "3"

의이 documentation의 예를 살펴 보자

데이터베이스에서 현재 일부 단어 카운터를 키/값 쌍으로 보유합니다.

man => [count = 3, txid = 1]; dog => [count = 4, txid = 3]; apple => [count = 10, txid = 2]

키 "dog"와 연관된 txid가 현재 처리 트랜잭션과 동일하므로이 업데이트를 건너 뛸 수 있습니다. 튜플 "dog"는 이미이 트랜잭션을 위해 업데이트되었습니다. 그러나 다른 튜플의 경우는 아닙니다. 데이터베이스를 업데이트 한 후에는 다음과 같습니다.

남자 => [개수 = 5, txid = 3]; dog => [count = 4, txid = 3]; apple => [count = 10, txid = 2]

이렇게하면 Trident는 트랜잭션 ID와 이전 값을 비교하여 업데이트를 수행해야하는지 결정할 수 있습니다.

Map State을 살펴보세요.

기본적으로 트랜잭션 토폴로지는 트랜잭션 스파이와 트랜잭션 상태로 구성됩니다. 나는이 당신을 도움이되기를 바랍니다 http://storm.incubator.apache.org/documentation/Trident-state

:

이 페이지에 삼지창 상태에 대한 자세한 정보를 찾을 수 있습니다.

+0

카프카를 사용하면 내 토폴로지가 정확히 한 번 의미론을 통해 트랜잭션을 보장합니까? – Vladimir

+0

내가 찾은 MEMCACHEDSTATE를 사용할 수 있습니까? https://github.com/nathanmarz/trident-memcached/blob/master/src/jvm/trident/memcached/MemcachedState.java opaquetridentkafkaspout https : // github와 함께 사용할 수있는 불투명 한 상태를 제공한다는 것을 읽었습니다. .com/nathanmarz/storm-contrib/blob/master/storm-kafka/src/jvm/storm/kafka/trident/OpaqueTridentKafkaSpout.java – Vladimir

+0

많은 질문을하고 있을지 모르지만 누구에게도 예제가 있습니까? 나는 카프카 스톰에 완전히 새로운 사람입니다. 내 주제 중 하나에서 소비하는 폭풍을 성공적으로 구현했지만 거래를 원했습니다. 어떤 도움을 주시면 감사하겠습니다 !!! :) –

관련 문제