일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- spring cloud netflix
- dfs
- spring cloud netflix eureka
- Dynamic Routing
- 서비스스펙
- 단위테스트
- spring cloud
- spring cloud netflix zuul
- Eureka
- Spring Data Redis
- java #jvm #reference #gc #strong reference
- netflix eureka
- container image #docker #layer #filesystem #content addressable
- unittest
- 설계
- unit
- microservice architecture
- springcloud
- docker
- zuul
- 탐색
- reactive
- BFS
- api-gateway
- netflix
- Java
- code refactoring
- test
- forkandjoinpool #threadpool #jvm #async #non-blocking
- Today
- Total
목록분류 전체보기 (48)
phantasmicmeans 기술 블로그
Publisher Rective Stream에서 정의하는 Publisher는 sequential한 element들을 제공하는 provider이고, Subscriber의 요구에 따라 publish 한다. 앞서 살펴보았던 Observable과 동등한 의미로 보면 된다. Observable은 registerObserver(Observer observer)로 subscriber를 등록했다면, Publisher는 subcribe(Subscriber
앞선 글에서 Observer pattern + Iterator 패턴(이벤트의 끝, 그리고 Error) == Reactive Stream이라고 정리했다. 이와 더불어 토비의 리액티브 스트림 첫 강의에서 나온 Iterable Observable (Duality) 에 대해 짚고 넘어가자 Duality Iterable Observable [Iterable] [Observable] [Pull] [Push] [값을 끌어온다는 의미] [값을 가져가라는 의미] [iterator.next()] [notifyObservers(arg)] Iterable, Observable Pull, Push 먼저 Iterable과 Observable의 Pull-Push 차이를 보자. Iterable을 구현한 클래스들은 for-each s..
Iterator 반복자 패턴 RxJava(ReactiveX)는 Observer pattern, Iterator pattern 및 함수형 프로그래밍의 조합으로 사용된다. Observer pattern은 무한한 데이터 스트림에 매력적이다. 그러나 데이터 스트림의 끝 을 알리는 기능이 없고, 에러 전파 메커니즘 또한 포함하고 있지 않다. 또한 consumer가 준비되기 전 producer가 이벤트를 생성하는 것은 그다지 좋은 상황도 아니다. 동기식의 경우 이런 때를 대비해서 Iterator 패턴이 존재한다. public interface Iterator { T next(); boolean hasNext(); } 위 Iterator interface는 하나씩 항목을 검사하기 위한 next() method와 다음..
관찰자 패턴은 관찰자라고 불리는 자손의 리스트를 가지고 있는 주체(Subject) 를 필요로한다. 주체는 일반적으로 자신의 메서드 중 하나(e.g. notify)를 호출해 관찰자에게 상태 변경을 알리게 된다. GoF 에서의 옵저버 패턴 설명 객체 사이에 일대 다의 의존 관계를 정의해두어, 어떤 객체의 상태가 변할 때 그 객체의 의존성을 가진 다른 객체들이 변화를 통지받고 자동으로 갱신될 수 있게 만든다. 이 패턴은 이벤트 처리 기반 시스템에 필수적 e.g. MVC 패턴, 거의 모든 UI 라이브러리가 내부적으로 이 패턴 사용 Subject - Observer 는 1:N 관계를 이룰 수 있음. Subject |- Observer |- Observer |- Observer |- Observer 일반적인 옵저버..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9My0n/btqFpKpucmb/PbJZJaGZ0zRRhIJ5rco580/img.png)
version 4.0 기준 OS Memory 페이지 캐시와 힙 공간 구성 후에도 RAM 공간이 어느정도 남아야함 → 없으면 디스크로 swapping 되어 성능에 영향 1GB가 좋은 출발점이라고 함 Lucene index cache 인덱싱 기능 중 일부를 apache lucene으로 사용함. 명시적으로 지정해주지 않으면 native-btree index 사용 (apache lucene은 사용 안함) 인덱스가 메모리에 캐시 되도록 하여 성능 최적화 Page Cache 페이지 캐시는 Neo4j data와 native index를 캐시하는데 사용 됨. 디스크 액세스 비용 감소시킴. Neo4j 가 페이지 캐시에 사용할 수 있는 메모리 크기는 dbms.memory.pagecache.size로 지정 가능 실제 데이터..
분산 스트리밍 플랫폼 카프카 Pulish and subscribe to streams of records, similar to message queue or enterprise messaging system. Kafa's capabilities Kafka는 하나 이상의 서버에서 클러스터로 실행됨 Kafka cluster는 topic이라 불리는 category내에 streams of records를 저장함 각 record는 key, value, timestamp로 구성됨 Kafka has five core APIs The Producer API application이 하나 이상의 Kafka topic으로 stream of records를 publish 하도록 함 The Consumer API applica..
goroutine이란 Go루틴은 Go Runtime 이 관리하는 Logical Thread이다. Go에서 "go" 키워드를 사용해 함수를 호출하면, Runtime시 새로운 goroutine을 실행한다. goroutine은 asynchronusly하게 routine을 실행한다. 따라서 여러 코드를 concurrent하게 실행하는데 사용된다. goroutine은 OS Thread 보다 훨씬 가볍게 Async Cocurrent 처리를 구현하기 위해 만든 것이다. 이는 기본적으로 Go Runtime이 자체 관리한다. Go Runtime 상에서 관리된느 작업단위인 여러 goroutine은 종종 하나의 OS Thread 1개로도 실행되곤 한다. 즉, goroutine은 OS Thread와 1대1로 매핑되지 않고, ..
docker0, container network의 구조 NOTE 아래 그림은 docker의 network 구조를 간단히 도식화한 것이다. 여기서는 docker를 설치하면 가장 먼저 볼 수 있는 docker0 interface와 container network에 대해 알아본다. 1. docker0 interface Docker host를 설치한 후 host의 network interface를 보면, docker 0 이라는 interface를 볼 수 있다. $ifconfig 이 docker0 interface의 특징은, IP는 자동으로 172.17.0.1로 배정된다. IP는 DHCP로 자동할당이 되는 것이 아니고, docker 내부 로직에 따라 자동할당 된다. 이 docker0은 일반적은 interface가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c6HbRV/btqKuFDL52x/WgrKH6T1tfhERRSKkKUFE0/img.png)
Mesh Network 메시 네트워크(mesh network)는 각각의 노드가 네트워크에 대해 데이터를 릴레하는 네트워크 토폴로지이다. 모든 메시 노드들은 네트워크 내의 데이터 분산에 협업한다. 출처 - wikipedia Service Mesh MicroService Architecture 시스템의 서비스간 통신이 Mesh Network 형태를 띄는것에 빗대어 명명 MSA 시스템이 커지고 서비스가 점점 증가하고 관리가 어려워지고.. 통신, 메트릭, 보안 등등 서비스간의 상호 동작이 복잡해지고 있다. A. 서비스가 몇개더라? 몇개의 서비스가 있지? 서비스 당 인스턴스는 몇개나 존재하지? 서비스 인스턴스에 로드밸런싱은 어떻게 하지? 잘 떠있나? B. 저기서 장애가! A -> B -> 외부 API 외부 API..
RSocket은 Websocket, tcp와 같은 byte stream transport protocol 위에서 동작하는 binary protocol이자 reactive stream을 지원하는 application protocol입니다. Netflix에서 시작된 rsocket은 msa 환경에서 오버 헤드가 적은 프로토콜을 통해 http를 대체하기 위해 개발 되었고, 현재 netifi / facebook / pivotal에 의해 support 되고 있는 오픈 소스입니다. 여기서는 RSocket에 대해 다음과 같이 설명하고 있습니다. RSocket is a next-generation, reactive, layer 5 application communication protocol for building to..