-
Notifications
You must be signed in to change notification settings - Fork 1
[분산 메일 전송] 이하늘 미션 제출합니다. (리더 선출-브로드캐스팅 방식) #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
소중한 PR 감사합니다 😀 |
|
코멘트 늦어져도 괜찮습니다. 앵두랩이 아니면 이런 시도하기는 어려워요. 얼른 활성화되었으면 좋겠습니다. ㅎㅎ 제가 생각하는 핵심적인 4가지 논의 대상은 리더 선출, 팔로워 메시지 수집 기간, 브로드 캐스팅 방법, 리더 다운 상황 대책입니다. 추가적으로 이 논의를 이끌어나갈 망쵸의 아이디어가 있으면, 말씀 남겨주세요. ++ 여담으로, 메일 전송 문제가 해결되도 SMTP 측 처리량 문제를 해결해야해요. 실제 운영중인 SMTP는 초당 14건을 처리하기 때문에, 전 세계 80억 인구한테 메일 1건씩 전송하려면 18년이 걸려요. AWS 측에 초당 처리량 증가 요청을 계속해서 늘리다보면 한계에 도달할 수 있다고 생각해요. 한계에 도달한 경우, 직접 SMTP 서버를 구축해야하거나, 여러 클라우드 서비스를 동시에 사용하는 방식을 사용할 수 있습니다. 그러면, 이떄 각 SMTP 서버의 처리량을 고려한 로드 밸런싱을 직접 구현해야할 수도 있는데요. 미션으로 나오면 재밌을 것 같아서 말씀 드립니다. |
|
오래 기다리셨습니다~ 코드와 디스크립션을 읽고 최대한 이해하려 노력했어요! 그리고 아마도 거의 이해한 것 같아요. 우선, 이 코멘트에서는 위에 작성해주신 디스크립션과 코멘트를 읽고 든 생각을 공유할게요 😀 너무 늦어지는 것 같아서 지금까지 생각한 내용을 공유하는 것이고, 이후에 좀더 사고하다가 생각나는 아이디어가 있다면 추가 코멘트로 남길게요! 개요이 미션의 목표는 "메일 발송을 중복 없이 모든 사용자에게 안정적으로 전송한다"에요. 그리고 여러 서버 노드로 발송할 메일을 분배하는 해결책을 다루고 있어요. 메일을 분배하는 데에는 모듈러 연산을 사용하고 있고요! 모듈러 연산 방식에서 중요한
3가지 방식에 대한 생각3가지 방식 중에서는
리더 선출-브로드캐스팅 구현 방식의 문제에 생각
다음은 읽고 생각난 아이디어인데 의견이 궁금해요! [1] 메일 발송을 안정적이고 신속하게 하기 위해 필요한 노드 수를 X라고 가정하자.
구현한 방식에서 자세히 써보려 노력했는데, 그러지 못했다면 피드백 부탁드려요 🙇 읽으면서 이해하기 어려운 부분도 말씀해 주세요! 최대한 빨리 확인하고 답변할게요. ps. 개인 사정으로 코멘트가 늦은 점 미안합니다. 계속 아프기도 하고, 그로 인해 밀린 일을 처리하느라 늦게 되었어요... 참 쉽지 않은 1월이네요 :< |
기본적인 구현 아이디어는 모듈러 연산인데요. 모듈러 연산의 단점을 극복하기 위한 합리적인 대안이 존재하는지 고민하기 위해서 구현했어요.
생각과 방법을 아래에 간략하게 요약해둘게요.
맥락
server count,server index입니다.유동적으로 서버의 수가 변경되는 환경에서 환경 변수를 어떻게 관리하지?가 고민의 시작점입니다.구현 아이디어(리더선출-브로드캐스팅)
구현에 대한 문제
다른 대안
server count,server index를 저장한다. (관측자 방식)아무래도 이게 핵심
어떤 방식을 사용해도, 잘못된
server count,server index가 설정되는 일이 발생할 수 있습니다. 하지만, 적어도server index가 중복될 일이 없다면, 누락건에 대한 재전송은 가능하다고 생각합니다. 따라서, 제가 생각하기에는server index에 노드 간 중복이 없으면서, 전체 구독자 구간에서 누락이 발생할 케이스가 가장 작은 것이 좋은 대안의 기준이라고 생각합니다. (비슷하다면, 성능을 확인), 아 근데 subscribe_id가 UUID면 어쩌지..?