Byte Hopping Java Service Call, 2021 Alibaba Tencent Express offer a été obtenu!

Programme Yuan Daiyu 2021-09-15 07:43:07
byte hopping java service alibaba


Puits de verrouillage distribué

Problèmes de concurrence élevée

Le problème suivant ne veut pas dire qu'il n'est pas facile de se produire dans des situations où la concurrence n'est pas élevée,C'est juste qu'il y a plus de chances que ça arrive dans un scénario de concurrence élevée.

Les problèmes de rendement découlent des deux aspects suivants::

**①Temps d'acquisition de la serrure.**Si Redlock Utilisé dans des scénarios de haute concurrence,Existe N - Oui. Master Noeud,Un par un.,Ça prendra beaucoup de temps.,Ce qui affecte le rendement.

C'est bon.,Il n'est pas difficile de trouver,L'acquisition d'une serrure à partir de plusieurs noeuds n'est pas une opération synchrone,Peut être asynchrone,Cela permet à plusieurs noeuds d'obtenir simultanément.

Même en parallèle,Il faut encore prévoir le temps d'acquisition de la serrure.,Verrouillage garanti TTL>Temps d'acquisition de la serrure+Temps de traitement des tâches.

**②Les ressources verrouillées sont trop grandes.**Le système de verrouillage lui - même sacrifierait la concurrence pour l'exactitude,Le sacrifice est proportionnel à la taille de la ressource,Vous pouvez envisager de diviser les ressources à ce stade.

Il y a deux façons de diviser:

**①Diviser les ressources verrouillées en segments à partir de l'entreprise,Verrouillage séparé de chaque section.**Par exemple,,J'a i plusieurs opérations à faire avec un marchand,Verrouillez ce marchand avant l'opération,À ce stade, je peux démonter plusieurs opérations en plusieurs étapes séparées et verrouiller,Améliorer la concurrence.

**②Avec l'idée d'un seau fendu,Diviser une ressource en plusieurs seaux,Un verrouillage a échoué. Essayez immédiatement le suivant..**Comme les scénarios de traitement des tâches par lots,À traiter 200w Tâches des commerçants,Pour accélérer le traitement,Avec plusieurs fils,Chaque thread récupère 100 Traitement des commerçants,Il faut le donner. 100 Verrouillage des commerçants.

Sans traitement,Il est difficile de s'assurer qu'il n'y a pas de chevauchement entre deux commerçants verrouillés en même temps,Vous pouvez maintenant appuyer sur une dimension.

Comme une étiquette,Seau séparé pour les commerçants,Puis une tâche traite un seau fendu,Après avoir traité ce sous - seau, nous traitons le Sous - seau suivant.,Réduire la concurrence.

**Problème de retry:**Qu'il s'agisse d'une simple mise en œuvre ou Redlock Réalisation,Il y a une logique de retry.

Si vous suivez directement l'algorithme ci - dessus,Oui, il y en aura plusieurs. Client Obtenir la même serrure presque en même temps,Et chaque Client Tous les noeuds sont verrouillés.,Mais il n'y en a pas. Client Obtenir l'état de la plupart des noeuds.

Les solutions sont également courantes,Décaler plusieurs noeuds lors de la retry,La façon de décaler est d'ajouter un temps aléatoire au temps de retry.Ça ne résoudra pas le problème.,Mais ça peut atténuer le problème.,L'essai en personne fonctionne.

Arrêt du noeud

Pour un seul Master Une scène où les noeuds ne sont pas persistants,Le temps d'arrêt est mort.,Cela doit être mis en œuvre pour soutenir les opérations en double,Faites votre propre puissance.Pour beaucoup Master Scènes,Par exemple, Redlock,Regardons une scène comme celle - ci.:

  • Supposons qu'il y ait 5 - Oui. Redis Node of:A、B、C、D、E,Pas de persistance.

  • Client1 De A、B、C Voilà.3 Les noeuds ont réussi à obtenir des serrures,Alors client1 Obtenir la serrure avec succès.

  • Noeud C Raccroche..

  • Client2 De C、D、E Obtenir la serrure avec succès,client2 Verrouillage réussi,Donc en même temps Client1 Et Client2 Verrouillage simultané,Redlock C'est foutu..

Comment résoudre?L'option la plus facile à imaginer est d'activer la persistance.La persistance peut faire durer tout Redis Les ordres,Mais cela aura un impact considérable sur la performance,Généralement non utilisé,Si ce n'est pas le cas,,Une petite partie des données doit être perdue pendant que le noeud est suspendu,Peut - être que notre serrure est là..

