개발하면서/코드보면서
-
xstream + spring dev-tools 썼더니 문제가 발생했다.개발하면서/코드보면서 2021. 3. 27. 14:42
개인 프로젝트 중 이것저것 수정하다 보니 XStream 사용하는 부분에서 오류가 발생했다. 한꺼번에 많은 수정을 한 게 가장 큰 실수였고 문제의 원인을 gradle이나 XStream 설정이 잘못된 줄 알고 엄한 곳에서 삽질했다. 하지만 결국엔 찾지 못해 원복 했다.... JUnit Test 실행할 때는 정상 동작하는데 Application 실행하면 발생했다. 일주일 정도 지났을까? 다시 시도하였다. 이번에는 한 개 수정 -> 실행 -> 어 되네? 의 반복으로 진행했고 (당연히 그래야 하는데...ㅎ;;) spring-devtools 추가했을 때 오류가 나는 것을 발견하였다. 그래서 해결은 어떻게 했니? stackoverflow.com/questions/59176413/error-using-xstream-i..
-
Kafka 스키마 관리, Schema Registry개발하면서/코드보면서 2019. 8. 26. 00:56
Why? Apache Kafka® is a distributed streaming platform. Apache Kafka 페이지에 들어가면 볼드체로 가장 먼저 보이는 문장입니다. 카프카는 메시지 브로커 역할을 굉장히 잘해주는데요 , 주고받는 메시지의 유효성 검사(?)는 하지 않습니다. 보내면 받은 대로 저장하고 달라면 저장된 데이터를 주는 역할만 하죠. Consumer 입장에서는 받은 메시지가 어떤 내용인지 알아야 파싱 하고 적절한 로직을 실행할 텐데 Kafka는 이를 보장하지 않으니 Producer, Consumer 개발하는 쪽에서 서로 약속하고 메시지를 주고받아야 합니다. 그래서 csv, xml, json 같은 데이터 포맷을 적용해서 메시지를 주고받습니다. 하지만 이것도 불안한 점이 있습니다. Pr..
-
Kafka Consumer Lag 모니터링, Burrow를 알아보자 (2)개발하면서/코드보면서 2019. 8. 21. 01:09
이전 포스트에서 Burrow의 기본 구조와 Consumer group list 관리가 어떻게 되고 있는지 알아보았습니다. 이번에는 Burrow의 모듈 중 storage, evaluator를 알아보겠습니다. storage는 Burrow에서 수집하는 데이터(Topic/Consumer 정보) 저장/조회 역할을 담당하고 있습니다. evaluator는 Consumer Offset/Lag을 지켜보면서 Consumer Group의 상태를 판단하는 역할을 합니다. Topic/Partition 상태를 판단해서 가장 안 좋은(?) 상태가 Consumer Group의 상태가 됩니다. storage storage는 카프카의 topic, offset, consumer offset 정보를 저장/조회 역할을 하는 모듈입니다. Bu..
-
Kafka Consumer Lag 모니터링, Burrow를 알아보자 (1)개발하면서/코드보면서 2019. 5. 28. 09:34
카프카 모니터링을 적용 하다보면 브로커는 JMX만으로 충분하지만 Producer나 Consumer는 까다롭습니다. https://docs.confluent.io/current/kafka/monitoring.html#server-metrics Monitoring Kafka — Confluent Platform Version 5.2.1 Docs Administer » Kafka Operations » Monitoring Kafka View page source Monitoring Kafka Apache Kafka® brokers and clients report many internal metrics. JMX is the default reporter, though you can add any pluggab..
-
QuickList개발하면서/코드보면서 2015. 2. 4. 22:53
2015년 1월 초에 unstable에 merge된 QuickList에 알아본다.https://matt.sh/redis-quicklist 에서 나온 얘기를 조금 하고 코드를 보자 Redis에 List 자료구조는 일반적인 Linked list와 메모리를 절약을 위한 Ziplist두개가 있다.포인터를 이용하여 리스트 구현한것과 배열을 이용하여 리스트를 구현한것이라고 생각하면 쉽다. list-max-ziplist-entries 512 list-max-ziplist-value 64 (노드 갯수가 512개 이상 || 저장하려는 값의 길이가 64 byte 초과)면 Linked list로 저장이 되고(노드 갯수가 512개 미만 && 저장하려는 값의 길이가 64 byte 이하)면 ziplist로 저장이 된다.재미진건 ..
-
Key notification개발하면서/코드보면서 2013. 2. 12. 23:42
이 기능은 2013년 1월달에 unstable로 merge되었습니다. https://github.com/antirez/redis/commit/4cdbce341ebff64d392a42011f4a9258f8aa834f#src 처음 시작할때는 2.6으로 했는데 하;;; 시간을 너무 끌었네요. 뭐든지 한번할때 왕창해야겠어요. 간단하게 말하면, 이 기능의 요지는 key가 추가/수정/삭제가 되었을때 이벤트를 잡아서 client한테 알려주는것입니다 슬기로운 antirez는 redis에 있는 기능을 이용해서 간단하게 구현을 했습니다. 이 글을 보시기전에 Pub/Sub을 보시고 오시면 더 좋겠습니다. key에 대해 이벤트(추가/수정/삭제)가 발생하면, 어떤키인지, 그리고 어떤 이벤트인지 두가지로 나뉩니다. 체널명을 __..