subscriber, publisher 두개 같은 포트로 띄울 수 있나요?
미해결
실전! Redis 활용
이미 레디스 cli가 띄워져 있다고 해서요..
- redis
- nosql
- cache
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
실전! Redis 활용
이미 레디스 cli가 띄워져 있다고 해서요..
미해결
실습으로 배우는 선착순 이벤트 시스템
안녕하세요. 강의 잘 들었습니다. 강의 들으면서 궁금증이 생겼는데, 만약에 쿠폰 발급 기능을 API로 제공한다고 가정하면 client -> 쿠폰 발급 기능 API 호출이 이루어지고 쿠폰 발급 기능 API에서는 쿠폰 발급 여부를 확인하고 kafka로 produce하게 되는데, 이때는 실제로 쿠폰이 발급된 상태는 아닐 수도 있을 것으로 예상됩니다(실제 쿠폰이 발급되는 시점은 consumer에서 작업이 정상적으로 완료되어야하므로 트래픽이 많거나 하는 경우 시간차이가 더 심할 것으로 예상됩니다) 이러면 쿠폰 발급 기능 API에서 응답값은 어떤 값을 줘야할까요? 쿠폰 발급 여부에서 발급이 가능하다면 쿠폰 발급되는것은 확정이기 때문에 발급되었다는 정보? 쿠폰 발급 여부에서 발급이 가능하지만 추가적으로 polling해서 client 쪽에서 확인하도록 처리? 제가 생각했을땐 위의 2가지정도로 가능할 것 같은데 강사님 의견이 궁금합니다..! 감사합니다.
미해결
실습으로 배우는 선착순 이벤트 시스템
강의 잘 듣고 있습니다. 질문사항이 두개 있습니다. 1. 4강의 [문제점] 영상에서 쿠폰생성 10000개 요청으로 인해 mysql이 1분에 100개의 insert가 가능하다고 가정할 시 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행' 된다고 하셨는데요. 예제로 사용하신 Kafka 사용 예제에서는 Consumer 프로젝트도 어차피 API프로젝트와 같은 DB 를 바라보고 있으므로, 어차피 Kafka를 사용하여도 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행'되지 않나요? 왜 여쭤보냐면, 강의 내에서 Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책을 Kafka로 사용하셔서 문의드립니다. 2. 5강의 [Consumer 사용하기] 영상을 보면 API 프로젝트 Consumer 프로젝트가 별개로 존재합니다. 그러므로 API프로젝트의 테스트 케이스가 종료되어도 Consumer 프로젝트는 이미 Kafka로 100개의 데이터가 스트림으로 들어오는 상태이므로, 테스트케이스가 종료 되어도(즉, API프로젝트가 종료되어도) Cunsumer 프로젝트는 종료가 되지 않은 상태 이므로 100개의 쿠폰이 DB에 생성 이 되어야 하는게 아닌지요? 왜 여쭤보냐면, 강의 내에서는 API프로젝트가 종료되면 Consumer 프로젝트도 작업이 멈추는 현상이 있어서 문의드립니다.
미해결
실습으로 배우는 선착순 이벤트 시스템
쿠폰 생성 발급 로직도 컬럼에 쿠폰의 개수를 지정해놓으면 이전 강의랑 똑같은 거 같은데 왜 이번 강의는 쿠폰 엔티티를 새로 생성해서 그 개수를 체크하는 건지 궁금합니다. 이전 컬럼에 개수를 두어 관리하는 거랑 지금처럼 엔티티를 생성하는 방식의 차이점이 너무 궁금해요 항상 감사합니다.
미해결
실습으로 배우는 선착순 이벤트 시스템
만약 Redis에 장애가 발생한다면 2차 장치로 DB Count에 의존할 수 밖에 없는걸까요? 실무에선 어떻게 대응하시는지 궁금합니다!
미해결
실습으로 배우는 선착순 이벤트 시스템
안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?
미해결
실습으로 배우는 선착순 이벤트 시스템
강의에서 설명해주시기로는 쿠폰 개수를 가져오는 것부터 쿠폰 생성까지 lock을 걸어야 한다고 설명 주셨는데 이전 강의인 재고 관리 이슈와는 다르게 row가 아닌 table에 lock을 걸기 때문에 성능 이슈가 발생한다고 보면 될까요?
미해결
실습으로 배우는 선착순 이벤트 시스템
안녕하세요! 강의 재미있고 유익하게 잘 듣고 있습니다 :) 확장에 대해 생각해보니, Set을 이용해서는 중복방지 이상 개수 확장에 대해서 처리는 불가능 할 거 같아서요. 혹시, 2개 이상 N개 제한에 대한 확장 방법은 어떤게 있을까요?? 감사합니다!
미해결
실습으로 배우는 선착순 이벤트 시스템
분명 현재 없는 상태이고 결과가 자꾸 이상하게 나와서 sout 처리를 잠시 해보았습니다 package com.example.api.service; import com.example.api.domain.Coupon; import com.example.api.repository.CouponCountRepository; import com.example.api.repository.CouponRepository; import org.springframework.stereotype.Service; @Service public class ApplyService { private final CouponRepository couponRepository; private final CouponCountRepository couponCountRepository; public ApplyService(CouponRepository couponRepository, CouponCountRepository couponCountRepository) { this.couponRepository = couponRepository; this.couponCountRepository = couponCountRepository; } public void applyV1(Long userId) { Long count = couponRepository.count(); if(count > 100) { return; } couponRepository.save(new Coupon(userId)); } public void applyV2(Long userId) { Long count = couponCountRepository.increment(); System.out.println(count); if(count > 100) { return; } couponRepository.save(new Coupon(userId)); } } @SpringBootTest class ApplyServiceTest { @Autowired private ApplyService applyService; @Autowired private CouponRepository couponRepository; @Test public void applyOnce() { applyService.applyV1(1L); long count = couponRepository.count(); Assertions.assertEquals(1L, count); } @Test public void 여러명응모V1() throws InterruptedException { int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for(int i=0; i<threadCount; i++){ long userId = i; executorService.submit(() -> { try { applyService.applyV1(userId); } catch(Exception e) { System.out.println(e); }finally { latch.countDown(); } }); } latch.await(); long count = couponRepository.count(); assertThat(count).isEqualTo(100); } @Test public void 여러명응모V2() throws InterruptedException { int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for(int i=0; i<threadCount; i++){ long userId = i; executorService.submit(() -> { try { applyService.applyV2(userId); } catch(Exception e) { System.out.println(e); }finally { latch.countDown(); } }); } latch.await(); long count = couponRepository.count(); org.assertj.core.api.Assertions.assertThat(count).isEqualTo(100); } } 그런데 여러명응모V2 test를 실행시에 count를 출력시 다음과 같은 수가 나옵니다. 20003 20011 20012 20013 20015 20016 20017 20018 20020 20022 ??? 한번 할때마다 1000씩 쿠폰의 수가 증가중인데요;;; 조회했을때는 empty라 나오는데 이렇게 되는 연유를 잘 모르갰습니다. 테스트 코드라서 rollback이 되야할거 같은데 그렇지 않는것도 잘 모르겟네요;; ㅠㅠ
미해결
15일간의 빅데이터 파일럿 프로젝트
좋은 강의에 항상 신경써주셔서 감사합니다 미처 수강하지 못한 부분이 있어서 수강을 하고자 합니다 너무 좋은 강의에 감사드리며 요청드립니다
미해결
15일간의 빅데이터 파일럿 프로젝트
VM Name: Server01 Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter' (VERR_INTNET_FLT_IF_NOT_FOUND). Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND). Result Code: E_FAIL (0X80004005) Component: ConsoleWrap Interface: IConsole {6ac83d89-6ee7-4e33-8ae6-b257b2e81be8} 이런 오류가 뜨는데 어떻게 해결하면 좋을까요?? 구글링 해보니 host-only-ethernet을 새로만들고 다시 해보라고 하던데 그 방법도 되지 않습니다. Virtualbox 버전은 7.0.8 최신버전입니다.
미해결
쿠버네티스 101 - 클라우드/서버 개발 첫걸음
개발 환경 강의에서 VS 에서 Google Cloud Code 이외 설치 영상은 없는데 처음에 소개해줄 때 알아서 설치하라는 말씀이신가요? Google Cloud Code 익스텐션 설치 후 where.exe minicube 입력 시 정보: 제공된 패턴에 해당되는 파일을 찾지 못했습니다. 라고 떠서요.
미해결
15일간의 빅데이터 파일럿 프로젝트
안녕하세요 수강 중 아래 실습 진행이 어려워 질문 드립니다. 수집 파일럿 실행 5단계에서 카프카 Consumer 작동 실습시 Resetting offset 문구가 뜨며 데이터 확인이 안됩니다. 시뮬레이터 재실행 및 스마트카 상태 정보 다시 옮겨 보았지만 안되었습니다. car-batch-log 를 확인했을때 위와 같이 뜨는데 상관없는지 궁금합니다. [오류문구] [root@server02 ~]# kafka-console-consumer --bootstrap-server server02.hadoop.com :9092 --topic SmartCar-Topic --partition 0 23/01/09 18:47:52 INFO utils.Log4jControllerRegistration$: Registered kafka:type =kafka.Log4jController MBean 23/01/09 18:47:52 INFO consumer.ConsumerConfig: ConsumerConfig values: auto.commit.interval.ms = 5000 auto.offset.reset = latest bootstrap.servers = [ server02.hadoop.com:9092 ] check.crcs = true client.dns.lookup = default client.id = connections.max.idle.ms = 540000 default.api.timeout.ms = 60000 enable.auto .commit = false exclude.internal.topics = true fetch.max.bytes = 52428800 fetch.max.wait.ms = 500 fetch.min.bytes = 1 group.id = console-consumer-96835 heartbeat.interval.ms = 3000 interceptor.classes = [] internal.leave.group .on.close = true isolation.level = read_uncommitted key.deserializer = class org.apache.kafka.common.serialization.ByteArray Deserializer max.partition.fetch.bytes = 1048576 max.poll.interval.ms = 300000 max.poll.records = 500 metadata.max.age.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.recording.level = INFO metrics.sample.window.ms = 30000 partition.assignment.strategy = [class org.apache.kafka.clients.consumer .RangeAssignor] receive.buffer.bytes = 65536 reconnect.backoff.max.ms = 1000 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retry.backoff.ms = 100 sasl.client.callback.handler.class = null sasl.jaas.config = null sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.login.callback.handler.class = null sasl.login.class = null sasl.login.refresh.buffer.seconds = 300 sasl.login.refresh.min.period.seconds = 60 sasl.login.refresh.window.factor = 0.8 sasl.login.refresh.window.jitter = 0.05 sasl.mechanism = GSSAPI security.protocol = PLAINTEXT send.buffer.bytes = 131072 session.timeout.ms = 10000 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1] ssl.endpoint.identification.algorithm = null ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLS ssl.provider = null ssl.secure .random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS value.deserializer = class org.apache.kafka.common.serialization.ByteArr ayDeserializer 23/01/09 18:47:53 INFO utils.AppInfoParser: Kafka version: 2.2.1-cdh6.3.2 23/01/09 18:47:53 INFO utils.AppInfoParser: Kafka commitId: unknown 23/01/09 18:47:53 INFO consumer.KafkaConsumer: [Consumer clientId=consumer-1, gr oupId=console-consumer-96835] Subscribed to partition(s): SmartCar-Topic-0 23/01/09 18:47:53 INFO clients.Metadata: Cluster ID: AWKsMltnSBSo2f2sVF2P-g 23/01/09 18:47:53 INFO internals.Fetcher: [Consumer clientId=consumer-1, groupId =console-consumer-96835] Resetting offset for partition SmartCar-Topic-0 to offs et 14. 감사합니다.
해결됨
15일간의 빅데이터 파일럿 프로젝트
안녕하세요, 15일간의 빅데이터 파일럿 프로젝트 강의 수강생입니다. 유익한 강의 감사합니다. 설명을 잘해주셔서 큰 어려움 없이 듣고 있습니다. 다만, VM 환경 구성 중 로그인 관련 문제 가 생겨서 질문드립니다. Server01과 Server02 에서 모두 로그인을 요청 하고 있으며, 다음 단계 로 진행할 수 없습니다. 윈도우11 PC에서 Virtual Box 버전은 VirtualBox 6.1.40 입니다. 강의와 동일한 5 버전이 지원되지 않아서 가장 가까운 6.1.40 버전 과 최신 7 버전 으로 설치했습니다. C, D 드라이브 용량은 200GB 이상 여유공간이 있으며, SSD입니다. 아래는 과거 게시판 질문 답변과 구글링을 바탕으로 시도한 방법입니다. Virtual Box 삭제 및 설치 - 6, 7 버전 모두 시도 / Server01, Server02 파일 재다운로드 -> Host-Only Ethernet Adapter를 찾지 못하는 경우가 있었으나, Virtual Box의 Host-Only Ethernet Adapter 재설정 후 접속해도 로그인창이 나왔습니다. Host-Only Ethernet Adapter 에러 Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter' (VERR_INTNET_FLT_IF_NOT_FOUND). Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND). 결과 코드: E_FAIL (0x80004005) 구성 요소: ConsoleWrap 인터페이스: IConsole {872da645-4a9b-1727-bee2-5585105b9eed} -> 해당 에러는 새로운 Host-Only Ethernet Adapter를 추가하여 해결되었습니다. ->Server02, 01 순서로 실행하고, 각각 하나씩 실행도 했습니다. 윈도우 제어판 Host-Only Ethernet Adapter 설정 -> 윈도우 제어판 네트워크 설정에서 Host-Only Ethernet Adapter 사용 안함으로 설정하고, 재설치하였으나 로그인창 문제가 해결되지 않았습니다. 현재 Virtual Box 네트워크 환경 설정입니다. 관련이 있는지는 모르겠지만, VBoxNetDHCP 프로세스 종료 후에도 진행하였으나 동일한 현상이 발생했습니다. 해당 문제를 해결할 방법 또는 추가로 시도할 방법이 있을까요? 답변 기다리겠습니다. 감사합니다.
미해결
15일간의 빅데이터 파일럿 프로젝트
부록_실무로 배우는 빅데이터 기술-확장하기(유튜브 강의) 강의 교안 PPT를 받고 싶습니다 제공 가능한지 문의드립니다
미해결
15일간의 빅데이터 파일럿 프로젝트
안녕하세요! 좋은 강의 잘 보고 있습니다~ 제플린 파트에서 다음과 같은 오류를 만나게되었는데 혹시 제가 놓친 부분이 있을까요?? 오류 메세지만으로는 알기가 좀 어렵네요 ㅠ 작성 내용은 예제 소스에서 biz_date 부분만 바꾸었습니다.
미해결
대세는 쿠버네티스 (Helm편)
안녕하세요.. 늦었지만, 새해 복많이 받으세요 제가 정확한 질문을 하고 있는지 의문이 들지만, 좀 이유를 알고 싶어서요.. bitnami에서 작성한 redis(6.2.5-debian-10-r34)를 보고 있는데 생성된 pod의 시간이 좀 달라서, 고쳐보려고 timezone과 관련한 부분을 vvolumemount를 하려고 하는데 pod를 yaml을 작성하는데가 없어보여서, 추가를 어떻게 해야할 지 모르겠네요 #registry: docker.io #repository: bitnami/redis #tag: 6.2.5-debian-10-r34 ## Specify a imagePullPolicy master: initContainers: - name: redis volumeMounts: - name: tz-config mountPath: /etc/localtime extraVolumes: - name: tz-config hostPath: path: /usr/share/zoneinfo/Asia/Seoul extraVolumeMounts: - name: tz-config mountPath: /etc/localtime 이렇게 추가를 하면 master pod가 사라져서 어떻게 해야할지 모르겠네요..
미해결
15일간의 빅데이터 파일럿 프로젝트
Mac으로 환경 구성 하려고 하는데 앞으로 수업 내용들이 전부 Window 기준으로 되어있다고 하셔서, mac 사용시 혹시 크게 불편한 부분이 있나요?
해결됨
15일간의 빅데이터 파일럿 프로젝트
멀티 브로커(Broker1, Broker2)와 Multi Node를 가지는 아키텍처에 대해서 설명해주셨는데요. 중간에 각 Broker에 있는 Topic들을 하나도 묶을 수 있다는 내용이 있는데 정확히 어떤 의미인가요? Broker들끼리 서로 데이터를 공유한다는 말인가요? Consumer 1과 Consumer2가 같은 저장소를 바라본다는 말씀이 Node 1에 접근하더라도 Node 2에 있는 데이터에 접근 할 수 있다는 의미인가요?
해결됨
15일간의 빅데이터 파일럿 프로젝트
vitualbox 최신 버전으로 설치하고 강의에 나와있는 부분을 따라서 실행하다가 클러스터 설치 중 다음과 같은 에러가 발생합니다. vitualbox 다른 버전으로 설치하면 아예 실행도 안됩니다. (강의자료 19페이지 수행 중 에러 발생)