저는 Kafka를 사용하고 있으며 단일 메시지를 놓칠 수없는 내결함성 시스템을 구축하기위한 유스 케이스가 있습니다. 그래서 여기에 문제가 있습니다 : Kafka에 게시가 어떤 이유로 (ZooKeeper down, Kafka broker down 등) 실패 할 경우, 다시 상황이 다시 발생하면 어떻게 그 메시지를 안전하게 처리하고 재생할 수 있습니까? 다시 말하지만 우리는 단일 메시지 오류조차도 감당할 수 없습니다. 또 다른 사용 사례는 카운터 기능과 같은 이유로 인해 카프카에 게시하지 못한 메시지의 수를 알 필요가 있으며 이제는 다시 게시해야합니다.kafka 게시 실패를 강력한 방식으로 처리하는 방법
해결 방법 중 하나는 이러한 메시지를 일부 데이터베이스 (예 : 쓰기가 매우 빠른 Cassandra와 같지만 카운터 기능이 필요하며 Cassandra 카운터 기능이 그리 좋지는 않으며 사용하지 않으려는 것 같습니다.) 그 종류의 짐을 취급 할 수 있고 또한 저희를 아주 정확하다 카운터 기능을 제공하십시오.
이 질문은 아키텍처의 관점과 그 기술을 사용하는 데 더 중요합니다.
추신 : 3000TPS와 같은 부분을 처리합니다. 따라서 시스템 시작이 실패하면 실패한 메시지는 매우 짧은 시간 내에 매우 빠르게 증가 할 수 있습니다. 우리는 자바 기반의 프레임 워크를 사용하고 있습니다.
도움 주셔서 감사합니다.
Chris! 나는 카프카가 그러한 상황을 다루는 방식으로 만들어 졌음을 이해하지만,이 말을 논증으로 삼아서 일이 항상 효과가 있다고 말하는 것은 약간의 대담한 말이며 나에게는 조만간 실패 할 운명이 따른다는 것을 이해합니다.중개인과 사육사 인스턴스가 충분하더라도 상황을 제어 할 수없는 방법을 보여주는 예제를 제공하기 만하면됩니다. 예 : 하나의 주제에 3 개의 복제본이 있고 min.insync.replicas를 2로 설정하면 즉, 브로커에 대한 쓰기는 3 개의 복제본 중 2 개가 동기화 된 경우에만 성공합니다. 이제 복제본이 동기화되지 않은 경우 새 요청을 수락하지 않습니다. – Coder
@ 코더 이것은 지연된 복제본을 ISR의 구성원으로 유지하도록 클러스터가 올바르게 구성되어 있는지 확인하는 데 도움이되는 블로그입니다. http://www.confluent.io/blog/hands-free-kafka-replication-a -lesson-in-operational-simplicity/ –
감사합니다. @ 크리스 이것은 유용합니다! – Coder