[바미] Golang sarama예제로 Kafka 연동하기(interceptors).
·
프로그래밍(Web)/업무관련
예제는 github.com/Shopify/sarama Shopify/sarama Sarama is a Go library for Apache Kafka 0.8, and up. - Shopify/sarama github.com 여기의 코드를 사용했습니다. 먼저 제가 사용한 부분은 github.com/Shopify/sarama/tree/master/examples/interceptors Shopify/sarama Sarama is a Go library for Apache Kafka 0.8, and up. - Shopify/sarama github.com 부분인데 그러기 위해서는 일단 go.mod 파일을 수정해 줄 필요가 있었습니다. module github.com/Shopify/sarama/examples..
[바미] 카프카 Invalid config, exiting abnormally에러 대처하기
·
프로그래밍(Web)/업무관련
위와 같이 ERROR Invalid config, exiting abnormally (org.apache.zookeeper.server.quorum.QuorumPeerMain) org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing C:\kafka_2.12-2.4.0\config\zookeeper.properties at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:154) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumP..
[바미] Golang 카프카 삽질기...
·
프로그래밍(Web)/업무관련
현재 Golang으로 구현한 log 수집 서버는 log파일에 log들을 수집하는데 파일에서 카프카로 도입하도록 수정되었습니다. 카프카를 쓰려면 주피카를 써야 하고, 이 둘에 대한 설명은 다음과 같습니다. 카프카 메시징 큐의 일종입니다. 그리고 다른 메시징 큐 activemq, rabbitmq 대비 우수한 TPS 를 나타냅니다.따라서 대용량의 실시간 로그 처리에 특화되어 있습니다. 메시지를 기본적으로 저장하는 기존 메시징 시스템과는 달리 파일 시스템에 저장합니다. 따라서 데이터 유실에 안전합니다. 구성은 Producer, Broker(kafka 서버) , Consumer 로 되어있습니다. 기존 메시징 시스템과의 차이점 기존시스템은 Broker가 Consumer 에게 들어오는 메시지를 Push 방식으로 진행..
[바미] 테스팅을 잘하자!
·
프로그래밍(Web)/업무관련
데이터 입력 문제를 해결하니 또 다른 문제가 발생했다. 무한정의 데이터를 받으면 서버부하는 물론이고, 공격을 받았을 때의 서버 상태를 생각해보니 제한을 걸어야 했었다. 아무래도 회사일이다 보니 이런 부분은 나 혼자 독단적으로 결정하는 게 아니기 때문에 타 부서와의 조율이 필요했다. 그렇게 해서 나온 값은 64KB였다. 64KB이상이면 데이터를 받지않고, 내부에서 따로 관리하는 log파일에만 표시하기로 했다. 원래는 이렇게 하려 했었으나 아래와 같이 하면 어떤 값을 보냈었는지 조회할 수 없기 때문에 // body값 가져오는 함수. func bodycheck(w http.ResponseWriter, r *http.Request) ([]byte, int) { getlength := r.ContentLength..
[바미] r.Body.Read()와 ioutil.ReadAll()의 차이점.
·
프로그래밍(Web)/업무관련
log수집 서버에서 invalid character '\x00' in string literal라는 에러가 빈번하게 발생하여 원인을 찾아보니 r.body에서 읽어오는 값의 크기가 특정 크기보다 커지면 저 에러를 발생시킨 것입니다. 그래서 JSON Data가 짤리게 출력 되는 모습을 보여주어서 현재 보다 더 많은 Data를 받아 올 수 있도록 수정해 주어야 했습니다. 먼저 얼마만큼의 데이터를 받아 오는지 확인하기 위해 length값을 조회했더니 저 에러가 나지 않는 범위가 length값이 3836이였을 때 였습니다. 그 때 썼었던 코드는 다음과 같습니다. func bodycheck(w http.ResponseWriter, r *http.Request) []byte { getlength := r.Conten..
Bami
'프로그래밍(Web)/업무관련' 카테고리의 글 목록 (5 Page)