![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3sfKK/btsAcTYTlfy/XiugrmRx2Tde7yGvA7pTgK/img.png)
표기 - 32비트 (4바이트) 2진수 - 인간이 볼때는 편의성을 위해 점으로 구분된 4개의 10진수 값으로 표현 - (0~255).(0~255).(0~255).(0~255) 3가지 유형 1. 유니캐스트 - 1:1 통신 2. 멀티캐스트 - 1:n 통신 - IPTV (IPTV 망 내에서만 사용) 3. 브로드캐스트 - 일반적으로 서브넷 내부에서만 쓰이도록 국한. - DHCP * MAC 주소에도 3가지 유형의 주소가 있는데 이들과 IP주소를 혼동하면 안됨! (다만 각 유형과 대응관계를 가짐) 클래스 A,B,C : 유니캐스트 D : 멀티캐스트 E : 미래를 위해 쓰지 않고 남겨둠. 분배되는 블록의 크기를 뜻함 (덩치의 개념인 군사 용어에서 유래) 인터넷의 초기 설계) 인터넷이 이렇게 커질 줄 몰랐음. ip는 32..
요즘에 이벤트소싱이라는 개발 방법을 채택한 프로젝트를 진행하고 있는데, 다음과 같은 공통의 문제 패턴을 툴마다 비슷하게, 그리고 조금씩 다르게 해결하고 있는 모습이 눈에 띄는 것이 아닌가!! (그리고 또, 작년에 만들었던 job dispatcher도 결국은 이런거였구나.. 라는게 이제야 좀 눈에 들어왔다) 하나의 스트림을 여러 인스턴스로 (중복되지 않게, 그러나 처리되지 않는 것도 없게) 잘~ 분배하는 법. (심화 미션: 런타임에 인스턴스 개수가 줄거나 늘어날 수 있답니다.) kafka kinesis (KCL library) axon TEP (tracking event processor) topic stream event stream (event store) 처리해야하는 스트림 partition shar..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bn2yu6/btsAvrphxhM/2v5LcXSPjHZ96H3mMlRFKK/img.png)
LeaseCoordinator 아래 두 작업을 주기적으로 실행하는 스레드. worker랑 1:1...? (예) ShardRecordProcessor-0001에 LeaseCoordinator-0001) - LeaseTaker owner가 없는, 혹은 다른 worker가 오랜 기간 renew하는 데 실패한 lease를 가져감. - LeaseRenewer lease 갱신 (TEP 토큰 reclaim이랑 비슷한 듯) 2023-11-19 14:55:44.104 [LeaseCoordinator-0001] INFO s.a.k.l.dynamodb.DynamoDBLeaseTaker - {} Worker ed8f5dba-03ce-4082-93d4-264518669baa saw 1 total leases, 1 availab..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/UKJXw/btsAxdjyGsE/5l1QhaTXq05SgHUXFhUZm1/img.png)
Rebalancing 카프카 파티션을 consumer 인스턴스에 고르게 재분배하는 과정! 크게 2-step으로 이루어짐. (1) group management (membership) - active 컨슈머 인스턴스 리스트업 (2) resource assignment - 파티션 분배해주기 그리고 각 스텝의 책임자가 다름. (1) coordinator (broker 중 하나) - heartbeat 받고, 리밸런싱 트리거하는 주체 (파티션이나 컨슈머에 변경 감지하면) (2) group leader (consumer 중 하나) - 일반적으로 가장 먼저 조인한 consumer가 리더가 됨. partition assignment strategy 정하고 수행하는거 담당. cf) 그럼 controller는 뭔가?? z..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/CC8ps/btszLv5MZYe/nYQ4kjjkdbCklWbBKLjra1/img.jpg)
개념 - 주소 결졍 프로토콜 - IP 주소를 입력으로 하여 그 해당 MAC 주소를 결정해주는 프로토콜. - 커널에 구현되어 있음 (커널 마다 상세 구현 조금씩 다를 수 있음.) 라우팅 테이블 => 다음 홉 IP 주소를 알아냄 (3계층) ARP 캐시 => 다음 홉 IP주소에 해당하는 MAC 주소를 알아냄. (2계층) 한 홉 건너기 동작 개요 1. 컴퓨터/라우터에서 목적지 IP로 라우팅 테이블 검색 매칭된 열에서 (1) 인터페이스 : 어떤 인터페이스로 나가야 되는지 (2) 게이트웨이 : 다음 홉 IP 주소 (연결됨으로 표시된 케이스라면 다음홉 IP = 최종 목적지) * 인터페이스가 점대점 (p2p) 로 다음홉에 연결되어 있다면 다음홉 IP 주소 및 arp 필요 없음. 그냥 그 문으로 나가면 다음 홉 도달 가..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3pLLm/btszGPW9A6C/jYDDTYJckqXUDHPqA2sAQK/img.png)
데이터 링크의 기능 1. framing 2. error control 3. flow control 4. MAC (매체 접근 제어) : 전송 매체를 여러 컴퓨터가 공유하는 경우에만 필요 - 누가 수신해야 하는 데이터인지 확실히 해야함. - 여러 컴퓨터가 공용의 매체에 귀기울이고 있다가, 자신의 MAC 주소가 프레임 헤더에 쓰여있는 것만 수신. ip가 데이터링크 계층에 요구하는 것 1. 캡슐화 - Ethertype 같이 프레임 헤더에 IP 데이터그램을 실었다는 표시를 할 수 있어야 함. 2. ARP (address resolution protocol) 링크 계층 기술 2가지 유형 1) shared link - 이더넷, 무선랜 - MAC 주소 필요한 케이스 2) point to point link - 전화, ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3GdbD/btszD1jFLGZ/I4tPwR5qQhecGFNpdVuf00/img.jpg)
Inter-networking protocol 서로 다른 기술로 구현된 네트워크끼리 어떻게 연결하여 거대한 전체 연결망을 구성할 수 있을까? 예) (이더넷 연결망) ---- (LTE 연결망) 해결책1) 모든 가능한 네트워킹 기술 쌍 사이에 번역기를 두자 - 필요한 번역기 수는 n^2 (n=네크워크 기술 수) - 별로 확장 가능한 해결책이 아닌 듯 해결책2) 공통 언어를 하나 두자 - 필요한 번역기 수는 n (네트워크 기술 당 1개) - 이 공통 언어가 바로 '네트워크 연결 프로토콜' 즉, IP - 이것은 마치 시베리아 횡단 철도에서 몽골-중국 국경에서 철로 간격이 달라 유압 크레인으로 들어올려 바퀴를 갈아끼는 것과 같다고 비교 Encapsulation - 네트워크 메세지 계층 구조 - Ethernet ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/MtzD4/btsxq346vNZ/gJYpw0EvLQPl2k0e7iyGw1/img.png)
jvm 기반 언어 빌드 자동화 tool 다른 선택지로는 maven, ant 정도가 있다. (이거 두개는 xml 기반이라 점점 안쓰는 추세) 편한 의존성 버전 관리 간단한 명령어 한개만 치면 효율적으로(캐싱), 언제나 같은 결과물을 보장하며 deployable unit을 만들어줌 (jar 파일) gradle build 테스트, lint 체크 등 부가적 기능도 제공 gradle test gradle check 사용하는 이유 jdk안에 javac 라는 컴파일러가 들어있기는 하지만 빌드 자동화 툴 없이 쓴다면... 작성한 .java 파일 => .class 파일로 컴파일 => 여러개의 .class 파일 및 dependency 파일 모아서 .jar 파일 생성 이렇게 수동으로 해야함 너무 복잡하고 중복되는 커맨드가 ..