공부하다가 의문이 생겼는데요, 낙관적 락 - 충돌 잦으면 락 획득 재시도 로직 때문에 성능 안좋음 비관적 락 - 충돌 잦으면 낙관적 락보다 성능좋음. 분산 락 - 스케일 아웃된 DB 환경에서도 사용 가능 - Redis 라이브러리마다 다른데 Lettuce는 스핀락으로 구현되서 재시도 많으면 불리 Redisson은 pub-sub 기반이라 재시도 많으면 유리 정확하진 않지만 이렇게 알고있습니다. 질문은 1. 잘못 알고 있나요? 2. 제가 공부한게 맞다면, 무조건 비관적 락, 낙관적 락 말고 분산락 + Redis(Lettuce/Redisson) 쓰는게 좋은건가요?
안녕하세요. 선생님 강의를 듣고 kafka connect 매커니즘에 대해 상세하게 알게 됐습니다. 다만, 실무에 적용을 하는 도중 문제에 봉착해 도움을 구하고자 문의드립니다. 현재 debezium mysql connector를 사용하여 source 데이터는 topic으로 저장하는데 성공하였지만, 해당 데이터를 mongodb 에 저장하는데 저장/업데이트는 정상적으로 되지만 delete 시 반영이 안되는 문제가 있습니다. RDB와는 다르게 mongodb sink connector는 insert.mode는 지원하지 않고 write model Strategy 를 활용하는 걸로 보이는데, 아래와 같이 sink connector를 설정할 경우 account_id 를 key 로 해서 업데이트는 가능한데, 삭제는 안되네요? "connector.class": "com.mongodb.kafka.connect.MongoSinkConnector", "document.id.strategy":"com.mongodb.kafka.connect.sink.processor.id.strategy.PartialValueStrategy", "document.id.strategy.partial.value.projection.list":"account_id", "document.id.strategy.partial.value.projection.type":"AllowList", "writemodel.strategy":"com.mongodb.kafka.connect.sink.writemodel.strategy.ReplaceOneBusinessKeyStrategy", 혹시 Source 에서 입력, 업데이트, 삭제를 mongodb에 반영하려면 어떻게 해야 되는지 알 수 있을까요? 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 위와 같이 테스트를 구현하고 테스트 실행 시 Insert 쿼리가 나갑니다. 그런데 예외가 발생했기 때문에 롤백이 되어서 또는 테스트의 트랜잭션 디폴트 값이 Rollback이라서 Insert 쿼리가 나가지 않아야 하는 것 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] gradlew build를 하면 이런 에러가 발생합니다. 인텔리제이 설정에서 build Tools > Run tests using 항목을 IntelliJ IDEA로 변경을 해보았으나 에러는 동일하게 발생했지만 해결책을 모르겠습니다.
MSA에서 다른 어플리케이션의 데이터를 가져오는 방법으로 RestTemplate, FeignClient를 사용하는 방법을 알려주셨는데요. 데이터를 가져오는 것은 보통 rest 통신을 사용하여 가져오나요? 실무에서 카프카나 다른 라이브러리를 사용해서 가져오는지, 아니면 설명해주신 것 처럼 rest 통신을 통해 가져오는지 궁금합니다~
안녕하세요, 좋은강의 감사합니다. precision_recall_curve() 함수를 이용해서, y값과, 예측 값을 넣어주었을때 리턴되는값이 정밀도, 재현율, thresholds 값이 반환이 되는것으로 확인했습니다. 여기서 궁금한 부분이 thresholds값의 변화는 함수에서 임의로 진행 되는것 일까요?
미러메이커2를 사용할 때 각 카프카의 버전이 달라도 사용이 가능한가요? 예를 들어서 하나의 클러스터는 2.2버전이고 하나의 클러스터는 3.1 버전이라고 했을 때 2.2버전은 미러메이커2를 지원하지 않는데 3.1 버전의 클러스터에서 미러메이커2를 실행하면 2.2버전에서 3.1버전으로 데이터가 가져와지나요...?
안녕하세요 강사님 좋은 강의 감사합니다. 파티션 할당 전략 중 CooperativesStickyAssignor 전략 실습중에 에러가 발생하였습니다 에러 내용은 두번째 컨슈머를 기동하면서 첫번째 컨슈머 콘솔에서 "Request joining group due to: group is already rebalancing" 라는 에러가 발생하면서 리밸런싱이 완료되지 않아 어느 컨슈머에도 파티션이 할당되지 않는 문제가 발생합니다. 해당 에러는 타임아웃이 나기전까지 반복해서 발생하며 이후에는 두 컨슈머 모두 종료됩니다 해결방법좀 부탁드립니다ㅠ.ㅠ
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 제가 한 게시판에서 이런 글을 읽었습니다. "요즘에는 논리적인 연관관계는 만들지만 db에서는 만들지 않고 조인 연산을 거의 안 하고 여러 번 쿼리해서 애플리케이션에서 조합합니다." 이유로는 연관관계를 맺으면 테이블 설계에 있어 유연성이 떨어짐 조인연산은 db 자원을 많이 잡아먹는 무거운 연산이고 db 성능에는 한계가 있어 서버를 확장해서 자원을 쓰는 것이 유리함 라는 근거를 들었습니다. 이것이 맞는 판단인지 궁금합니다 (금융권에 계신 분이 쓴 듯 합니다)
행맨 만들기 프로젝트 일부 코드에서 이해가 안되는 부분이 있어 질문드립니다! while 문에서 i = 0 을 설정한 뒤에 elem 값이 char 의 input 값과 같으면 그 값이 lst에서 치환되는 것이라고 설명해주셨는데 lst[i] 는 lst 내에서 i+1 번째 값을 의미하는 것이 아닌가요?? 아니면 i 는 그냥 미지수의 의미로 설정한 변수로 생각하면 되나요? 비슷한 질문으로 i += 1 이라는 코드를 추가한 이유가 무엇인가요? 저 코드를 빼고 작동시켜보니 이전에 맞췄던 철자가 저장되지 않고 첫 단어에만 값이 입력되는 걸 보니 이전 값들을 차곡차곡 쌓는 느낌인가요..? 너무 초보적인 질문이라 죄송합니다.. 아무리 고민하고 찾아봐도 쉽게 답이 나오지 않아 질문드립니다..
안녕하세요. 선생님 수업을 잘 듣고 있습니다. 일단 선생님이 알려주신 부분하고 다르게 하고 있는게 있어서 환경 부터 어떻게 했는지 말씀 드릴게요. 일단 kafka는 Confluent kafka 가 아닌 apache kafka 로 설치 했습니다. EC2 에서 총 8개의 인스턴스를 구축 했으며 Apache Zookeeper 3.8.1 3개 Apache Kafka 2.13-3.3.2 3개 => Source connect : Debezium mysql connect 2.1.2 => Sink connect : Confluent JDBC Connector 10.6.3 Confluent Schema registry 7.3.0 1개 mysql DB 1 개 (Source 와 Sink 는 user 로 분리해서 데이터 넣는 방식으로 테스트 중입니다) 위와 같이 구성을 해서 구축을 했습니다. 테스트는 json 방식으로 Source 와 sink 쪽에 각각 connect 정보 등록 해서 데이터 전달 되는것까지 통과 했습니다. Confluent Schema registry 는 설치 하고 카프카서버에서 스키마 서버 8081포트 가 뜨는것도 확인 했습니다. Json 방식으로 Schema registry 로 데이터 전달 되는것도 문제 없었습니다. 문제점. 수업에 있는 Avro 로 connect 등록 할려고 하니 바로 에러가 납니다. {"error_code":500,"message":"Error trying to forward REST request: Connector configuration is invalid and contains the following 2 error(s):\nInvalid value io.apicurio.registry.utils.converter.AvroConverter for configuration key.converter: Class io.apicurio.registry.utils.converter.AvroConverter could not be found.\nInvalid value io.apicurio.registry.utils.converter.AvroConverter for configuration value.converter: Class io.apicurio.registry.utils.converter.AvroConverter could not be found.\nYou can also find the above list of errors at the endpoint /connector-plugins/{connectorType}/config/validate "} 위와 같은 에러에 대해 일단 조치한 점은 kafka 의 connect-distributed.properties 에서 설정한 "plugin.path" 에 Kafka Connect Avro Converter( https://www.confluent.io/hub/confluentinc/kafka-connect-avro-converter)를 압축 풀어서 두었습니다. connect 서버 재 가동 후, 아래 명령어로 Plugin 확인 하였는데 mysql connect 나 jdbc Source connect , jdbc sink connect 는 뜨는데 "avro" 관련된 plugin 이 보이지 않았습니다. "curl --location --request GET ' localhost:8083/connector-plugins ' | jq '.'" 그래서 위 에러가 Avro 를 못찾는다는 이유가, kafka에 avro 를 설정을 못한건지? Confluent Schema registry 에 avro 문제 인건지? 아니면 제가 Confluent kafka 가 아닌 apache kafka 로 설치 해서 인지 알수가 있을까요?
안녕하세요 선생님 양질의 강의 너무 감사하게 잘듣고 있습니다. 다름이아니라 강의를 듣던 중 궁금한 부분이 있어서 글을 남기게 되었습니다. Broker로 부터 통신을 한 후에 pendingCompletion(ConcurrentLinkedQueue) 에 response를 적재를 하고 적재된 pendingCompletion 기준으로 Fetcher가 데이터를 가져오게 되는데 이 과정에서 Fetcher는 별도의 스레드로 동작하는지요? "Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해: 13:22"
안녕하세요 처음 강의를 들을 때 h2 데이터베이스를 설치하여 진행하였을 때는 잘 진행되었는데, 강의를 다시 들으며 h2를 실행시켜보니 갑자기 실행이 되지 않습니다. 환경변수는 잘 설정되어있고 명령 프롬프트로 질문들 검색해서 나온 모든 해결방법을 실행해보았는데, 반응이 없고 h2 console 바로가기를 클릭해도 반응이 없습니다... 백신관련은 제거했습니다. 14.200 말고 최근버젼으로도 도전해봤습니다. 어떻게 해야 해결될까요?ㅠㅠ https://www.inflearn.com/questions/543652/%EC%9C%88%EB%8F%84%EC%9A%B0-h2-console-bat-%EC%8B%A4%ED%96%89-%EC%95%88%EB%90%A8-%ED%95%B4%EA%B2%B0%ED%95%A8 *이 방법도 시도해봣으나 안됩니다 C:\tools\h2\bin>/"h2.bat" '/"h2.bat"'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
안녕하세요! 선생님 강의 잘 듣고 있습니다. 다름이 아니라 커넥트 내부 토픽이해 - connect0offsets, connect-status, connect-config 강의 실습 중 spool 커넥터를 띄워놓고 spooldir csv 메세지 보내는 과정에서 커넥터가 정상 작동을 안하는 것 같아 이부분을 반복했더니 커넥트 기동중 spool 커넥터에 에러가 잡히는데 혹시 해결방안 여쭤봐도 될까요 ? 커넥트 기동시 뜨는 에러 로그입니다. path annotation 이 비었다고 하는 것같은데 새로 지정을 어디서 해야 할까요? org.apache.kafka.connect.errors.ConnectException: Failed to start connector: csv_spooldir_source at org.apache.kafka.connect.runtime.distributed.DistributedHerder.lambda$startConnector$25(DistributedHerder.java:1461) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:334) at org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140) at org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.apache.kafka.connect.errors.ConnectException: Failed to transition connector csv_spooldir_source to state STARTED ... 8 more Caused by: java.lang.IllegalStateException: Could not find any input file(s) to infer schema from. at com.google.common.base.Preconditions.checkState(Preconditions.java:510) at com.github.jcustenborder.kafka.connect.spooldir.AbstractSpoolDirSourceConnector.start(AbstractSpoolDirSourceConnector.java:63) at org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:184) at org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:209) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:348) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:331) ... 7 more 3월 08, 2023 1:54:32 오후 org.glassfish.jersey.internal.Errors logErrors 경고: The following warnings have been detected: WARNING: The (sub)resource method listLoggers in org.apache.kafka.connect.runtime.rest.resources.LoggingResource contains empty path annotation. WARNING: The (sub)resource method createConnector in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation. WARNING: The (sub)resource method listConnectors in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation. WARNING: The (sub)resource method listConnectorPlugins in org.apache.kafka.connect.runtime.rest.resources.ConnectorPluginsResource contains empty path annotation. WARNING: The (sub)resource method serverInfo in org.apache.kafka.connect.runtime.rest.resources.RootResource contains empty path annotation. [2023-03-08 13:54:32,670] INFO Started o.e.j.s.ServletContextHandler@1e253c9d{/,null,AVAILABLE} (org.eclipse.jetty.server.handler.ContextHandler:915) [2023-03-08 13:54:32,671] INFO REST resources initialized; server is started and ready to handle requests (org.apache.kafka.connect.runtime.rest.RestServer:303) [2023-03-08 13:54:32,671] INFO Kafka Connect started (org.apache.kafka.connect.runtime.Connect:57) min@min-VirtualBox:~$ curl -X GET http://localhost:8083/connectors/csv_spooldir_source/status | jq '.' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1375 100 1375 0 0 8647 0 --:--:-- --:--:-- --:--:-- 8647 { "name": "csv_spooldir_source", "connector": { "state": "FAILED", "worker_id": "127.0.1.1:8083", "trace": "java.lang.IllegalStateException: Could not find any input file(s) to infer schema from.\n\tat com.google.common.base.Preconditions.checkState(Preconditions.java:510)\n\tat com.github.jcustenborder.kafka.connect.spooldir.AbstractSpoolDirSourceConnector.start(AbstractSpoolDirSourceConnector.java:63)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:184)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:209)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:348)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:331)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n" }, "tasks": [], "type": "source" }
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 Spring Boot 3.2버전에서 실습 중에, distinct 옵션을 사용하지 않고도 distinct 옵션을 넣은 것처럼 Row가 2줄 출력됩니다. 이것저것 코드를 확인하다가 Spring Boot를 2.x 버전으로 내린 후에 다시 확인해보았는데, 그제서야 강의에 나오는 것처럼 중복 데이터 4개가 나옵니다. 혹시 이것 관련해서 jpa에서 업데이트가 된 것인지요..? 검색 능력이랑 문서 능력 찾아보는 능력이 딸려, 한참 찾아보다 여기에 질문합니다 ㅜㅜ 실례가 안된다면 이러한 내용을 어떻게 찾는지도 알게 될 수 있다면 좋을거 같습니다!