묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실습으로 배우는 선착순 이벤트 시스템
서버 1대일때 Synchronized 사용
[Redis 활용하며 문제 해결하기 > 문제점 해결하기 01:19]강의에서 Synchronized 를 사용할때 서버가 여러 대가 된다면 적절하지 않다고 하셨는데, 그러면 서버가 1대 일때는 Synchronized 를 사용해도 괜찮은가요??
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
윈도우 연산시 주의해야할 사항 + 기타 질문
윈도우 연산시 주의해야 할 사항에텀블링 윈도우에 한해서 윈도윙이 5초간격이라면커밋 간격도 5초로 맞춰주면굳이 최신 데이터를 어떤 로직처리에 의해서 뽑아줄 필요가 없지 않을까요?스트림 처리할때만 커밋 간격을 윈도우 크기만큼 맞추고, 나머지는 디폴트나 설정한 값으로 처리하면 될것 같은데요이렇게 하는건 어떻게 생각하시는지 궁금합니다 자바의 main 말고 카프카의 데이터를 컨슘해서 프론트엔드로 서빙하는 스프링 예제provectuslabs/kafka-ui의 이미지를 사용해서 도커컴포즈로 브로커를 3대 띄우고 운영한다던지(아무래도 쿠버네티스 환경까지 들어가면 너무 깊어지니깐)스키마 레지스트리와 KSQL 등에 대한 것추가로 2, 3, 4번 예제는 강의에 없는것 같은데 혹시 집필하신 책에 나와있을까요? 많은 내용을 배워서 갑사합니다추가로 현업에서 사용되는 다양한 처리 방법을 조금 더 심도있게 배우고 싶습니다
-
해결됨실습으로 배우는 선착순 이벤트 시스템
처리 지연을 어떻게 구현해야하나요?
안녕하세요 강사님 ! kafka: consumer: max-poll-records: 5이것 저것 찾아보다가 한번에 가져오는 레코드의 양을 줄이는 옵션이 있어서 적용해봤습니다. 그래서 처리되는 속도는 비슷하더라구요. 컨슈머가 속도를 설정해서 천천히 이벤트를 확인하고 싶은데 강사님이 말씀하신 걸 적용하려면 어떤 옵션을 줘야하나요?
-
미해결카프카 완벽 가이드 - 코어편
VM화면에서 마우스 클릭 불가
안녕하세요. 강의 잘 듣고 있습니다.VM 환경에 들어와서 마우스 클릭을 하면 팝업창이 뜨면서 마우스 잡기 버튼이 생성되어 잡기를 클릭하면 마우스 커서도 사라지며 아무 클릭이 안돼요.구글링해보니 설정 -> 시스템-> 마더보드 -> 포인트 장치 -> USB 태블릿 or USB 멀티터치 태블릿으로 변경위와 방법을 사용해도 변경이 안됩니다.혹시 어떻게 해결해야 할까요?
-
미해결카프카 완벽 가이드 - 코어편
Kafka Consumer 데이터 유실 관련
안녕하세요 강사님!Consumer와 auto.offset.reset의 내부 동작 메커니즘 상세 이해듣던 중 궁금한 부분이 생겨서 질문 남깁니다 🙂 Kafka Consumer는 __consumer_offsets 기준으로데이터를 읽어드린다고 이해를 했는데 동일 컨슈머 그룹에 이미 메세지가 있는 경우프로듀서가 메세지를 전송한 이후에 컨슈머를 기동을 한다고 하면 earlist, lastest 모두 전송한 메세지를 받을 수 없어 데이터 유실이 발생할 가능성이 있을 것 같은데 이러한 데이터 유실을 방지하는 방법이 있을까요?프로듀서 같은경우 ACK 설정으로 이를 방지할 수 있을 것 같은데 컨슈머에도 동일한 설정이 있는지 궁금합니다.
-
미해결카프카 완벽 가이드 - 코어편
프로듀서 직렬화 관련 질문있습니다.
안녕하세요, 실무에서 발생할 법한 사항에 대한 질문이 있습니다. 외부에서 데이터를 전송할 수 있는 API 엔드포인트가 프로젝트 내에 열려있고, 이 곳을 향해 들어오는 데이터를 적절히 파싱해서 Object에 담은 상태라고 했을 때이 Object를 토픽에 저장하고 꺼내오는 과정에 강의의 예를 적용하면 동일한 커스텀 직렬화 및 역직렬화가 적용된 프로듀서, 컨슈머 클라이언트를 통해 가능할 것 같은데요 만약 프로듀서는 그대로 자바 (Spring 환경) 클라이언트로 구현된 것을 사용한다고 하고, 토픽에 저장된 데이터를 ksqldb를 사용한 스트림처리나 connect를 붙여 타겟에 보내는 용도로 쓴다고 했을 때는 어떻게 해야할 까요?이런 상황에서는 커스텀 역직렬화를 ksqldb나 connect에서 사용하기 어려울 것 같은데, 프로듀서에서 Avro 타입등으로 전송해야 하는지 궁금합니다. 특정 상황에서는 스키마를 굳이 관리하지 않고 그냥 Json타입을 사용하고 싶을 수도 있을 것 같은데 커스텀 직렬화를 통해 바이트 코드로 토픽에 전송시킨 후 ksqldb 등에서 JSON 포맷으로 읽으면 읽혀질까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
왜 @Configuration의 WebSecurity 클래스에서 생성자 주입을 하지 않나요?
@Configuration@EnableWebSecuritypublic class WebSecurity { extends WebSecurityConfigurerAdapter { private UserService userService; private BCryptPasswordEncoder bCryptPasswordEncoder; private Environment env; public WebSecurity(Environment env, UserService userService, BCryptPasswordEncoder bCryptPasswordEncoder) { this.env = env; this.userService = userService; this.bCryptPasswordEncoder = bCryptPasswordEncoder; }강의에서 보면 @Configuration으로 WebSecurity클래스가 설정되어있기에 userService, bCryptPasswordEncoder, environment 인스턴스가 준비되어 있다고합니다. 따라서 위의 코드와 같이 생성자주입을 하지않는데, 왜 @Configuration으로 설정되어 있으면 @Autowired로 주입을 받지 않아도 되는 걸까요?
-
미해결[데브원영] 아파치 카프카 for beginners
Hbase sink connector
안녕하세요강의 다 잘들었습니다.처음 만들어보는중인데 최종목표는 PostgreSQL과같은 rdb의 데이터를CDC로Apache atlas로 표현하기 위해 Hbase로 전달하고싶은게 목표입니다 Hbase sink connector를 검색해도 잘안나와서 가능한지와 json으로 어떻게 변환해서 넣어야하느지 궁금합니다
-
미해결실습으로 배우는 선착순 이벤트 시스템
질문드립니다
1분 42초에 lock을 건다고 하는데 이게 어떤 lock을 건다는 의미인지 모르겠습니다.설명해주시기로는 범위로 락을 잡고 처음에 쿠폰 발급 여부를 가져와서 판단하는 방식입니다.라고 설명해주셨는데 여기서 lock이란게 뭐고 lock을 사용하는 이유가 뭔지 설명해주시면 감사하겠습니다.if문을 통해 확인한다는게 lock인건지 아니면 apply메서드 자체에 lock을 걸고 다른 프로세스가 접근하지 못하게한다는건지 모르겠내요유저 아이디별로 쿠폰 발급 개수를 한개로 제한할때 Redis에 Set자료구조를 써도되고 Map을 써도될거같은데 Set을 소개해주신 이유가 있을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
user-service에 로그인 404뜨는데 뭐가 문제일까요?
깃허브 코드대로 했습니다
-
해결됨카프카 완벽 가이드 - ksqlDB
IoT Event Streaming 적용에 대해서
안녕하세요. IoT Device들의 데이터를 받아서 값들이 조건을 만족하면 이벤트를 발생시키는 개발업무에 있습니다. 그래서 streaming 분석솔루션을 찾던도중 ksqlDB관련을 접하게되었습니다. 강의를 간단하게 훑어보고 ksqlDB 솔루션을 적용해보고싶은데 궁금한점이있어서 질문 드립니다. IoT Device의 개수가 많을 경우에 각각의 Device의 걸어주어야하는 조건이 다양해질수있습니다.만약에,A device의 조건은 해당 값이 10이 넘어가면 이벤트 발생 그리고 B device의 조건은 값이 15가 넘어가면 이벤트발생 이런식으로 구성될수있습니다.각 Device마다 고유한 조건이 있기때문에 많은 stream이 생성될수있습니다.또한 E Device에서 발생한 이벤트 와 J Device에서 발생한 이벤트를 조인해서 새로운 stream을 만들어주어야할때도있습니다. 디바이스가 많고 이벤트처리 흐름이 복잡해질수록 stream,table,Mview가 많이 생길수 있기때문에 성능에대한 우려가 있습니다.물론 H/W나 traffic, SQL문의 복잡도,네트워크구성등 성능에 미치는 요인들이 많기때문에 성능이 어떻다는 확실히 답변하기 어려울것같긴합니다. 결론은 데이터스트리밍 분석을 위해 많은 stream,table,Mview 작성해도 성능 이슈가 크게 발생하는지(몇백 혹은 몇천개단위). 만약 성능이 부족하다면 kafka를 scale out,up하면 나아질수있는지도 궁금합니다. 강의를 전체적으로 훑는식으로봐서 자세히 듣지못해 틀린부분이 있을수있지만, 부족한점 참고하여 봐주시면 감사하겠습니다.
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
특정 dir로 위치를 잡으려면 어떻게 설정을 해야할까요
config를 root dir에 위치시킨게 아니라 특정 dir에 넣고 싶은데 그럴 때는 어떻게 uri를 잡아야하나요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
데이터베이스에 쿠폰 insert 실패시
안녕하세요. 강의 잘 듣고있습니다 !카프카 컨슈머가 쿠폰레포지토리에 save하는 과정에서 모종의 이유로 실패하여 롤백 되었을 때, 레디스에서는 이미 increment가 되었는데 이걸 하나 빼줘야되는거 아닌가요?이런 처리는 어떻게하는지 궁금합니다 !추가) 뒤에 얘기가 나오는군요 ㅎㅎㅎ.. FailedEvent를 저장하는 것도 실패하였다면, 배치프로그램이 제 역할을 못할 것 같은데요.. ! 그렇다면 로그를 보고 판단해야할 것 같은데 실무에서도 그렇게 진행이 될까요 ? 그리고, FailedEvent를 삽입하는 것에서도 에러가 발생할 수 있기 때문에 또 try catch로 묶어서 이것 마저 실패할 경우에도 로그를 따로 남겨야하는지 궁금합니다 !
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
jjwt 0.12 이상으로 하시는 분들에게..
jjwt가 버전업 되면서 강사님이 업데이트 해주신 코드들도 jwt valid할 때 안되는 경우가 발생하더라고요... 그래서 찾아본결과다음과 같이 작성하시면 원활하게 동작을 합니다. 참고하세요. private boolean isJwtValid(String jwt) { byte[] secretKeyBytes = Base64.getEncoder().encode(env.getProperty("token.secret").getBytes()); SecretKey signingKey = new SecretKeySpec(secretKeyBytes, SignatureAlgorithm.HS512.getJcaName()); boolean returnValue = true; String subject = null; try { JwtParser jwtParser = Jwts.parser(). verifyWith(signingKey).build(); Jws<Claims> claimsJws = jwtParser.parseSignedClaims(jwt); Claims payload = claimsJws.getPayload(); subject = payload.getSubject(); }catch (Exception ex){ returnValue = false; } if(subject == null || subject.isEmpty()){ returnValue = false; } return returnValue; }
-
미해결카프카 완벽 가이드 - ksqlDB
[수정요청] Join이해 중 select inner join a.user_id 수정 필요
안녕하세요.. 수강 하면서 하다 보니, 본의 아니게 수정 사항이 보입니다.KSQLDB/Join 이해 중에 select절에서 a.id 가 아닌 , a.user_id 로 수정 해야 될거 같습니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
mac m2 arm64 vim docker-compose.yml설정
zookeeper에서 오류가 발생해서 테스트 진행시 어려움이있습니다. 강의상의 내용으로 진행되었고,해당내용으로는 진행되지 않아 웹서핑 이후version: '3'services: zookeeper: image: zookeeper ports: - "2181:2181" kafka: build: . ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock확인되는 내용으로 변경했는데도 잘 안되더라구요 ㅜ늦게라도 확인되신다면 회신부탁드립니다!!
-
해결됨카프카 완벽 가이드 - ksqlDB
실무에서 카프카 환경 구축
안녕하세요,문득 실무에서 카프카 클러스터 환경 구축에 대해 궁금한 점이 생겼습니다. 강사님께서 진행하신 방법은 confluent의 카프카 프로젝트를 하나의 노드에 직접 다운받아서 주키퍼, 브로커 기동도 하고 ksql-cli 실행도 하신 것 같은데요,실무 환경에서는 클러스터 구축 노드가 주키퍼 클러스터를 이루는 노드들 및 브로커 등 여러 가지 일텐데요, 이런 경우는 어떻게 진행하는게 일반적일까요? 강의에서 사용한 동일한 플랫폼용 카프카 프로젝트를 ansible 등으로 설치 지원이 되는지 궁금합니다. 추가로 주키퍼나 브로커 노드들은 그 기능만 수행하고 ksql-cli나 schema-registry 혹은 connect 용으로 노드를 별도로 두고 사용하는 것이 일반적인지 궁금합니다.
-
미해결카프카 완벽 가이드 - ksqlDB
[수정요청] Mview CSAS 강좌중에 Insert문장 수정 요청
안녕하세요. 강좌를 수강 하다가, 강의 내용중 Mview CSAS 에서, customer_activeity_stream insert 문장이 강의 내용과 다르고, 칼럼이 달라서 에러 발생 합니다. activety_id 없습니다. 감사 합니다. INSERT INTO customer_activity_stream (customer_id, activity_id, activity_type, activity_point) VALUES (2, 10,'mobile_open',0.65); INSERT INTO customer_activity_stream (customer_id, activity_id, activity_type, activity_point) VALUES (4, 3, 'deposit', 0.35);
-
미해결카프카 완벽 가이드 - 코어편
kafka paraller-consumer 처리방법을 알고 싶습니다.
하나의 토픽, 하나의 파티션으로 순서보장을 하는 Consumer 처리를 알고싶습니다.kafka paraller-consumer 처리를 하고 싶은데 마땅한 예제가 나와있지 않아서요.해당 예제를 찾아보면 보통 multi thread 방식이라 순서보장이 되지않은것 같아 사용을 못할것 같습니다.최종적으로 순서보장을 하는 consumer 병렬처리 방법을 알고 싶어 질문드렸습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
config-servie 도커로 실행 시 에러 문의
안녕하세요."섹션 16. 애플리케이션 배포 - Docker Container"을 학습하면서 config-service를 Docker로 만들어 실행하면 컨테이너 실행 됐다가 Exit가 되고, "docker logs config-service"로 로그를 보면 아래와 에러가 발생합니다. JDK11 , springboot 2.4.5 버전에 spring-cloud-starter-bootstrap 의존성은 추가 되어 있는 상태입니다. 답변 부탁드립니다. 감사합니다.===================================================================2024-03-22 06:50:22.104 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'healthContributorRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthContributorRegistry]: Factory method 'healthContributorRegistry' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configServerHealthIndicator' defined in class path resource [org/springframework/cloud/config/server/config/EnvironmentRepositoryConfiguration.class]: Unsatisfied dependency expressed through method 'configServerHealthIndicator' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.cloud.config.server.config.CompositeConfiguration': Unsatisfied dependency expressed through method 'setEnvironmentRepos' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultEnvironmentRepository' defined in class path resource [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: You need to configure a uri for the git repository.2024-03-22 06:50:22.113 INFO 1 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'2024-03-22 06:50:22.117 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2024-03-22 06:50:22.134 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener :Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2024-03-22 06:50:22.149 ERROR 1 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :***************************APPLICATION FAILED TO START***************************Description:Invalid config server configuration.Action:If you are using the git profile, you need to set a Git URI in your configuration. If you are using a native profile and have spring.cloud.config.server.bootstrap=true, you need to use a composite configuration.===================================================================