当前位置:网站首页>Problèmes rencontrés dans le développement de la GI pour maintenir le rythme cardiaque en vie
Problèmes rencontrés dans le développement de la GI pour maintenir le rythme cardiaque en vie
2022-07-01 16:03:00 【Wecloud1314】
AndroidPlusieurs implémentations du Service Push
Dans la vraie vie, Le Service Push est comme un abonnement à un magazine, Laissez votre adresse, Les magazines vous seront livrés comme prévu, On peut penser que tout le monde a une adresse unique, Mais sur le réseau actuel, C'est impossible, Parce que tout le monde n'a pas une adresse unique, Le serveur veut nous envoyer un message, Il faut connaître notre adresse, Mais le serveur ne sait pas où nous sommes.
Vote
Le client demande régulièrement au serveur s'il y a de nouveaux messages, De cette façon, le serveur n'a pas à se soucier de l'adresse du client, Le client demande, Dis - lui juste.
La solution la plus simple, Pour certains clients qui ne recherchent pas le temps réel, Parfait., Il suffit de régler l'intervalle de temps à quelques heures pour récupérer, Il est facile de résoudre le problème.
Mais pour les produits de messagerie instantanée, Ce genre de programme est totalement inutile. Supposons qu'un message envoyé par un logiciel de messagerie instantanée avec un réseau ouvert demande à l'autre partie10sJe peux le recevoir à l'intérieur, Si vous votez, Alors, le client doit être à chaque5sConnectez le serveur une fois, Si à l'extrémité mobile, La puissance et le trafic des téléphones portables seront bientôt épuisés.
SMSNotification
Ce scénario est possible à l'extrémité mobile, Demandez au client d'intercepter les SMS, Le serveur envoie un message spécial au numéro de téléphone de l'utilisateur en cas de nouveaux messages, Le client intercepte le message et le libère s'il découvre qu'il est normal. , S'il s'agit d'un SMS spécial, connectez - vous au serveur pour obtenir des messages. .
Les opérateurs ne coopéreront pas , Les utilisateurs ne seront pas rassurés , C'est un plan que les entreprises ordinaires ne peuvent pas se permettre. .
Longue connexion
C'est probablement la meilleure solution dans les circonstances actuelles. , Création active du client et du serveur TCP Après une longue connexion , Le client envoie périodiquement un paquet Heartbeat au serveur , Quand il y a des nouvelles, Le serveur passe directement par ce qui a été construit TCP Client de notification de connexion .
XMPP、MQTT Attendez que la technologie Push ne compte pas
Lors de la recherche d'informations sur Internet, Souvent vuXMPPMise en œuvre du ProtocoleAndroidPush andMQTTMise en œuvre du ProtocoleAndroidPush, Personnellement, je trouve ces deux affirmations étranges, XMPPEtMQTTLes deux sont des accords, Même si je ne sais pas exactement à quel niveau ces deux accords fonctionnent, Mais certainement au - dessus de la couche de transmission, Je suppose qu'ils sontTCP/IPCouche d'application du modèle à quatre niveaux, L'implémentation de la couche de transmission sans référence à l'ouverture fermée, Au lieu de tirer sur la couche d'application, Cette déclaration m'a vraiment intrigué, Je pense donc personnellementXMPP, MQTTAttendez, ce n'est pas une technique de poussée.
Pourquoi?TCP/IPC'est un modèle à quatre niveaux., Merci pour le commentaire, Ce qui correspond Couche d'application, Couche de transmission, Couche réseau, Couche d'interface réseau, On dit aussi que la couche interface réseau est divisée en deux couches, Il y a donc cinq niveaux, Parce queTCP/IPC'est un modèle de fait, Donc C'est normal de dire des choses différentes, Le courant dominant est quatre niveaux.
A propos de çaXMPP, Je pense que beaucoup de gens sont des référencesOpenfireEtSmackCe truc., J'ai essayé il y a un anaSmackEtOpenfireFais - le.IM, Mais à l'époque, je ne comprenais rien, Ce qui est fait est nul, La seule chose que je sais, c'est queOpenfireCe truc est assez vieux, Je vois qu'il y a des solutions Push open source qui ont été modifiées sur cette base, Pensez à cette charge de travail, C'est horrible.
Dis - le.TCPLongue connexion et battements de cœur
Le plan de connexion longue semble étrange au début, Qu'est - ce qu'une longue connexion? Battements de cœur programmés, Quelle est la différence avec un scrutin? Qu'est - ce que le cœur bat? Communiquer régulièrement avec le serveur, Pourquoi les longues connexions sont - elles meilleures que les sondages? Le téléphone dormaitTCPLa connexion ne va pas se rompre?
Qu'est - ce qu'une longue connexion
Commençons par les connexions courtes, Une connexion courte est une connexion établie lorsque les deux parties à la communication ont une interaction de données, Après la transmission des données,Déconnecter cette Connexion.
Une longue connexion, c'est quand tout le monde est connecté, Pas de déconnexion active. Les deux parties s'envoient des données, Ne pas déconnecter activement une fois la transmission terminée, Ensuite, il y a des données qui doivent être envoyées avant de continuer à envoyer par cette Connexion.
TCP Les connexions sont par défaut appelées connexions longues , C'est - à - dire qu'aucun des deux côtés de la connexion ne ferme activement la connexion, Cette connexion devrait toujours exister.
Mais la situation dans le réseau est complexe, Cette connexion peut être coupée. Par exemple, le lien client - serveur s'est rompu en raison d'une défaillance, Ou le serveur s'est arrêté, Ou peut - être qu'on t'a coupé le câble., Ce sont des facteurs inexplicables qui ont causé la déconnexion de la connexion, Il y a plusieurs autres.
NATTemps mort
Parce queIPv4Adresse insuffisante, Ou nous voulons accéder à Internet via un routeur sans fil, Notre appareil pourrait être dans unNATDerrière l'appareil, Le plus commun dans la vieNATL'appareil est un routeur domestique.
NATL'appareil seraIPModifier la source lorsque le paquet passe à travers le périphérique/ObjectifIPAdresse. Pour les routeurs domestiques, La conversion du port d'adresse réseau est utilisée(NAPT), Non seulement ça changeIP, Toujours modifiéTCPEtUDPNuméro de port du Protocole, Cela permet aux appareils de l'intranet de partager le même extranetIP. Par exemple,, NAPTMaintenir unNATTableau:
NATL'équipement sera basé surNATLe tableau modifie les données d'entrée et de sortie, Par exemple,192.168.0.3:8888Les paquets envoyés ont été changés en120.132.92.21:9202, L'extérieur pense qu'ils sont en contact avec120.132.92.21:9202Communications. En même tempsNATL'appareil va120.132.92.21:9202Le paquet reçuIPEt les ports sont changés en192.168.0.3:8888, Hôtes envoyés à l'Intranet, Pour que l'intérieur et l'extérieur puissent communiquer dans les deux sens, Mais si ça192.168.0.3:8888 == 120.132.92.21:9202Cette carte a été cartographiée pour une raison ou une autreNATL'équipement a été éliminé., Alors l'équipement externe ne peut pas directement192.168.0.3:8888Communication..
Nos appareils sont souvent situésNATDerrière l'appareil, Comme un réseau de campus à l'université, Vérifiez ce que vous avez assignéIP, En fait, c'est l'intranetIP, Ça veut dire qu'on estNATDerrière l'appareil, Si on prenait un autre routeur dans la chambre, Donc les paquets que nous envoyons passeront plus d'une foisNAT.
Les opérateurs nationaux de réseaux sans fil mobiles n'ont pas communiqué de données depuis un certain temps sur le lien, Sera éliminéNATCorrespondance dans le tableau, Cause une interruption de liaison.
Changement d'état du réseau
Les réseaux mobiles etWIFICommutation réseau, Déconnexion et connexion du réseau, etc., La connexion longue peut également être déconnectée. Il y a peut - être plus de raisons ici, Mais le résultat estIPÇa a changé., Ou être informé par le système que la connexion est rompue.
DHCPDurée du bail
Les tests actuels ont révélé que le système AndroidDHCPLe traitement deBug, DHCPLe bail ne sera pas renouvelé de façon proactive et continuera d'être utilisé jusqu'à l'expirationIP, Ce problème peut causerTCPDéconnexion accidentelle d'une longue connexion.
Effet du paquet cardiaque
Beaucoup d'articles en ligne sur les longues connexions disent:
Parce que c'est une longue connexion, Donc vous devez envoyer des paquets de battements de cœur régulièrement;
Le pack Heartbeat est utilisé pour informer le client serveur de l'état actuel.
La personne qui a fait ces déclarations est en fait à moitié consciente. Toutes ces affirmations sont vraies, Mais il n'a pas répondu au point. C'est comme si quelqu'un demandait: "Pourquoi tu vas à la cantine"? Cet homme a répondu: "Vérifiez si vous pouvez trouver la cantine.". Cette réponse n'est pas fausse, Mais en fait, cet homme est allé manger à la cantine, Prouver que je connais le chemin n'est qu'un cadeau.
Soyons clairs., TCPUne longue connexion n'a pas besoin d'un battement de cœur pour être maintenue, Vous pouvez essayer., Connectez les deux ordinateurs au mêmewifi, Et en faire un serveur, L'autre avec un réglage normal sansKeepAliveDeSocketConnexion au serveur, Deux ordinateurs, pas de déconnexion., N'éteignez pas non plus le routeur, DHCPRenouvellement normal, C'est comme ça que, Dans quelques heures, utilisez l'un des ordinateurs pour passer à traversTCPConnectez - vous à un autre pour envoyer un message, L'autre va sûrement recevoir.
Alors pourquoi avoir un battement de cœur?? En fait, c'est principalement pour éviter ce qui est mentionné ci - dessus. NATTemps mort, Maintenant que certainsNATL'équipement détermine s'il doit être éliminé ou nonNATLa base de la cartographie est qu'il n'y a pas de données pendant un certain temps, Le client envoie alors une donnée de sa propre initiative.
Bien sûr., Si ce n'est que pour prévenirNATTemps mort, Le serveur peut envoyer le paquet Heartbeat au client, Mais il y a un inconvénient., En cas de déconnexion, Le serveur ne peut plus contacter le client. Donc le paquet Heartbeat doit être envoyé par le client, Le client a trouvé la connexion cassée, Vous pouvez également essayer de reconnecter le serveur.
Donc le principal rôle du pack cardiaque est de prévenirNATTemps mort, Le deuxième est de savoir si la connexion est déconnectée..
Déconnexion du lien, Pas d'opération d'écritureTCPLa connexion n'est pas perçue, Sauf si les données sont envoyées au serveur à ce moment, Cause write timeout, SinonTCPLa connexion ne sait pas qu'elle est déconnectée. InitiativekillLe processus de perte d'un côté, L'autre côté va fermerTCPConnexion, Est envoyé au serveur par un processus systèmeFIN. TCPC'est la connexion, Seul un message clair de l'autre côté pour fermer la connexion(Bien reçu.RSTÇa s'éteindra aussi., Tout le monde sait), Ou se rendre compte qu'un délai d'écriture s'est produit, Sinon, il pense que la connexion existe toujours..
L'intervalle entre les battements de cœur
Puisque la fonction principale du pack cardiaque est de prévenirNATTemps mort, Il y a beaucoup d'articles sur cet intervalle..
Il faut d'abord réveiller l'appareil pour envoyer le potentiel de battement de cœur, Avant d'envoyer, Si le dispositif de réveil est trop fréquent, Ou l'appareil ne peut pas dormir directement, Il consomme beaucoup d'électricité, Et la communication réseau sous le réseau mobile, QuewifiÇa consomme beaucoup plus d'énergie. Donc l'intervalle entre les battements de cœur devrait être aussi long que possible, Idéalement, il n'y en a pas.NATTemps mort, Par exemple, les deux ensembles dont je viens de parler sont dans le mêmewifiSous l'ordinateur, Pas besoin de battements de cœur. C'est ce qu'on appelle une longue connexion. , Rythme cardiaque lent. Logiciel de chat de messagerie instantanée app Le développement peut être plus nuageux v:weikeyun24Consultation (s)
La réalité est cruelle., Selon certaines sources en ligne, Mouvement moyen2/3GEn bas., NATLe temps d'arrêt est5Minutes, China Telecom3GPlus grand que28Minutes, Idéalement, Le client doit être légèrement inférieur àNATL'intervalle entre les temps d'arrêt pour envoyer le paquet Heartbeat.
wifiEn bas., NATLes temps d'arrêt seront plus longs, On dit que les passerelles à large bande n'ont généralement pas de mécanisme de libération libre, GCMParfoiswifiLes battements de cœur en bas sont plus rapides que sur les réseaux mobiles, Peut - être parce quewifiLes communications hors réseau consomment moins d'électricité que les communications mobiles.
Comment le serveur gère les paquets Heartbeat
Si l'intervalle de battements cardiaques du client est fixe, Le serveur n'a pas reçu de battements de cœur avant que la connexion ne soit inactive, On peut penser que l'autre partie est hors ligne, Fermer la connexion. Si le rythme cardiaque du client change dynamiquement, Le programme de battements de cœur Wechat mentionné dans la section précédente, Une valeur maximale doit être fixée, Au - delà de ce maximum, l'autre partie est considérée comme déconnectée. Une autre situation est que le serveur passe parTCPLa connexion envoie activement un message au client avec un délai d'écriture, Vous pouvez penser directement que l'autre partie est hors ligne.
Cela nécessite une analyse spécifique de l'entreprise, Il y a peut - être une meilleure stratégie., C'est pas écrit ici..
La différence entre le paquet Heartbeat et le sondage
Les battements de cœur et les sondages ressemblent., Le client contacte activement le serveur, Mais c'est très différent:
Les sondages sont effectués pour obtenir des données, Et le cœur bat pour survivreTCPConnexion.
Plus les sondages sont fréquents , Plus les données sont disponibles à temps , Il n'y a pas de relation directe entre la fréquence des battements cardiaques et la rapidité des données.
Le sondage consomme plus d'énergie que le rythme cardiaque , Parce qu'un sondage doit passer TCPTrois poignées de main, Quatre fois., Un seul battement de cœur n'a pas besoin d'être établi et enlevé TCPConnexion.
TCPRéveillez - vous.Android
Je ne connais que la conclusion. , Ne pas connaître les connaissances spécifiques .
Avez - vous déjà pensé, La fonction SMS du téléphone est similaire à celle de Wechat , Pourquoi Wechat consomme - t - il autant d'énergie que les SMS? ? Bien sûr que non. 0.1Yuan. Comment les SMS sont - ils envoyés? ?
Ce passage d'origine inconnue peut vous éclairer. :
Tout d'abord,AndroidLe téléphone a deux processeurs, L'un s'appelleApplication Processor(AP), L'un s'appelleBaseband Processor(BP). AP- Oui.ARMProcesseur de schéma,Pour le fonctionnementAndroidSystème; BPPour faire fonctionner un système d'exploitation en temps réel(RTOS), La pile de Protocole de communication fonctionne surBPDeRTOSAu - dessus de. Pas de temps de parole, BPLa consommation d'énergie de5mAGauche et droite,EtAPTant qu'il n'est pas endormi, Consommation d'énergie au moins égale à50mACi - dessus, Plus haut lors de l'exécution des opérations graphiques. En plusLCDLa consommation d'énergie est de100mAGauche et droite, WIFI- Oui.100mAGauche et droite. Normalement, quand le téléphone est en attente, AP, LCD, WIFITout est en sommeil, À ce moment - là,AndroidLe Code de l'application s'arrête également.
AndroidPour assurer l'exécution correcte des codes clés dans la demande, OffreWake LockDeAPI, Donne à l'application la permission de bloquer par CodeAPEntrer dans l'état d'hibernation. Mais si vous ne comprenez pasAndroidL'intention du concepteur d'abuserWake Lock API, Pour le bon fonctionnement de son propre programme en arrière - plan pendant de longues périodesAPEntrer dans l'état d'hibernation, Ça va devenir un tueur de batterie en attente.
Pas besoin de s'inquiéter AP L'hibernation peut entraîner l'absence de messages push . La pile de Protocole de communication fonctionne surBP, Une fois le paquet reçu , BPOui.APRéveillez - vous., Assez de temps pour se réveiller AP Exécuter le Code pour compléter le traitement des paquets reçus . D'autres commeConnectivityLorsque l'événement est déclenchéAP Il se réveillera aussi . Alors le seul problème est comment le programme exécute la logique d'envoyer un paquet Heartbeat au serveur . Tu ne peux pas compter sur AP Pour faire un rythme cardiaque . AndroidFourniAlarm ManagerC'est pour résoudre ce problème.. AlarmJe crois.BPChronométrage( Ou une autre puce avec une horloge à quartz ,Pas sûr,Mais certainement pasAP), Réveillez - vous au déclenchement APCode du Programme d'exécution. AlorsWake Lock APIÀ quoi bon?? Par exemple, les paquets de battements cardiaques vont de la demande à la réponse , Le processus d'exécution de ces logiques clés, comme la déconnexion et la reconnexion , J'en ai besoin.Wake LockPour protéger. Et une fois qu'une logique clé a été exécutée avec succès, Il devrait être libéré immédiatement.Wake LockC'est. Deux battements de cœur demandent un intervalle5À10Minutes, Ça ne consomme pas beaucoup d'électricité. Sauf si le réseau est instable . Déconnexion fréquente et reconnexion , Il n'y a pas beaucoup de façons de faire ça .
En ligneAlarmManager,Parce queAlarmManager - Oui.Android Système encapsulé pour la gestion RTC Module,RTC (Real Time Clock) Est une horloge matérielle indépendante,Ça pourrait être dans CPU Fonctionnement normal pendant l'hibernation,À l'heure prévue,Réveillez - vous en interrompant CPU.
边栏推荐
- How does win11 set user permissions? Win11 method of setting user permissions
- 从 MLPerf 谈起:如何引领 AI 加速器的下一波浪潮
- Task.Run(), Task.Factory.StartNew() 和 New Task() 的行为不一致分析
- AVL balanced binary search tree
- What time do you get off work?!!!
- 最新NLP赛事实践总结!
- HR interview: the most common interview questions and technical answers
- 马来西亚《星报》:在WTO MC12 孙宇晨仍在坚持数字经济梦想
- 【LeetCode】43. String multiplication
- Advanced cross platform application development (24): uni app realizes file download and saving
猜你喜欢
Do280 management application deployment - pod scheduling control
What time do you get off work?!!!
She is the "HR of others" | ones character
【Hot100】17. 电话号码的字母组合
电脑照片尺寸如何调整成自己想要的
STM32F1与STM32CubeIDE编程实例-PWM驱动蜂鸣器生产旋律
Sales management system of lightweight enterprises based on PHP
[daily news]what happened to the corresponding author of latex
Zhou Shaojian, rare
Thinkphp内核工单系统源码商业开源版 多用户+多客服+短信+邮件通知
随机推荐
Microservice tracking SQL (support Gorm query tracking under isto control)
投稿开奖丨轻量应用服务器征文活动(5月)奖励公布
【LeetCode】43. String multiplication
ABAP-屏幕切换时,刷新上一个屏幕
Pico,能否拯救消费级VR?
There is a difference between u-standard contract and currency standard contract. Will u-standard contract explode
What time do you get off work?!!!
Summer Challenge harmonyos canvas realize clock
Solution to the problem that the keypad light does not light up when starting up
Deep operator overloading (2)
Trace the source of drugs and tamp the safety dike
软件测试的可持续发展,必须要学会敲代码?
【Hot100】17. 电话号码的字母组合
Tensorflow team: we haven't been abandoned
ATSS:自动选择样本,消除Anchor based和Anchor free物体检测方法之间的差别
Task.Run(), Task.Factory.StartNew() 和 New Task() 的行为不一致分析
In the past six months, it has been invested by five "giants", and this intelligent driving "dark horse" is sought after by capital
There will be a gap bug when the search box and button are zoomed
动作捕捉系统用于苹果采摘机器人
华为发布HCSP-Solution-5G Security人才认证,助力5G安全人才生态建设