Maison > Questions et réponses > le corps du texte
Je ne connais pas grand-chose à la concurrence élevée. Comment dois-je gérer cela ? Existe-t-il des livres d'introduction à la haute simultanéité ?
漂亮男人2017-05-17 09:59:38
Utilisez directement une connexion longue TCP~ Les maisons intelligentes utilisent généralement les protocoles MQTT~~
Une connexion longue permet d'économiser trop de ressources que l'interrogation~
Elle peut toujours être implémentée dans une situation autonome. Bien sûr, compter la base de données est une autre affaire.
过去多啦不再A梦2017-05-17 09:59:38
Je souhaite tester votre compréhension de l'architecture distribuée ici. Cette question devrait porter sur votre compréhension de 服务发现
(service discovery)的认识。分布式就是把一个大型项目进行模块化拆分,然后各模块在做集群部署,前端有一个路由服务器来对到达的请求进行分发,把到达的请求路由到能够提供服务的服务端,而哪台服务器能够提供服务这就是服务发现
所要做的事情,而在集群环境下能够提供相等服务的服务器肯定不止一台,那到底该由那台服务器对用户的请求进行处理并响应呢?这就又引出了负载均衡
,由负载均衡层通过特定的算法来判断应该由那台服务器提供服务,目的就是均匀的把请求分发给各个服务端。服务发现可以了解下Apache的zookeeper
或者Netflix的Eureka
。微服务这块spring cloud
提供了全套的解决方案,还有阿里的dubbo
習慣沉默2017-05-17 09:59:38
J'ai une solution simple
Installez un processus agent pour l'appareil. Le processus est démarré au démarrage de l'appareil, puis le processus signale régulièrement l'état de l'appareil au serveur si aucun rapport n'est effectué après une certaine période, l'appareil. est considéré comme hors ligne
PHP中文网2017-05-17 09:59:38
Haute concurrence, communication asynchrone. mots java. . . Netty classique ?
À mon avis, selon les performances actuelles d'une seule machine, une seule machine peut prendre en charge 100 000 opérations simultanées. Le traitement distribué n'est pas une option nécessaire. Bien sûr, si vous incluez le stockage de base de données, ce sera une autre affaire.
phpcn_u15822017-05-17 09:59:38
Si les connexions longues ne sont pas prises en compte, il existe une idée d'utiliser redis pour définir un indicateur en ligne pour chaque appareil et définir une heure de validité. Le client actualise l'heure de validité à chaque fois qu'il fait une demande de liaison montante et compte le nombre de redis en ligne. statut des appareils à chaque fois. La clé ici est de savoir comment déterminer la durée de cette période, car j'ai toujours travaillé sur le backend. Je ne sais pas combien de temps le client peut rester en ligne lorsqu'il est inactif. ?
黄舟2017-05-17 09:59:38
Si c'était moi, je ferais ceci :
Créer une nouvelle table mémoire MySQL (ENGINE=MEMORY) :
online(user_id, update_time)
Utilisez update_time pour enregistrer la dernière heure d'accès de l'utilisateur.
Par exemple, vous pouvez supposer que tous les utilisateurs dans les 5 minutes penseront en ligne.
習慣沉默2017-05-17 09:59:38
Il peut être implémenté en couches. Par exemple, par exemple, 100 000 machines signalent leur état à 10 machines respectivement. Comment 100 000 machines correspondent-elles à 10 machines ? Vous pouvez utiliser le mappage de hachage, puis ces 10 machines signaleront les machines défectueuses. Signalez la situation à un hôte fixe, ce qui signifie approximativement 10w-->10-->1. L'exemple ci-dessus peut avoir un point de défaillance unique, qui peut être résolu en modifiant le nombre de machines de couche supérieure
.