작성
·
154
1
선생님~! 해당 싱글톤 주의할점에서 싱글톤은 무상태로 유지해야한다고 하셨습니다. 때문에 강의에서 지역변수 userAprice 와 userBprice를 만들어서 처음에 입력된 userAprice에 입력된 값이 출력되도록 변경하셨는데, 이게 현재 user가 2명이어서 괜찮았지만 만약에 정말 1초마다 5만명씩 유저가 가격을 입력한다면, 지역변수를 순간적으로 5만개씩 만들어서 처리하는 건지, 아니면 다른 방법으로 해당 사항을 해결하는 건지 궁금합니다 !! (공유객체의 참조와 지역변수의 관계에 대하여 조금이해가 않되서 질문드립니다. ㅠㅠ)
답변 3
2
충푼히 잘 풀어주셔서 이해가 되었습니다^^
유저가 정말 천명/만명 늘어나도, 지역변수로 문제를 해결합니다^^
대신에 요청이 정말 많으면 한 서버가 모든 요청을 받아서 처리하기 힘들 수 있으니, 이때는 서버를 수십, 수백대로 분산해서 문제를 해결합니다.
감사합니다.
2
안녕하세요. Js Sound님
"강의에서 지역변수 userAprice 와 userBprice를 만들어서 처음에 입력된 userAprice에 입력된 값이 출력되도록 변경" 했다는 부분이 잘 이해가 되지 않습니다. 혹시 멤버변수를 말씀하시는지요?
예제를 풀어서 설명해주시면 좋겠습니다.
1
안녕하세요~ 선생님! 우선 답변 주셔서 감사합니다!! 저의 질문을 다시 한번 이야기 하자면
위의 이미지의 문제를 해결하기 위해서
아래와 같이 return 값을 인트로 넘겨준다고 말씀하셨습니다.
이후 강의에서 아래와 같이 각각 userAPrice와 userBPrice 공유되지 않는 지역변수를 만들어서 공유필드의 동시접근을 막았습니다. 로직은 이해가 되지만, 근데 이후 궁금증이 생겼습니다.
앞선 질문에서도 말씀드렸듯이, 예제의 경우 유저가 단 두명이기 때문에, 많은양의 코드를 수정하지 않고 무상태를 유지할 수 있어지만, 이게 유저수가 정말 천명 / 만명 이렇게 늘어나면 아래와 같은 지역변수 만으로는 해결하기 어려울 것 같다는 생각을 했습니다. 떄문에 유저수가 많아질 경우에는 공유필드의 무상태를 어떻게 유지하는지가 궁금합니다 ㅠㅠ ( 배열이나 리스트 또는 벡터형식으로 받는지... 아니면 잠깐 말씀해주신 멀티스레드를 구현해서 받는지 궁금합니다.) 제가 강의를 듣다가 놓친 부분이 있는거 같다고 하시면 그부분도 다시 들어볼 수 있도록 하겠습니다. ㅠㅠ