quicoment / qc-mq-processing-server

qc-mq-processing-server
0 stars 0 forks source link

Snapshotting redis #11

Open sypark9646 opened 3 years ago

AMYMEME commented 3 years ago

DB에 스냅샷 저장한다는 이슈인거죠??

근데 서버(webflux)단에서 처리할 수 있으면(댓글 등록 시에 DB에 저장하고 redis에 저장할때 ttl을 주면) 필요없을 것 같기도 할 것 같은데.. 어떠신가요?

그치만 만약의 경우를 위해 스냅샷을 하는 건 좋은 것 같습니다 :)

sypark9646 commented 3 years ago

@AMYMEME

DB에 스냅샷 저장한다는 이슈인거죠??

네 맞습니다!!

근데 서버(webflux)단에서 처리할 수 있으면(댓글 등록 시에 DB에 저장하고 redis에 저장할때 ttl을 주면) 필요없을 것 같기도 할 것 같은데.. 어떠신가요?

  • 등록 DB에 저장 -> id 받아서 redis에 캐싱
  • 읽기 읽기 전 redis를 확인 -> 없으면 DB에서 읽어서 redis에 캐싱

좋습니다! 레디스를 Write Back 방식으로 사용할까 했었는데 Look aside Cache 로 사용해도 충분할 것 같네요

AMYMEME commented 3 years ago

근데 그러면 웹플럭스에서 rabbitMQ로 보내면golang 쪽에서 Mongo에 저장과 동시에 redis 에 저장해야할 것 같은데 다른 방법이 있을까요?

sypark9646 commented 3 years ago

생각해보니 저희 테스트하고자 하는 환경이 읽기연산이 많을 때인가요 아니면 쓰기연산이 많을 때일까요?? 쓰기 연산이 많은 경우에는 Write Back 방식으로, 읽기 연산이 많은 경우에는 Look aside Cache로 설계해야할 것 같아요

AMYMEME commented 3 years ago

실시간으로 댓글을 가져오니까 읽기 연산이 더 많은 환경인 것 같아요!

sypark9646 commented 3 years ago

근데 그러면 웹플럭스에서 rabbitMQ로 보내면 golang 쪽에서 Mongo에 저장과 동시에 redis 에 저장해야할 것 같은데 다른 방법이 있을까요?

앗 저희 디비는 mysql -> Mongo 로 바꾸는거죠?? rabbitMQ => Mongo & redis 에 동시에 저장하는게 이상해 보이긴 하네요..

음 갑자기 생각 정리가 안돼서,, 저희 하려고 하는게 아래 플로우가 맞는지 한 번만 확인부탁드려요! image

AMYMEME commented 3 years ago

네네 맞습니다! Db 에 넣은 직후 캐싱하는게 좀 어색하려나요??

sypark9646 commented 3 years ago

아 rabbitMQ => Mongo & redis 에 동시에 저장하되, redis 용량 때문에 만료시간은 두는거 맞죠?? 그럼 괜찮을 것 같아요! 혹시 만료 시간은 몇초로 두면 좋을까요??

sypark9646 commented 3 years ago

정리하자면 보라색이 webflux쪽에서 하는일, 초록색이 golang쪽에서 하는 일인 것 같은데 저도 얼른 webflux를 익혀봐야겠네요!! image

AMYMEME commented 3 years ago

넹 맞습니다!

AMYMEME commented 3 years ago

그래서 mongoDB 설계를 해야할 것 같아 이슈 띄우고 곧 올리겠습니다

sypark9646 commented 3 years ago

https://medium.com/jam2in/arcus%EC%97%90%EC%84%9C-%EC%A7%80%EC%86%8D-%EA%B0%80%EB%8A%A5%ED%95%9C-%EC%BA%90%EC%8B%B1-%EC%A0%81%EC%9A%A9-%EB%B0%A9%EC%95%88-bd4e27637bea

마침 이런 글이 있네요! 캐싱되지 않은 데이터를 동시에 많은 사용자가 요청할 경우에는 어떻게 되는지 궁금했는데 저희 프로젝트에 적용할 수 있을지는 더 생각해 보아야겠지만 읽어보면 좋을 것 같아요~