본문 바로가기

전체 글

(84)
카프카 파티션 정책에 관하여 kafka에 대한 자세한 설명은 생략하고, kafka와 파티션에 대한 이야기를 진행한다. 우선 kafka는 메시지 큐의 한 종류인 이벤트 브로커로서 기존 producer/consumer 구조에서는 각 애플리케이션들이 커넥션을 맺어야했지만, kafka를 사용하면 kafka에서 연결들을 관리해줘서 괜찮다. kafka에 있는 메시지 큐를 topic이라고 한다. 그리고 topic의 데이터가 너무 많아지는 경우가 있을 수 있기 때문에, partition이라는 개념이 있다. partition은 물리적인 저장단위로, topic은 1개 이상의 partition으로 저장된다. 그러면 여기에 생각해 볼 것이 있다. producer -> partition -> consumer로 구성되는데 partition, consumer..
Spring Native JVM 대신에 GraalVM을 사용하는 스프링이다. 왜 Native냐면 native image를 빌드의 결과로 생성한다 java 기반의 컴파일러와 vm을 구현 --- 1. polyglot 여러 언어 실행가능 2. 메모리 사용량이 JVM보다 적음 3. 실행시간이 훨씬 빠름 JVM은 .java파일을 .class파일로 변경하고, 그 후 운영체제별 JVM이 해당 운영체제에 맞는 기계어로 변경하여 실행한다. 하지만, graalVM은 .java파일을 바로 해당 운영체제에 맞는 기계어로 변경한다. 그래서 실행시간이 훨씬 빠르게 된다. 운영체제의 문제는 docker image로 만드는 것으로 해결된다. 항상 환경이 정해져있기 때문이다. 그러면 왜 JVM을 Graalvm으로 바꿔끼면 바로 spring을 사용할 수 있는 ..
HashTable과 HashMap의 일반적인 차이 HashTable의 코드 public synchronized int size() { return this.count; } public synchronized boolean isEmpty() { return this.count == 0; } public synchronized Enumeration keys() { return this.getEnumeration(0); } public synchronized Enumeration elements() { return this.getEnumeration(1); } synchronized -> thread-safe HashMap synchronized를 사용하지 않음 싱글 스레드 환경에서 더 효율적