전체 글173 Optimistic Lock과 Pessimistic Lock 낙관적 락 (Optimistic Lock) 트랜잭션 대부분은 충돌이 발생하지 않을 것이라고 낙관적으로 접근하는 방식 어플리케이션 레벨에서 Lock 을 건다. 데이터를 읽는 시점에 Lock을 걸지 않고, 수정을 하려고 할때 데이터가 변경되었는지 확인하고 데이터를 변경을 시도한다. @Version JPA의 @Version 어노테이션을 제공하고 있다. 엔티티가 수정될때 마다 자동으로 버전을 증가 시키며, 커밋을 하기 전에 엔티티의 버전과 DB의 버전이 같은지 확인을 한다. 버전이 다르면 OptimisticLockException 을 발생 시킨다. 지원하는 타입은 long, Long int, Integer, short, Short, timestamp @Version private Integer version; .. 2020. 4. 15. Webflux vs WebMvc 성능 비교 Webflux 가 성능이 좋다고 하는데, 얼마나 성능이 좋은지 알아보도록 하자. Webflux는 비동기 논 블록킹 방식이므로 Webmvc의 멀티 스레드 방식보다 성능이 우수하다. 적은 리소스로 더 많은 트래픽을 처리가 가능하다. 여기서 좀 헷갈리는 내용을 정리하고 넘어가자 동기-비동기, 블록킹-논블록킹의 차이점은 과연 무엇인가? 동기와 비동기 = 함수가 바로 리턴되는지 여부 블록킹과 논블록킹 = 백그라운드 작업 여부를 확인하는가 여부 동기-블록킹 방식은 함수를 호출하면 백그라운드 작업이 완료되었는 계속 확인하고 완료되면 함수가 리턴되는 구조이고 비동기-논 블록킹 방식은 함수를 호출하고 백그라운드 작업이 끝났는지 확인하지 않고 리턴을 하고 바로 다른 작업을 한다. 백그라운드 작업의 종료 여부는 이벤트로 수.. 2020. 4. 6. Spring Webflux Cold / Hot 이해하기 스프링의 웹플럭스에는 Flux와 Mono 라는 Reactive Streams Publisher 의 구현체가 있다. Flux 와 Mono 는 두 종류의 발행 방식이 있는데, Cold 과 Hot 방식이 존재한다. Cold sequences subscribe 할때 마다, 매번 새로운 데이터를 발행하고 동작하는 방식이다. 그리고 subscribe 를 하기 전에는 동작하지 않는다. Webflux 에서는 일반적으로 Cold 방식으로 동작한다. 먼저 Mono 로 예를 들어 보자. Mono body = httpGet(); body.subscribe(s -> log.info("Subscriber 1 : " + s.length())); body.subscribe(s -> log.info("Subscriber 2 : " +.. 2020. 3. 29. Spring Webflux, 이해하고 사용하자 Webflux 란? Webflux를 먼저 이해하려면, reactive streams 를 먼저 이해해야 한다. reactive streams 란? reactive-streams.org 에서는 다음과 같이 정의하고 있다. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. 대충 해석하면 "논블로킹(Non-blocking) 백프레셔(back pressure)를 이용한 비동기 데이터 처리의 표준이다" Reactive Streams 배경 2013년에 Netflix와 Pivotal, Lightbend의 엔지니어들이 처음 개발하기 시작하였고, Net.. 2020. 3. 21. 이전 1 ··· 40 41 42 43 44 다음