본문 바로가기

학습 기록 (Learning Logs)/Today I Learned

(32)
채팅 서버 최종 구조+-----------+ +--------------+| Client 가 |──WebSocket→ | WS Server A |──→ Kafka Produce+-----------+ +--------------+ │ │ │ ▼ │ └→ Redis SET [ Kafka ] │ │ ▼ ▼+..
gRPC gRPCgoogle 에서 만든 RPC 프레임워크Remote Procedure Call서버에서 구현되고-->  클라이언트에서 호출하는 함수!  grpc.iogRPC 특징빠른 전송높은 성능언어 중립성양방향 스트리밍1. binary data - 가볍다 -> 빠른 전송 JSON과 같은 텍스트 기반 방식에 비해 -> 용량이 작으므로 훨씬 빠르게 전송 가능gRPC는 REST API와 같은 다른 방식들에 비해 효율적으로 요청과 응답을 주고받을 수 있습니다. 2. HTTP/2 사용 -> 순서 상관 없음, 양방향더보기HTTP 1) 단방향, 순서가 중요함 2) 순서대로 처리  3) 밀린다 HTTP/21) 양방향 2) 순서 상관 없음  3. TLS -> 데이터 암호화메세지를 훔쳐보거나메세지 내용을 변경하거나클라이언트, 서버..
MQTT MQTT (Message Queuing Telemetry Transport) 프로토콜 개요MQTT는 경량의 발행/구독(Publish/Subscribe) 모델을 기반으로 한 메시지 프로토콜로,IoT(Internet of Things) 환경에서 주로 사용됩니다. 저전력, 저대역폭 환경에서도 안정적인 메시지 전송을 보장하도록 설계되었습니다.  1. MQTT 특징① 경량 프로토콜메시지 크기가 작고, 패킷 오버헤드가 적음TCP/IP 위에서 동작하며, 기본적으로 **QoS (Quality of Service)**를 제공② 발행/구독 (Publish/Subscribe) 모델클라이언트는 메시지를 **발행(Publish)**하거나 **구독(Subscribe)**하는 방식으로 통신중간에 **브로커(Broker)**가 존재..
7장 스케쥴링 7장 스케쥴링7.1 워크로드에 대한 가정7.2 스케줄링 평가 항목7.3 선입선출7.4 최단 작업 우선7.5 최소 잔여시간 우선7.6 새로운 평가 기준: 응답 시간7.7 라운드 로빈7.8 입출력 연산 고려7.9 no more oracle7.10 요약 8장 MLFQ: 멀티 레벨 피드백 큐8.1 MLFQ 기본 규칙8.2 우선순위 변경8.3 우선순위 상향 조정8.4 더 나은 시간 측정8.5 MLFQ 조정, 다른 쟁점들8.6 요약 9장 비례 배분9.1 추첨권이 당신이 몫9.2 추첨 기법9.3 구현9.4 예제9.5 추첨권 배분 방식9.6 왜 결정론 방법을 사용을 하지 않는가?9.7 요약 10장 멀티프로세서 스케쥴링10.1 멀티프로세서 구조10.2 동기화를 잊지마라10.3 캐시 친화성10.4 단일 큐 스케줄링10.5..
스케줄링(6,7,8,9,10) 6장 제한적 직접 실행 원리6.1 제한적 직접 실행6.2 문제점: 제한된 연산6.3 문제점: 프로세서 간 전환6.4 병행성 걱정6.5 요약 7장 스케쥴링7.1 워크로드에 대한 가정7.2 스케줄링 평가 항목7.3 선입선출7.4 최단 작업 우선7.5 최소 잔여시간 우선7.6 새로운 평가 기준: 응답 시간7.7 라운드 로빈7.8 입출력 연산 고려7.9 no more oracle7.10 요약 8장 MLFQ: 멀티 레벨 피드백 큐8.1 MLFQ 기본 규칙8.2 우선순위 변경8.3 우선순위 상향 조정8.4 더 나은 시간 측정8.5 MLFQ 조정, 다른 쟁점들8.6 요약 9장 비례 배분9.1 추첨권이 당신이 몫9.2 추첨 기법9.3 구현9.4 예제9.5 추첨권 배분 방식9.6 왜 결정론 방법을 사용을 하지 않는가?9..
개인 채팅, 단체 채팅 : 테이블 설계와 Kafka 토픽 설계 1:1 대화 vs 단체방에서의 테이블 설계와 Kafka 토픽 설계1:1 채팅과 그룹 채팅 모두 처리해야 함Kafka 토픽 설계는 순서 보장 + 확장성 고려데이터베이스 테이블은 채팅방, 메시지, 참여자를 명확히 분리해야 함💡 최종 설계구조설정Kafka Topicchat-messages (단일 or 여러 파티션)Kafka Consumer서버마다 서로 다른 groupId 사용WebSocket 서버Kafka 메시지를 받아 → Redis에서 유저 조회 → WebSocket으로 push📌 1. 데이터베이스 테이블 설계p_chat_rooms (채팅방)@Entity@Table(name = "p_chat_rooms")@NoArgsConstructor(access = AccessLevel.PROTECTED)@Entit..
정렬 String[][] book_time; Arrays.sort(book_time, Comparator.comparing(o -> o[0]));  Arrays.sort(book_time, (o1, o2) -> {            if (o1[0].equals(o2[0])) {                return o1[1].compareTo(o2[1]);            }            return o1[0].compareTo(o2[0]);        });   ✅ 1. 단일 배열 (1차원)🔹 기본형 배열 (int[], double[], char[] 등) 기본형은 Comparator 쓸 수 없음 (기본 오름차순만 가능)내림차순 하고 싶다면 Integer[]로 박싱해야 함  int[] ar..
원자성 원자성(Atomicity)트랜잭션의 핵심 속성 중 하나로,"모든 작업이 전부 수행되거나, 전혀 수행되지 않아야 한다"는 원칙입니다.즉, 조회 → 검증 → 저장이 하나의 불가분한 단위로 실행되어야중간에 다른 스레드나 사용자에게 "틈"을 주지 않습니다.    https://cutewonny.tistory.com/entry/transaction transaction공통 질문   출처:https://www.youtube.com/watch?v=sLJ8ypeHGlMtransaction?- 단일한 논리적인 작업 단위(a single logical unit of work)- 논리적인 이유로 여러 sql문을 단일 작업으로 묶어서, 나눠질 수 없도록 만듦- tcutewonny.tistory.com  하나의 코드에조회, 예..