분류 전체보기 1341

Kafka Source Connect 사용

현재 localhost의 8083 포트가 Kafka Source Connectors이다. 등록한 kafka Connect를 통해 kafkaSourceConnect를 추가할 것이다. name : Connect이름 config 설정 connector.class : Connector 종류(현재는 jdbc) connection.url , user, password: 연결될 DB, user, password mode, incrementing.colimn.name : 등록이 되면서 동작할 Mode 설정, 증가시킬 컬럼 선택 table.whitelist : 변경을 감지할 테이블 topic.prefix : 변경된 내용을 어디다가 저장할지 Connect 목록 확인 http://localhost:8083/connector..

Apache Kafka 사용 - Kafka Connect 설치하기

특별한 코드 없이 Configuration으로 데이터를 이동한다. RESTful API 통해 지원 Stream, Batch 형태로 데이터 전송이 가능하다. kafkaConnectSource를 통해 출발지에서 KafkaCluster에 데이터 전송이 가능하고, KafkaConnectSink를 통해 KafkaCluster에서 목적지로 데이터 전송이 가능하다 kafkaConnectSource : 보내는 쪽 , KafkaConnectSink : 받는 쪽 MariaDB 설치하기 https://mariadb.org/ MariaDB Foundation - MariaDB.org … Continue reading "MariaDB Foundation" mariadb.org zip 파일로 설치하였을 경우 몇 가지 설정을 해야..

Apache Kafka 사용 - Producer/Consumer

Kafka 서버 기동 기동시 properties로 매개변수로 주면 된다. KafkaServer를 기동 하기 위해 zookeeper를 먼저 기동 해야 한다. Zookeeper 기동 하기 ./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties KafkaaServer 기동 하기 ./bin/windows/kafka-server-start.bat ./config/server.properties Kafka는 데이터를 전송하게 되면 Topic에 저장이 된다 사용자가 임의로 Topic을 생성해 줄 수도 있다. Topic에 관심이 있다고 등록한 Consumer가 있다면 Topic에 데이터 업데이트된다면 Consumer들에게 전달된다 Topic 생성하..

Apache Kafka 설치

scalar 언어로 된 오픈 소스 메시지 서버 프로젝트 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공 RabbitMQ보단 kafka가 대용량 데이터 처리에 많이 사용된다. 데이터 동기화를 위해서는 여러 서비스 간의 환경이 중요한데 Kafka를 통해 통신을 하게 되면 해당 consumer들은 kafka만 바라보면 되기 때문에 대용량 데이터 전송이 가능하다. 메시지 보내는 쪽 : Producer, 받는쪽 : Consumer Apache Zookeeper와 연동해서 사용한다 중개인을 컨트롤하는 역할을 한다. 3대 이상을 브로커를 연결해서 사용해야 안전하다 Kafka 설치 https://kafka.apache.org/ Apache Kafka Apache Kafka:..

데이터 동기화 문제

FeignClient로 Order를 호출하게 되면 OrderService 또한 동기화 문제가 발생하게 된다. OrderSevice가 실행되게 된다면 각각의 DB가 올라가기 때문에 같은 ID User로 검색했을 때 Order값들이 다르게 나온다 해결 방법 하나의 데이베이스를 사용해서 동기화 문제를 해결한다. Database간 동기화(Apache Kafka나 RabbitMQ를 사용해서 데이터를 동기화한다. Message Queuing Server에 전달된 데이터를 단일화된 DB(하나의 데이터베이스)에 저장한다(1-2번을 합친다) 문제 확인하기 3개의 OrderService를 실행하고 1개의 UserService를 실행한다. FeignClient를 호출할떄마다 다른 OrderService를 호출하기 때문에 같..

ErrorDecoder

Feign 에러에서 어떤 오류 코드가 발생하고, 어떤 값을 반환하고, 어떤 메서드가 호출되는지 확인할 수 있다. FeignErrorDecoder 클래스 구현 404 에러일 경우 메소드 이름이 getOrders이면 ResponseStatusException오류를 발생시킨다. Bean 등록 UserService 수정 @Override public UserDto getUserByUserId(String userId) { UserEntity userEntity = userRepository.findByUserId(userId); if (userEntity == null) { throw new UsernameNotFoundException("User not found"); //없을떄 오류 로그 } UserDto ..

FeignClient

REST 방식을 사용하기 위해 추상화 한 Spring cloud Netfilx을 라이브러리이다 개발자 입장에서는 하나의 애플리케이션 안에서 사용하는 느낌이 들도록 사용할 수 있도록 도와준다. 의존성 추가 @EnableFeignClients 어노테이션 추가 FeignClient 인터페이스 생성 실행하고자 하는 MSA의 이름을 @FeignClient의 name속성으로 전달한다. 실제 같은 서비스에 있는듯이 Mapping을 해주면 된다. UserServiceImpl 수정 생성자 주입 기존에 사용하던 RestTemplate은 주석처리하여 동작하지 않도록 하고, 실제 같은 Application에 있는 듯이 사용하기만 하면 된다. FeignClient 예외 처리 FeignClient에서 없는 주소를 접속하게 되면,..

REST Template

REST TEMPLATE를 이용해서 다른 서비스를 호출한다. 전통적으로 다른 API를 호출할 때 많이 사용했던 방법이다. Bean 등록하기 UserService의 ServiceImpl 로직 수정 기존에 빈값을 넣어 반환하던 로직을 실제 주문정보를 넣어서 반환하도록 한다. env, restTemplate Bean을 주입받는다. Service 로직 수정 환경설정 파일에 설정한 Url을 통해 order_service에 접근한다. GET 방식, 파라미터는 X, 반환값은 List 를 반환받는다. @LoadBalaced 어노테이션