Une autre option est de retarder le démarrage.C'est un noeud qui a été réparé.,Ne pas rejoindre immédiatement,J'ai attendu un moment avant de me joindre à vous.,Le temps d'attente est supérieur au maximum de toutes les serrures au moment de l'arrêt TTL.

Mais cette solution ne résout toujours pas le problème.,Si, à l'étape précédente, 3 Moyenne B Et C C'est parti.,Il ne reste que A、D、E Trois noeuds,De D Et E J'ai réussi à obtenir la serrure.,Ça va mal tourner..

Alors ça ne peut qu'augmenter. Master Total des noeuds,Ça soulage le problème..Ajouter Master Les noeuds augmentent la stabilité,Mais ça augmente aussi les coûts.,Il faut trouver un équilibre entre les deux..

La tâche a été exécutée plus longtemps que la serrure TTL

Il y a eu des retards dans l'exécution des tâches sur la ligne de production plus tôt que prévu en raison de retards dans le réseau,Verrouillage expiré,Exécution par plusieurs threads.

C'est un problème pour toutes les serrures distribuées,Y compris sur la base Zookeeper Et DB Verrouillage distribué réalisé,C'est une serrure périmée et Client Je ne sais pas si la serrure est expirée..

Pendant que la serrure est allumée,D'habitude, on donne une serrure TTL,C'est pour éviter qu'après le verrouillage Client Temps d'arrêt,Le problème que la serrure ne peut pas être libérée.

Mais toutes ces poses posent le même problème,Il n'y a aucune garantie que Client Le temps d'exécution doit être inférieur à celui de la serrure TTL.

Bien que la plupart des programmeurs soient optimistes que cela ne peut pas se produire,Je pensais aussi,Jusqu'à ce qu'il soit frappé au visage par la réalité encore et encore.

Byte RunoutJavaLes mouvements sociaux,2021Année Ali Tencent Vite!offer Tout est là. !_Java

Martin Kleppmann J'ai aussi remis en question,En utilisant sa carte:

  • Client1 Obtenir la serrure.

  • Client1 Début de la Mission,Et c'est arrivé STW De GC,Le temps a dépassé l'expiration de la serrure.

  • Client2 Obtenir la serrure,Début de la Mission.

  • Client1 De GC Fin,Poursuivre la Mission,À ce moment - là. Client1 Et Client2 Ils pensent qu'ils ont la serrure,Ils s'occupent des tâches,Une erreur s'est produite.

Martin Kleppmann Par exemple: GC Exemples,Ce que j'ai rencontré, c'est la latence du réseau.Dans les deux cas,Il est indéniable que cette situation ne peut être évitée,Une fois là - Bas, c'est facile d'être confus.

Comment le résoudre??Une solution est de ne pas configurer TTL,Mais après avoir obtenu la serrure,Ajoutez un watchdog,watchdog Une tâche programmée,Renouvellement lorsque la serrure n'est pas libérée et qu'elle est sur le point d'expirer.

Enfin

Après tout, le travail a duré si longtemps ,À part le tour de Land Rover,J'ai interviewé beaucoup de grandes usines,Comme Ali.、Tu as faim?、Meituan、Ces entretiens n'ont pas tous été écrits dans cet article..Je vais organiser un entretien détaillé et quelques détails sur les questions que vous aimeriez savoir

Expérience de l'entrevue de groupe

Byte RunoutJavaLes mouvements sociaux,2021Année Ali Tencent Vite!offer Tout est là. !_Java_02
Octets d'expérience en entrevue
Byte RunoutJavaLes mouvements sociaux,2021Année Ali Tencent Vite!offer Tout est là. !_Java_03
Expérience de l'entrevue de débutants
Byte RunoutJavaLes mouvements sociaux,2021Année Ali Tencent Vite!offer Tout est là. !_Programmeur_04
Expérience de l'entrevue avec ant Gold
Byte RunoutJavaLes mouvements sociaux,2021Année Ali Tencent Vite!offer Tout est là. !_Programmeur_05
Vipshop interview experience
Byte RunoutJavaLes mouvements sociaux,2021Année Ali Tencent Vite!offer Tout est là. !_Arrière - plan_06

En raison de l'espace limité,Le texte ne peut pas être publié en détail

 CodeChinaProjet Open Source:【Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Résumé de base notes d'étude+Dernière vidéo d'explication】

