Free Lines Arrow
본문 바로가기
728x90

전체 글356

[Reactive Programming] 속도비교 속도비교실제로 얼마나 속도차이가 나는지 blocking 코드와 reactor 코드를 비교해보자. 코드예제고객에게 쿠폰을 발급하려고 한다. 조건은 가입일 5년 이상, 보유 포인트가 500 이상, 골드 멤버일 경우다.걸리는 시간은 총 6초이다.  isGoldMember: 골드 멤버인지 확인한다. 3초걸림.isGreaterThan500point: 보유 포인트 확인. 2초 걸림checkRegisterPeriod: 등록 기간 체크. 1초걸림.package com.p8labs.reactive.compareCode;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;import java.time.LocalDate;import j.. 2024. 11. 2.
[Reactive Programming] Flux, Mono 개념 서론리액티브 프로그래밍 패러다임은 종종 옵저버 설계 패턴의 확장으로 표현됩니다. Observer Pattern 에서 방출, 구독 이라는 개념을 익혔습니다.리액터는 좀더 많은 연산을 가능하게 해주는 퍼블리셔를 구현하며 결합을 가능하게 합니다. Flux플럭스는 0~N개의 방출된 항목의 비동기 시퀀스를 나타낸다. 선택적으로 완료 신호나 오류에 의해 종료되는 표준 퍼블리셔이다.플럭스의 흐름도 Flux String 복사 예제리스트를 Flux 로 변환한뒤 Flux에서 다시 List 을 반환하는 예제이다.List -> Flux -> List아래 예제는 Flux가 어떻게 동작하는지만 확인해 본다.1. List copyList = new ArrayList();2. List originList = Arrays.asList.. 2024. 10. 14.
[Reactive Programming] 개념 Reactive Programing 의 등장현재 소프트웨어의 아키텍처는 아래의 상황을 대응해야 한다.리액티브는 비동기 기반으로 데이터를 처리하여 아래 상황들을 어플리케이션 관점에서 해결해준다..빅데이터 처리다양한 환경:하나의 모바일 디바이스에서 다양한 환경에 애플리케이션이 배포된다.사용패턴: 사용자는 1년 내내 항상 서비스를 이용할수 있으면 밀리초단위의 응답시간을 기대한다여기서 중요한 단어는 빅데이터 처리, 다양한 환경, 밀리초의 응답이라고 생각한다.이를 수용하기 위해 리액티브 프로그래밍이 등장 하였다.  Blocking 방식의 문제점코드를 블록킹 방식으로 작성하면 일반적으로는 문제가 없지만 버틀넥(병목)이 발생하면 문제가 크다.그때 Thread 를 추가하거나 서버 또는 자원을 추가해서 해결하는 방법이 .. 2024. 10. 6.
[Redis] ZSetOperations ZSetOperationsZSetOperations는 Redis에서 제공하는 sorted set(정렬된 집합)에 대한 작업을 수행하는 인터페이스이다.ZSetOperations을 이용하여 레디스에서 정렬을 구현할수 있다.  레디스를 선택한 이유트래픽이 많이 발생하는 상황에서 QPS를 줄이기 위해 사용한다.뉴스 데이터는 객체에대해서 CRUD 가 많이 발생하지 않는다.뉴스 데이터를 '카테고리별' 최신순으로 가져와야한다.뉴스 데이터는 30일 까지만 보관한다. ZSetOperations에서 사용할 기능Boolean add(K key, V value, double score); key:   유니크한 값value: 키에 대한 값score: 키에 대한 스코어 점수reverseRange(K key, long start,.. 2024. 10. 5.
728x90
반응형