java - 면접 질문, 온라인 상태를 확인하려면 100,000개의 장치가 필요합니다. 어떤 기술을 사용해야 합니까?
大家讲道理
大家讲道理 2017-05-17 09:57:38
0
9
877

고동시성에 대해 잘 모르겠습니다. 어떻게 처리해야 하나요? 높은 동시성에 대한 입문서가 있나요?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(9)
漂亮男人

TCP 긴 연결을 직접 사용 ~ 스마트 홈에는 일반적으로 더 많은 MQTT 프로토콜이 있습니다 ~~
긴 연결은 폴링보다 너무 많은 리소스를 절약합니다 ~
물론 독립형 상황에서도 달성할 수 있습니다. , 계산 데이터베이스는 또 다른 이야기입니다.

过去多啦不再A梦

여기서 분산 아키텍처에 대한 이해를 테스트하고 싶습니다. 이 질문은 服务发现(service discovery)的认识。分布式就是把一个大型项目进行模块化拆分,然后各模块在做集群部署,前端有一个路由服务器来对到达的请求进行分发,把到达的请求路由到能够提供服务的服务端,而哪台服务器能够提供服务这就是服务发现所要做的事情,而在集群环境下能够提供相等服务的服务器肯定不止一台,那到底该由那台服务器对用户的请求进行处理并响应呢?这就又引出了负载均衡,由负载均衡层通过特定的算法来判断应该由那台服务器提供服务,目的就是均匀的把请求分发给各个服务端。服务发现可以了解下Apache的zookeeper或者Netflix的Eureka。微服务这块spring cloud提供了全套的解决方案,还有阿里的dubbo

에 대한 이해에 관한 것입니다.
大家讲道理

분산 세션 관리

習慣沉默

간단한 해결 방법이 있습니다
기기에 에이전트 프로세스를 설치합니다. 기기가 시작되면 프로세스가 시작되며, 일정 기간이 지나도 보고가 없으면 해당 프로세스는 기기 상태를 서버에 적극적으로 보고합니다. 오프라인으로 간주됩니다

洪涛

높은 동시성, 비동기 통신. 자바 단어. . . 클래식 네티?
개인적인 생각으로는 현재 단일 머신 성능으로 볼 때 100k 동시 단일 머신이 지원할 수는 있습니다. 물론, 데이터베이스 스토리지까지 포함한다면 그건 또 다른 문제겠죠.

phpcn_u1582

긴 연결을 고려하지 않는 경우 Redis를 사용하여 각 장치에 대한 온라인 플래그를 설정하고 유효한 시간을 설정하는 아이디어가 있습니다. 클라이언트는 업링크 요청을 할 때마다 유효한 시간을 새로 고치고 온라인 Redis 수를 계산합니다. 여기서 핵심은 클라이언트가 비활성 상태일 때 얼마나 오랫동안 온라인 상태를 유지할 수 있는지 모르기 때문에 이 시간의 길이를 결정하는 방법입니다. ?

伊谢尔伦

Redis에 데이터를 저장하면 db보다 액세스가 빠릅니다

黄舟

나라면 이렇게 할 것입니다:
새 MySQL 메모리 테이블 만들기(ENGINE=MEMORY):
online(user_id, update_time)
update_time을 사용하여 사용자의 가장 최근 액세스 시간을 기록합니다.
예를 들어 다음과 같이 가정할 수 있습니다. 5분 안에 모든 사용자는 온라인이라고 생각합니다.

習慣沉默

레이어로 구현될 수 있습니다. 예를 들어 100,000개의 머신이 각각 10개의 머신에 상태를 보고합니다. 해시 매핑을 사용하면 이 10개의 머신이 결함이 있는 머신을 보고할 수 있습니다. 대략 10w-->10-->1을 의미하는 고정 호스트에 상황을 보고합니다. 위의 예에는 단일 실패 지점이 있을 수 있으며 이는 상위 계층 시스템의 수를 변경하여 해결할 수 있습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