TIL

2022/10/11 TIL

mayleaf 2022. 10. 12. 01:22

요새 취준이 삶에 끼어들면서 라이프사이클이 조금씩 어긋나고 있다. 다시 다잡아보고자 책읽기를 다시 라이프사이클에 넣어서 생활하려고 한다. 수영도 빠지지 말아야지.  이 글을 보고있는 미래의 내가 지금보다는 나은 고민을 하면 좋을 것 같다. 

k8s korea group online

오늘 밋업을 처음 들어가봤는데, 도커 컴포즈에서 RKE2로 마이그레이션한 이야기를 들을 수 있었다.

왜 RKE2로 옮기게 되었는지, 어떤 방식으로 운영하는지 같은 부분에 대해서 공유를 해주셔서 유의미한 시간을 보낼 수 있었다.

어서 쿠버네티스를 더 공부해서 위드유에서도 최종 발표전에 적용을 해볼 수 있으면 좋을 것 같다.

Lucene Index Reader and Index Writer

루씬 인 액션을 이어서 읽고 있다. 오늘은 인덱스 리더와 인덱스 라이터에 대한 내용이 기억에 남는다.

오늘 내용을 읽으면서 든 생각은 역시 CS는 어디에서든 사용되는군 이라는 생각이 들었다.

IndexReader

인덱스 reader의 경우 생성될때마다 세그먼트들을 다 읽기 때문에 매번 만들고 지우기보다는 보통 싱글톤으로 관리하는게 좋다는 부분과

reader에서도 글을 수정할 수가 있는데, 수정할 수 있게한 이유와 장단점에 대해서 배울 수 있었다. 가장 기본적으로 떠오를 수 있는 예시는 문서가 계속 추가되고 인덱스가 쌓여가는데, 이때 추가된 인덱스들을 읽기 위해서는 인덱스 정보를 불러와야하고, 이때 인덱스 정보를 불러올때 내부적으로 세그먼트들을 병합(merge)해야하기 때문이다.

 

IndexWriter

writer의 경우도 마찬가지로 관리가 되어야한다. 다만 이제 writer의 경우 멀티 쓰레드에서 접근할때 레이스컨디션이 발생할 수 있으므로 락을 걸어서 사용되어야한다.

이때 락을 걸어서 사용하는 것은 구현마다 다르게 사용할 수 있으므로 사용하려는 용도에 따라 다르게 구현될 수 있다. 주의해서 생각해야하는 부분은 락 공정성(Lock Fairness)가 있다. 락에 접근한 순서대로 writer나 reader에 접근하지 못한다면, 계속 접근하지 못한 기아쓰레드가 발생할 수 있다는 부분을 염두에 두어서 개발하면 좋을 것이다.

그리고 루씬을 로컬 파일 시스템에서 동작시킬때는 읽고 있는 파일을 수정하려고 할때 보통 운영체제에서 막아주는데, NFS위에 올렸을때는 그냥 바로 수정을 해버리기 때문에 현재 원하는 인덱스를 읽고 있는 인덱스 리더가 있다면 읽기가 멈출때까지 기다리도록 Reader단에서도 락을 걸어주는 것이 필요할 수 있다.

 

'TIL' 카테고리의 다른 글

2022/10/17 TIL  (0) 2022.10.18
2022/10/15 TIL  (0) 2022.10.17
2022/10/06 TIL  (0) 2022.10.07
2022/10/04 TIL  (0) 2022.10.06
2022/09/24 TIL  (0) 2022.09.25