본문 바로가기

전체 글

(20)
[zookeeer-2] 주키퍼(zookeeper) 분산 락처리 전체 내용는 github 에서 확인할 수 있습니다 (스타는 사랑입니다) 하나의 어플리케이션에서는 같은 JVM 위에서 동작하기 때문에 java.util.concurrent 패키지의 Lock이나 Semaphore를 이용하여 하나의 스레드만 동작하게 할 수 있습니다. 하지만 이중화, 오토 스케일링 등과 같이 다른 물리 서버에서 동작 할 경우 위의 Lock, Semaphore 인스턴스를 이용하여 하나의 스레드만이 task를 수행 하도록 할 수 없습니다. 이를 해결하기 위해 1. -Dtask1.enabled=true과 같이 설정으로 하나의 WAS만 작업을 수행한다. 가장 간단한 방법이지만, 대부분 HA 구성을 위해 2대 이상의 서버가 동작하고 있고 해당 서버의 장애가 발생할 경우 해당 작업은 수행되지 않습니다. ..
[zookeeer-1] 주키퍼(zookeeper) 기본 개념 및 CLI 사용법 전체 내용는 github 에서 확인할 수 있습니다 (스타는 사랑입니다) Zookeeper Zookeeper 란? Zookeeper 데이터 모델 Zookeeper 서버 구성도 설치 및 CLI 기본 사용 도커 컴포즈를 이용한 주키퍼 실행 Java client 기본 사용 Zookeeper 활용 Reference Zookeepr 란? 분산 코디네이션 서비스를 위한 오픈소스 프로젝트 분산 처리 환경에서 사용 가능 한 데이터 저장소 활용 분야 서버 간의 정보 공유 (설정 관리) 서버 투입|제거 시 이벤트 처리(클러스터 관리) 리더 선출 서버 모니터링 분산 락 처리 장애 상황 판단 Zookeeper 데이터 모델 일반적인 파일 시스템과 비슷 각각의 디렉터리 노드를 znode라고 명명(변경X, 스페이스X) 노드는 영구(..
[Ethereum-POA] Parity aura consensus 간단 분석 POA : Parity - Aura(Authority Round) Define of step Primary Node Block Difficulty Example Finality Reference Define step step=UNIX_TIME/t, 여기서 t는 duration Primary Node index=step mod n, 여기서 n은 signer 수 Block Difficulty max_value(==340282366920938463463374607431768211455) + parent_step - current_step + current_empty_steps // in parity source // Chain scoring: total weight is sqrt(U256::max_value(..
Publish / Subscribe 패턴 알아보기 Publish / Subscribe 패턴 알아보기 모든 소스 코드는 Github에 있습니다. 스타는 사랑입니다 :) publish / subscribe 관련 패턴은 Blocking Queue BlockingQueue를 이용하여 Publish / Subscribe 패턴 구현하기 자바의 java.util.concurrent.BlockingQueue 인터페이스 구현체를 통해서 Publish / Subscribe를 구현할 수 있습니다. 우선 Publisher와 Subscriber가 공통의 BlockingQueue 구현체 인스턴스를 가지고 메시지 Publish(publisher::offer()) 메시지 Subcribe(subscriber::take())를 통해서 메시지를 전달할 수 있습니다. 아래는 간단한 Pub..
Springboot의 Auto configuration 살펴보기 Springboot의 Auto configuration을 살펴보고 AcitveMQ, RabbitMQ, Kafka에 대해 설정 값에 따른 Auto configuration 활성화를 살펴보겠습니다. 모든 예제는 Github에 있습니다. 스타는 사랑입니다. [ActiveMQ,RabbitMQ,KAFKA] 설정으로 Springboot의 Auto configuration 살펴보기 스프링부트에 "org.springframework.boot:spring-boot-starter-activemq"와 같은 의존성을 추가하고 실행하면 아래와 같이 activemq 관련 빈이 자동으로 생성된 것을 확인할 수 있습니다. main class public class RpcQueueApplication { public static vo..
[Heartbeat] Heartbeat로 서버 헬스체크하기 (Spring boot + Slack Web Hooks + Bot) 모든 소스코드는 Github에 있습니다. (스타는 사랑입니다) Index example heartbeat java agent Event bus(guava event bus) Slack WebHooks, Bot Example 서버 상태가 변하면 WebHooks로 알림 !command로 서버 상태 체크하기 Heartbeat (1) Init state --> (heart beat) --> Healthy state (2) Healthy state --> (heart beat lost) --> Heartbeat lost state (3) Heartbeat lost state --> (heart beat) --> Healthy state 설치 된 Agent에서 각각 Server로 heartbeat를 보냄 2-1) ..
[블록체인][go-ethereum] Private network (clique) 구축하기 GO-ETHEREUM private network (Clique) 구축하기 Index node 구성 ==> (bootnode, miner node1, miner node2, miner node3) go 설치 go-ethereum 빌드 private network 구축 노드 디렉터리 생성 account 생성 genesis 파일 생성(puppeth) 이더리움 노드 초기화 bootnode 생성 및 시작 각 노드 실행 노드 확인 1. GO 설치하기 go 설치하기는 다른 블로그를 참조하시면 좋을 것 같습니다. 저는 아래 링크로 설치했습니다 http://snowdeer.github.io/go/2018/01/20/how-to-install-golang-on-centos/ 2. go-ethereum build http..
Spring async + stomp websocket 랜덤 채팅 구현 예제 Spring boot + Async + Stomp Websocket을 이용한 랜덤 채팅 구현 예제 > 데모 - server : spring boot, stomp websocket - client : bootstrap, jquery, handlebars, sockjs 채팅 요청 ~ 채팅 형성까지는 비동기로 대기하고 있고, 채팅방이 형성되면 websocket으로 메시지를 주고받는 식으로 간단하게 구현해봤습니다.간단한 로직은 아래와 같습니다 1. 채팅 요청 1. 채팅 요청 (Async : DeferredResult로 응답)2. 유저 등록 (대기 큐에 등록)3. 채팅 가능 체크 3-1) 대기 큐에 2명 이상=> UUID로 채팅방 이름 생성 + Success (+ 채팅방 이름 포함) => UUID로 subscri..