-
[Golang] net/http 패키지개발언어/Go 2020. 9. 30. 23:58
1. net/http 기본사용 net/http 패키지는 HTTP 클라이언트와 서버를 작성하는 데 필요한 모든 기능을 제공한다. package main import ( "fmt" "net/http" ) func main() { port := 8080 http.HandleFunc("/index", indexHandler) http.ListenAndServe(fmt.Sprintf(":%v", port),nil) } func indexHandler(resp http.ResponseWriter, req *http.Request) { fmt.Fprint(resp, "Index Page\n") } net/http 패키지를 사용할 때, 첫 번째로 하는 작업은 http 패키지에서 HandleFunc 메서드를 호출하는 것..
-
[golang] 마샬링(Marshaling)개발언어/Go 2020. 9. 26. 01:30
1. 일반적인 관점에서의 마샬링 참고) 위키백과에서의 Marshaling 정의 더보기 컴퓨터 과학에서 마셜링(marshalling, l을 하나만 사용하여 marshaling이라고도 표기)이란 한 객체의 메모리에서 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정이다. 또한 이는 데이터를 컴퓨터 프로그램의 서로 다른 부분 간에 혹은 한 프로그램에서 다른 프로그램으로 이동해야 할 때도 사용된다. 마셜링은 직렬화(serialization)와 유사하며 한 오브젝트, 여기서는 직렬화 된 오브젝트로 멀리 떨어진 오브젝트와 통신하기 위해 사용된다. 이는 복잡한 통신을 단순화 하기 위해, 기본 요소(primitives) 대신 통신을 위한 맞춤형 오브젝트를 사용한다. 마셜링의 반대 개념으로 언마셜링..
-
[golang] 인터페이스(Interface)개발언어/Go 2020. 9. 24. 23:47
Go의 Interface는 흔히 알고있는 Java의 Interface 개념과는 많이 다르다. 보통 Java에서 Interface라고 하면 반드시 구현이 필요한 메서드 정도로 이해되는데, Go의 Interface는 메서드들의 집합체라고 정의될 수 있다. 아마 이렇게 글만 읽어서는 무슨말인지 모를테니... 간단하게 코드를 보면서 이해해보자. package main import "fmt" // 1. 인터페이스를 정의한다. type Figure interface { // interface에서 공통으로 묶을 메서드를 정의한다. Area() float32 } // 2. 구조체를 정의한다. type Square struct { Width float32 Height float32 } type Triangle struc..
-
7. Kafka 운영SW개발/Kafka 2020. 9. 21. 02:03
1. 필수 명령어 더보기 1.1 토픽 생성 $ kafka-topics.sh --zookeeper ${list} --replication-factor 1 --partitions 1 --topic test-topic --create 1.2 토픽 리스트 확인 $ kafka-topics.sh --zookeeper ${list} --list 1.3 토픽 상세보기 $ kafka-topics.sh --zookeeper ${list} --topic test-topic --describe 1.4 토픽 설정 변경 $ kafka-configs.sh --zookeeper ${list} --alter ${이하 alter에서 사용가능한 옵션들} 예시1) 보관주기(retention) 변경 $ kafka-configs.sh --zo..
-
6. ConsumerSW개발/Kafka 2020. 9. 20. 23:45
1. 주요기능 특정 파티션을 관리하고 있는 파티션 리더에게 메세지 가져오기 요청을 함 2. 종류 2.1 Old Consumer Consumer의 Offset 저장을 주키퍼에 함 2.2 New Consumer Consumer의 Offset 저장을 토픽에 함(0.9 버전 이후) 3. 주요 옵션 bootstrap.servers fetch.min.bytes - 한 번에 가져올 수 있는 최소 데이터 사이즈 group.id - consumer가 속한 consumer group 식별자 enable.auto.commit auto.offset.reset (3개 방식 존재) earliest - offset이 없는 경우 가장 초기의 offset으로 설정 latest - offset이 없는 경우 가장 마지막의 offset으로..
-
5. Producer (1)SW개발/Kafka 2020. 9. 18. 02:22
1. 요약 2. Producer? 메시지를 생산(Produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션 또는 서버 3. 명령어 테스트 메세지 보내기 /usr/local/kafka/bin/kafka-console-producer.sh --broker-list ${kafka broker명+id}:${port} --topic ${메세지를 보낼 topic명} 메세지 확인 /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server ${kafka명+id}:${port} --topic ${topic명} --from-beginning 4. Java로 Producer 사용해보기 import org.apache.kafka.clients.pr..
-
4. kafka 구조SW개발/Kafka 2020. 9. 17. 00:00
1. 카프카 구조의 특징 1.1 분산 시스템 분산 시스템이란 같은 역할을 하는 여러 대의 서버로 이뤄진 서버 그룹을 분산 시스템이라고 하며, 분산 시스템의 장점은 아래와 같습니다. 단일 시스템보다 더 높은 성능을 낼 수 있다 운영중인 서버에 장애가 발생하면 같은 그룹의 다른 서버가 일을 대신 처리할 수 있다. 시스템 확장이 용이하다. 1.2 페이지 캐시 OS는 물리적 메모리에 애플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리 일부를 페이지 캐시로 유지해 OS의 전체적인 성능 향상을 높이게 됩니다. 카프카는 이러한 특징을 이용해 빠른 액세스를 하기 위해 OS의 페이지 캐시를 이용하도록 디자인 되었습니다. 1.3 배치 전송 처리 서버와 클라이언트 사이 또는 서버 내부적으로 데이터를 주고받는 과정에서 ..