이렇게 스마트 전구를 작동시키려고 합니다. 현재는 웹페이지에서 작동시킨 후, http를 통해 데이터를 제출하고 데이터베이스에 저장합니다. 서버에 연결을 하게 되면 무한루프를 통해 데이터베이스에서 클라이언트로 데이터를 가져오고, 매 작업이 끝나면 sleep을 하게 되는데, 클라이언트가 10만개 정도 되면 초당 10만번씩 데이터베이스를 쿼리해야 하는데, 그래서 개선하고 싶습니다. 서버가 http 데이터를 수신하면 즉시 클라이언트에 제공되므로 데이터베이스에 저장할 필요가 없습니다.
世界只因有你2017-05-16 17:08:59
“websocket”을 사용해 보세요
또한 쿼리할 때마다 데이터베이스를 작동하는 것은 권장하지 않습니다. 이를 읽어 캐시에 넣을 수 있으며 각 쿼리에 대해 캐시에서 직접 읽을 수 있습니다. 그런 다음 다른 프로세스가 값의 변화를 모니터링하고 데이터베이스를 수정하는 동안 캐시를 업데이트합니다.
某草草2017-05-16 17:08:59
클라이언트가 많은데 왜 10만 번 읽어야 하나요? 클라이언트와 서버는 영구적으로 연결되어 있으며 매핑은 서버의 메모리에 저장됩니다.
으아아아http가 데이터베이스에 제출되고 저장되며, 서버는 무한 루프에서 데이터베이스 정보를 읽습니다. 클라이언트로 전송되는 경우 메시지에는 클라이언트의 client_id가 포함되어 있어야 합니다. 모든 클라이언트는 맵을 통과하여 보낼 수 있습니다. 데이터베이스를 읽는 횟수는 클라이언트 수가 아닌 메시지 수에만 관련됩니다.
위에서 언급한 데이터베이스는 redis 또는 nsq와 같은 메시지 대기열을 사용하여 구현할 수 있습니다. 서버는 동시 처리를 위해 여러 스레드 또는 코루틴을 열 수 있습니다. service 단말기가 충돌하면 데이터가 손실되지 않나요? 신뢰성은 보장할 수 없습니다.