분류 전체보기

재고 감소에 대해 DB 비관적락으로 구현했었다. 여기서 문제가 생겼다. 비관적락은 우선적으로 DB에 요청을 먼저 해야하기 때문에 1000 건이 들어온다고 하면 DB 자체에 1000 건의 요청이 쏠리게 된다. 그래서 DB 의 CPU 점유율이 올라가게 되었다. RDBMS 의 CPU 점유율을 관리하지 못한다면, 예상치 못한 오류가 생길 수 있다. 그래서 Redis의 분산락을 통해 구현했다. 분산락을 통해 RDBMS 의 CPU 점유율을 줄일 수 있었다.
· TIL
동시성 제어 방법들분산락RDB 가 아닌 Redis 에게 분산해서 락을 걸 수 있다. DB 락DB 락에는 여러 종류가 있지만 일반적으로 X-Lock을 걸어 락을 걸 수 있다. 각 구현 방법은 이 글에서 설명하지 않을 것이다. DB 락을 걸면 되는데 왜 분산락을 사용하지?분산락을 사용하는 이유는 다음과 같다. DB 단에 부하가 안 걸린다.다른 이유 (Sorted Set 등...)는 다 제쳐두고 이게 가장 크다. DB 단에 부하가 생기면 각종 예상치 못한 오류가 발생할 수 있다. 추가로 모노DB 면 하나의 도메인에서 발생하는 트래픽이 다른 도메인 트래픽까지 영향이 갈 수 있다.그러면 안 좋겠지?
FeignClient 통신 시 Request Header 를 넣어주기 RequestInterceptor 를 이용하면 된다! 추후 글 수정 예정
· TIL
@SQLRestriction("is_deleted IS FALSE") @SQLDelete(sql = "UPDATE p_product SET deleted_at = CURRENT_TIMESTAMP, is_deleted = true WHERE product_id = ?") 엔티티 단에 해당 어노테이션을 붙여주면 softDelete 에 대한 처리가 가능해진다.
https://www.notion.so/teamsparta/108ad820489a477f816c90d3b8d38a45?pvs=25 영역전개 (領域展開): 『무결성』 (無缺性) | NotionBuilt with Notion, the all-in-one connected workspace with publishing capabilities.teamsparta.notion.site 인프라 설계도 API 명세서노션 링크 참고해주세요ERD 명세서테이블 명세서주문(p_order)필드 이름 설명 데이터 타입 도메인 필수여부 키order_id주문 IDVARCHAR27YPKseller_company_id주문 받은 업체VARCHAR27YFKbuyer_company_id받는 업체VARCHAR27YFKis_delete삭제 여..
· TIL
대규모 시스템개발을 하다보면 수백만 명의 사용자가 동시에 접속하고 상호작용 할 수 있는 시스템을 구축해야 하는 상황이 생길 것이다.여기서 시스템의 안정성, 신뢰성을 유지하며 고성능의 어플리케이션을 제공해야한다.여기서는 대규모 스트림 처리로 해결하는 방법을 설명할 예정이다. 대규모 시스템 기준TPS(Transactions Per Second)초당 처리되는 트랜잭션 수일간 평균 접속량이 아닌 가장 많이 접속한 시간대의 최대값을 기준으로 대규모 시스템을 구축해야한다.접속량은 일정하지 않고 특정 시간대에 몰리는 현상이 잦다.   DB IO 최적화서버에서 데이터 제공 및 저장에서 대부분의 Database 에서 일어난다.Input:InMemoryDB Cache 사용DB 부하 감소빠른 응답으로 사용자 경험 향상데이터..
wonow_
'분류 전체보기' 카테고리의 글 목록 (5 Page)