테스트 목적으로 AWS의 X 번호 ec2 인스턴스 (JXCore, Java 또는 Erlang을 사용하는 node.js로 계속 결정)에 10 백만 이상의 동시 소켓 연결이 포함될 소켓 서버를 만들고 싶습니다. 이 소켓들은 10 초마다 다른 소켓으로 메시지를 무작위로 보낼 것입니다. 나는이 소켓을 효과적으로 저장하고 읽을 수있는 방법을 이해하는 데 어려움을 겪고 있습니다.소켓을 많이 보관하는 가장 좋은 방법은 무엇입니까?
내가 볼 수있는 두 가지 옵션은 응용 프로그램 자체에 맵과 같은 소켓 객체를 저장하거나 소켓을 Redis와 같은 빠른 데이터베이스에 저장하는 것입니다. 응용 프로그램 내부의 데이터 구조에 소켓을 저장하는 문제는 크기를 조정하고 견고하며 수백만 소켓이 서로를 찾아야 할 때 읽기 성능이 어떻게 향상 될 것인지입니다. 그리고 redis와 같은 데이터베이스에 저장하면 Socket A가 소켓 B가 메시지를 보내고있는 위치를 알아야하기 때문에 매번 네트워크를 호출해야합니다. 이 두려움은 성능을 상당히 떨어 뜨릴 것입니다.
저는 인터넷에서이 질문에 답을 찾을 수 없으므로 확장 가능한 소켓 서버에 대한 모범 사례가 무엇인지 궁금합니다. 필자가 온라인으로 찾은 모든 소켓 서버는 특정 소켓을 보유하는 대신 다른 모든 소켓에 간단하게 브로드 캐스트하며 10 개의 소켓 만 포함합니다.
비 차단 IO 솔루션을 조사해야합니다. 아무 것도 당신이 원하는 소켓 연결의 수를 처리 할 것입니다. – spudone
비 차단 솔루션? 서버 팜을 조사해야합니다. –
그는 ec2 인스턴스에 대해 X가 무엇인지 말하지 않았지만 10mil 소켓을 처리하기에 충분한 양을 던지면 아마도 그가 원하는 해결책이 아닐 것입니다. – spudone