SearchDeveloper (82) 썸네일형 리스트형 [Webflux] nested flatMap 지옥 해결하기 상황아래 로직을 구현한 코드가 flatMap 안에 flatMap 이 포함되어 있다. 코드 라인이 길고 들여쓰기가 많아서 가독성이 그리 좋지 않아 보인다.1번 작업 실행1번 작업 결과가 0이면 에러 던지기1번 작업 결과 후처리 (prefix 변수에 저장)1번 결과 받아서 2번 작업 실행2번 작업 결과가 0이면 에러 던지기2번 결과 받아서 3번 작업 실행1번 작업 결과 + 2번 작업 결과 + 3번 작업 결과 더해서 반환※ 각 작업은 1초 잠든 후 숫자를 반환한다.public Mono nestedFlatMap() { AtomicReference prefix = new AtomicReference("Prefix"); return _1번_작업() .flatMap(fir.. 코사인 유사도 증명하기 문서 간의 유사도, 즉 벡터 간의 유사도를 구하기 위해 코사인 유사도를 많이 사용한다.코사인 유사도가 어떻게 이 수식이 나오게 되었는지 수학적으로 증명해보도록 한다.필자는 고등학교 이후로 거의 수학을 다시 볼 일이 없었기 때문에 왜 이런 공식이 이런 형태로 되어있는지 궁금하여 정리한 글이다.코사인 유사도두 개의 문서를 v, u 라는 벡터로 임베딩했을 때, 두 벡터의 코사인 값은 다음과 같다.$$cosθ = \frac{v⋅u}{∥v∥∥u∥}$$유사도 비교하기벡터 v 를 기준으로 v 와 u 가 비슷한지, v 와 w 가 비슷한지 cosθ 으로 판단해보자.고등학교 때 $cosθ = \frac{x}{r}$ 임을 배웠다.두 벡터는 비슷할수록 θ 가 작아진다. (점점 가까워지므로)θ 가 작을수록 cosθ는 점점 커진.. [Elasticsearch] action.auto_create_index 를 설정하자 색인 시 인덱스 자동 생성을 방지해줄 수 있는 action.auto_create_index 설정을 해보자최종 elasticsearch.ymldiscovery.type: single-nodebootstrap.memory_lock: trueaction.auto_create_index: ".watches,.triggered_watches,.watcher-history-*"xpack.ml.enabled: falsenetwork.host: 0.0.0.0 ES 7.1.11. elasticsearch.yml 에 action.auto_create_index=false 설정항상 컨네이너 삭제 후 재시작함(에러) 컨테이너 뜰 때 Caused by: java.lang.IllegalArgumentException: the [.. [5/5] Node-exporter → Consul → Promethus → Grafana 연동하기 이전 글에서 prometheus 까지 데이터 수집을 완료하였다. [4/5] Node-exporter → Consul → Promethus → Grafana 연동하기이전 글에서 prometheus 을 구축하였다. [2/5] Node-exporter → Consul → Promethus → Grafana 연동하기이전 글에서 node-exporter 를 구축하였다.이제 consul 을 구축해보자② Consul파이프라인을 구성할 때 consul 이elsboo.tistory.com이제 grafana 를 구축해보자⑤ Grafanadocker-compose.ymlversion: '3'services: grafana: image: grafana/grafana container_name: grafana .. [4/5] Node-exporter → Consul → Promethus → Grafana 연동하기 이전 글에서 prometheus 을 구축하였다. [2/5] Node-exporter → Consul → Promethus → Grafana 연동하기이전 글에서 node-exporter 를 구축하였다.이제 consul 을 구축해보자② Consul파이프라인을 구성할 때 consul 이 반드시 필요하지는 않다. 결국 prometheus 에서만 exporter 를 알면 되기 때문이다. 하지만 consuelsboo.tistory.com이제 consul 에 node-exporter 를 등록하면 prometheus 까지 잘 수집되는지 확인해보자④ node-exporter 등록node-exporter 용 json 설정파일을 생성 후 consul 의 register API를 호출하면 된다.curl --request PU.. [3/5] Node-exporter → Consul → Promethus → Grafana 연동하기 이전 글에서 consul 을 구축하였다. [2/5] Node-exporter → Consul → Promethus → Grafana 연동하기이전 글에서 node-exporter 를 구축하였다.이제 consul 을 구축해보자② Consul파이프라인을 구성할 때 consul 이 반드시 필요하지는 않다. 결국 prometheus 에서만 exporter 를 알면 되기 때문이다. 하지만 consuelsboo.tistory.com 이제 prometheus 를 구축해보자③ Prometheusprometheus 는 exporter 들을 한데로 모으는 깔때기 같은 역할이다. node-exporter 를 consul 을 통해 prometheus 에 등록할 수 있게 해보겠다.docker-compose.ymlversion: .. [2/5] Node-exporter → Consul → Promethus → Grafana 연동하기 이전 글에서 node-exporter 를 구축하였다. [1/5] Node-exporter → Consul → Promethus → Grafana 연동하기최종 결과: 시스템 정보를 그라파나 대시보드로 확인할 수 있다각종 데이터를 그라파나를 통해 대시보드로 편리하게 확인할 수 있다. cpu 사용량, 메모리 사용량 같은 시스템 정보를 그라파나로elsboo.tistory.com이제 consul 을 구축해보자② Consul파이프라인을 구성할 때 consul 이 반드시 필요하지는 않다. 결국 prometheus 에서만 exporter 를 알면 되기 때문이다. 하지만 consul 이 가지고 있는 큰 장점이 있다. 바로 서비스 디스커버리이다.서비스 디스커버리는 node-exporter 같은 서비스를 API 한 번 호출.. [1/5] Node-exporter → Consul → Promethus → Grafana 연동하기 최종 결과: 시스템 정보를 그라파나 대시보드로 확인할 수 있다각종 데이터를 그라파나를 통해 대시보드로 편리하게 확인할 수 있다. cpu 사용량, 메모리 사용량 같은 시스템 정보를 그라파나로 볼 수 있는 모니터링 파이프라인을 도커를 사용해 구축해보겠다.① Node-exporter각종 데이터를 모아주는 수집기를 exporter 혹은 agent라고 부른다. exporter의 종류는 mysql, elasticsearch 등 다양하게 수집할 수 있다. 나는 그 중에서 하드웨어와 OS 메트릭 등을 확인할 수 있는 node-exporter를 사용할 것이다.docker-compose.yml 구성은 공식 깃을 참고하였다.version: '3'services: node_exporter: image: quay.io/.. [아호코라식 (Aho-corasick) 알고리즘] 논문 이해하기 (3) - 성능 측정 이전 글에서는 아호코라식 알고리즘의 구조에 대해서 알아보았다.이번 글에서는 아호코라식과 엘라스틱서치(ES) 로 검색을 했을 때 성능 측정을 간단하게 해볼 것이다.결론색인 키워드: 5543 개검색 요청: 1000 개 아호코라식ES메모리 사용량5 mb2 mb색인 시간42 ms286 ms검색 시간7 ms2051 ms아호코라식이 압도적으로 빠르다. (색인시간은 약 6.8배, 검색시간은 약 293배 빠름)메모리 사용량은 아호코라식이 더 잡아먹는다. (ES 보다 2.5배)아호코라식은 색인시간이 검색시간보다 더 오래걸린다. (42 ms > 7 ms)ES는 검색시간이 색인시간보다 더 오래걸린다. (2051 ms > 286 ms)※ 검색 결과는 고려하지 않았다.자세한 이야기[색인 키워드] 한글로 이루어진 단어 5543 .. [ElasticSearch] update_by_query version_conflict_engine_exception & update 쿼리 비교 문제운영 중인 인덱스 문서를 update_by_query 로 실시간으로 업데이트하는 배치를 만들었다. 운영 환경에서 첫 테스트를 하는데 몇 초 지나더니 version_conflict_engine_exception 에러가 간헐적으로 발생하기 시작했다.해결update_by_query 를 bulk update 로 바꿨다.[기존]POST my_index/_update_by_query{ "query": {"term": {"_id": {"value": "1"}}}, "script": { "source": "ctx._source.updated_by_query = true", "lang": "painless" }} [변경후]POST _bulk{"update": {"_index": "my_index",.. 이전 1 2 3 4 ··· 9 다음