版权声明
本文为[Programme Yuan Daiyu]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915073756757y.html

  1. 国内一线互联网公司面试题汇总,2021年大厂Java岗面试必问,
  2. 啃完吃透保你涨薪5K,熬夜整理小米Java面试题,
  3. 和字节跳动大佬的技术面谈,Redis成神之路电子版教程已问世,
  4. Le terme professionnel le plus complet de l'histoire des micro - services interview 50 questions, Byte Jumping Java post Classic interview vrai problème,
  5. After using mybatisplus, I haven't written SQL for a long time
  6. [springboot2 starts from 0] how to write a springboot application?
  7. Huawei cloud guassdb (for redis) released a new version, and the two core features were officially unveiled
  8. 和字節跳動大佬的技術面談,Redis成神之路電子版教程已問世,
  9. 啃完吃透保你漲薪5K,熬夜整理小米Java面試題,
  10. Avec l'interview technique du gigolo, le tutoriel électronique redis est sorti.
  11. Après avoir mangé, assurez - vous d'augmenter votre salaire de 5K et de rester debout tard pour trier les questions d'entrevue Java de millet.
  12. Résumé des questions d'entrevue pour les entreprises Internet nationales de première ligne, qui doivent être posées lors de l'entrevue d'emploi Java de la grande usine en 2021,
  13. Le tri des crachats de sang, la force de l'équipe Tencent pour créer le tutoriel d'introduction au printemps,
  14. Java and scala concurrency Fundamentals
  15. Analysis of java thread source code based on Hotspot
  16. 國內一線互聯網公司面試題匯總,2021年大廠Java崗面試必問,
  17. Introduction au module de contrôle de Connexion MySQL
  18. 大厂高级测试面试题,Java面试基础技能罗列,
  19. Comprendre l'architecture sous - jacente d'InnoDB en exécutant une instruction
  20. Chargeur de classe 1 Tomcat
  21. 小白也能看懂的dubbo3应用级服务发现详解
  22. SpringBoot异步使用@Async原理及线程池配置
  23. Questions d'entrevue de test avancé de Dachang, liste des compétences de base de l'entrevue Java,
  24. SpringBoot异步使用@Async原理及線程池配置
  25. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  26. Détails de la découverte du Service d'application Dubbo 3 que Xiaobai peut également comprendre
  27. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  28. 如何强大且优雅的搞定Linux文件系统,算法题 JVM,
  29. 太牛了,阿里P7架构师带你看透maven的来龙去脉,
  30. Oracle central et Oracle décentralisé
  31. java JavaBean
  32. Java wrapper type
  33. Java super keyword
  34. Java static keyword
  35. Java this keyword
  36. Java interface
  37. 太牛了,阿裏P7架構師帶你看透maven的來龍去脈,
  38. C'est génial, l'architecte Ali p7 vous montre à travers Maven.
  39. Comment traiter le système de fichiers Linux avec puissance et élégance, algorithme JVM,
  40. Java + SSM Social Insurance Pension System for Computer Graduation Design
  41. Usage of Java scanner
  42. Java inheritance
  43. Java method review
  44. java JVM
  45. Java Basics
  46. Java file operation object IO stream
  47. Java console reads multi character input and output
  48. Java simple array sorting
  49. In addition to MySQL master-slave, you have another choice, Galera
  50. Configuration standard dockerfile et docker-composer.yml
  51. 字节大神强推千页PDF学习笔记,2021Java开发学习路线,
  52. 字节大牛耗时八个月又一力作,靠这份Java知识点PDF成功跳槽,
  53. 字节大牛教你手撕Java学习,最新大厂程序员进阶宝典,
  54. Comment l'automne est - il beau?Ces 24 ensembles de modèles d'automne et d'hiver sont grands, minces et vieillissants
  55. 字節大牛教你手撕Java學習,最新大廠程序員進階寶典,
  56. 字節大牛耗時八個月又一力作,靠這份Java知識點PDF成功跳槽,
  57. Byte Bull vous apprend à déchiqueter Java à la main, le dernier dictionnaire avancé des programmeurs de grandes usines,
  58. Byte Bull a pris huit mois à travailler dur et a réussi à changer d'emploi avec ce PDF Java Knowledge point.
  59. Byte God Push 1000 pages PDF Learning notes, 2021 Java Development Learning route,
  60. Five minutes to understand MySQL index push down