Ingénieur Internet Java Connaissances avancées Alphabétisation complète
La majeure partie du contenu de ce projet provient du chinois Hushan et les droits d'auteur appartiennent à l'auteur. Le contenu couvre les connaissances dans les domaines de la haute concurrence, de la distribution, de la haute disponibilité, des microservices et du traitement massif des données. Nous avons systématiquement organisé cette partie du savoir pour faciliter l'apprentissage et la référence des lecteurs.
Nous travaillons également dur pour mettre à jour le projet d'algorithme ! Si vous vous préparez à des algorithmes d'entretien écrit ou si vous souhaitez améliorer davantage vos compétences en codage, vous êtes les bienvenus sur Star et suivez doocs/leetcode
Avant d'étudier ce projet, regardons ce qu'ont dit les enquêteurs techniques du forum Discussions. Ce projet invite tous les amis développeurs à partager certaines de leurs idées et expériences pratiques dans le forum Discussions. Vous souhaiterez peut-être également suivre doocs/advanced-java avec Star pour suivre les derniers développements du projet.
Architecture à haute concurrence
file d'attente des messages
- Pourquoi utiliser la file d'attente des messages ? Quels sont les avantages et les inconvénients des files d’attente de messages ? Quels sont les avantages et les inconvénients de Kafka, ActiveMQ, RabbitMQ et RocketMQ ?
- Comment assurer la haute disponibilité de la file d'attente des messages ?
- Comment s’assurer que les messages ne soient pas consommés à plusieurs reprises ? (Comment assurer l'idempotence de la consommation des messages)
- Comment assurer la transmission fiable des messages ? (Comment gérer le problème de la perte de messages)
- Comment garantir l’ordre des messages ?
- Comment résoudre les problèmes de retard et d’expiration de la file d’attente des messages ? Que faire lorsque la file d'attente des messages est pleine ? Des millions de messages sont en attente depuis plusieurs heures. Comment pouvons-nous les résoudre ?
- Si on vous demandait d’écrire une file d’attente de messages, comment concevriez-vous l’architecture ? Dites-moi vos pensées.
moteur de recherche
- Pouvez-vous expliquer le principe de l'architecture distribuée d'ES (comment ES réalise-t-il la distribution) ?
- Comment fonctionne ES écrire des données ? Comment fonctionnent les données de requête ES ? Pouvez-vous présenter le Lucene sous-jacent ? Connaissez-vous l'index inversé ?
- Comment ES peut-il améliorer l'efficacité des requêtes lorsque la quantité de données est importante (des milliards de niveaux) ?
- Quelle est l’architecture de déploiement du cluster de production ES ? Quelle quantité de données environ contient chaque index ? Environ combien de fragments y a-t-il par index ?
cache
- Comment la mise en cache est-elle utilisée dans le projet ? Quelles sont les conséquences de la mise en cache si elle est mal utilisée ?
- Quelle est la différence entre Redis et Memcached ? Quel est le modèle de thread de Redis ? Pourquoi Redis monothread est-il beaucoup plus efficace que Memcached multithread ?
- De quels types de données dispose Redis ? Dans quels scénarios est-il plus approprié de l’utiliser ?
- Quelles sont les stratégies d’expiration de Redis ? Pouvez-vous écrire le code LRU à la main ?
- Comment garantir une simultanéité élevée et une haute disponibilité de Redis ? Pouvez-vous présenter le principe de réplication maître-esclave de Redis ? Pouvez-vous présenter le principe sentinelle de Redis ?
- Quelle est l’architecture maître-esclave de Redis ?
- Comment Redis Sentinel Cluster atteint-il la haute disponibilité ?
- Quelles sont les méthodes de persistance de Redis ? Quels sont les avantages et les inconvénients des différents mécanismes de persistance ? Comment le mécanisme de persistance sous-jacent est-il mis en œuvre ?
- Pouvez-vous expliquer comment fonctionne le mode cluster Redis ? En mode cluster, comment les clés Redis sont-elles adressées ? Quels sont les algorithmes d’adressage distribué ? Comprenez-vous l’algorithme de hachage cohérent ? Comment ajouter et supprimer dynamiquement un nœud ?
- Comprendre ce qu'est l'avalanche, la pénétration et la panne Redis ? Que se passe-t-il après le crash de Redis ? Comment le système doit-il gérer cette situation ? Comment gérer la pénétration de Redis ?
- Comment assurer la cohérence des doubles écritures entre le cache et la base de données ?
- Quel est le problème de conflit de concurrence dans Redis ? Comment résoudre ce problème ? Connaissez-vous la solution CAS pour les transactions Redis ?
- Comment Redis est-il déployé dans l’environnement de production ?
- Avez-vous déjà compris le processus de refonte de Redis ?
Sous-base de données et sous-table
- Pourquoi devrions-nous diviser les bases de données et les tables (lors de la conception d'un système à haute concurrence, comment concevoir le niveau de la base de données) ? Quel middleware de partage de bases de données et de tables avez-vous utilisé ? Quels sont les avantages et les inconvénients des différents middlewares de sous-bases de données et de sous-tables ? Comment diviser la base de données verticalement ou horizontalement ?
- Actuellement, il existe un système qui n'est pas divisé en bases de données et tables. À l'avenir, il sera divisé en bases de données et tables. Comment le concevoir pour que le système puisse passer dynamiquement de bases de données et de tables non divisées à des bases de données et de tables divisées ?
- Comment concevoir une sous-base de données et un schéma de table qui peuvent s'étendre et se réduire de manière dynamique ?
- Une fois la base de données divisée en tables, comment gérer la clé primaire id ?
Séparation en lecture et en écriture
- Comment réaliser la séparation de la lecture et de l'écriture dans MySQL ? Quel est le principe de la réplication maître-esclave MySQL ? Comment résoudre le problème de retard de la synchronisation maître-esclave MySQL ?
Système à haute concurrence
- Comment concevoir un système à haute concurrence ?
système distribué
Interview bombardement en série
Division du système
- Pourquoi le système s'est-il divisé ? Comment effectuer un fractionnement du système ? Est-il acceptable de ne pas utiliser Dubbo après le fractionnement ?
Cadre de services distribués
- Dites-moi comment fonctionne Dubbo ? La communication peut-elle continuer si le centre d’inscription est en panne ?
- Quels protocoles de sérialisation Dubbo prend-il en charge ? Parlez-moi de la structure des données de Hessian ? Est-ce que PB le sait ? Pourquoi le PB est-il le plus efficace ?
- Quelles sont les stratégies d'équilibrage de charge et les stratégies de tolérance aux pannes de cluster de Dubbo ? Qu’en est-il des stratégies de proxy dynamique ?
- Quelle est l'idée de Dubbo ?
- Comment effectuer la gouvernance des services, la dégradation des services, les nouvelles tentatives d'échec et les nouvelles tentatives d'expiration basées sur Dubbo ?
- Comment concevoir l’idempotence des interfaces de services distribués (par exemple, pas de déductions répétées) ?
- Comment garantir l'ordre des requêtes d'interface de service distribuée ?
- Comment concevoir vous-même un framework RPC similaire à Dubbo ?
- Qu'est-ce que P du théorème CAP ?
Verrouillage distribué
- Quels sont les scénarios d’application de Zookeeper ?
- Comment concevoir des verrous distribués avec Redis ? Est-il possible d'utiliser Zookeeper pour concevoir des verrous distribués ? Laquelle des deux méthodes de mise en œuvre du verrouillage distribué ci-dessus est la plus efficace ?
Transactions distribuées
- Comprenez-vous les transactions distribuées ? Comment résolvez-vous le problème des transactions distribuées ? TCC Que dois-je faire si le réseau ne parvient pas à se connecter ? Comment assurer la cohérence de XA ?
séance distribuée
- Comment implémenter une session distribuée lors du déploiement du cluster ?
Architecture hautement disponible
- Introduction à Hystrix
- Architecture du système de la page de détails du site Web de commerce électronique
- La technologie de pool de threads Hystrix implémente l’isolation des ressources
- Le mécanisme de sémaphore Hystrix implémente l'isolation des ressources
- Contrôle précis des politiques d’isolation Hystrix
- Plongée en profondeur dans les composants internes de l'exécution d'Hystrix
- Optimiser l'interface de requête de données de produits par lots en fonction de la technologie de mise en cache des demandes de cache de requêtes
- Mécanisme de dégradation de repli basé sur le cache local
- Examen approfondi des principes de fonctionnement des disjoncteurs Hystrix
- Plongée en profondeur dans l'isolation du pool de threads Hystrix et la limitation du courant d'interface
- Fournit une protection de sécurité pour le délai d'expiration des appels de l'interface de service en fonction du mécanisme de délai d'attente.
Système hautement disponible
- Comment concevoir un système hautement disponible ?
Limitation de courant
- Comment limiter le flux ? Comment faites-vous au travail ? Parlez-moi de la mise en œuvre spécifique ?
fusible
- Comment réaliser un disjoncteur ?
- Quels sont les frameworks fusibles ? Connaissez-vous le principe spécifique de mise en œuvre ?
- Comment faire la sélection technique du cadre de fusible ? Sentinelle ou Hystrix ?
Rétrograder
Architecture des microservices
- Le chapitre entier sur l'architecture des microservices est un ajout supplémentaire et sera mis à jour ultérieurement. Les lecteurs sont également invités à participer à des améliorations supplémentaires.
- Description de l'architecture des microservices
- Migrer d'une architecture monolithique vers une architecture de microservices
- Gestion des données basée sur les événements pour les microservices
- Choisissez une stratégie de déploiement de microservices
- Avantages et inconvénients de l'architecture des microservices
Architecture de microservices Spring Cloud
- Que sont les microservices ? Comment les microservices communiquent-ils de manière indépendante ?
- Quelles sont les différences entre Spring Cloud et Dubbo ?
- Spring Boot et Spring Cloud, parlez-vous de votre compréhension ?
- Qu'est-ce qu'un disjoncteur de service ? Qu’est-ce que le déclassement du service ?
- Quels sont les avantages et les inconvénients des microservices ? Parlez-nous des pièges que vous avez rencontrés lors du développement du projet ?
- Quelles piles technologiques de microservices connaissez-vous ?
- Stratégie de gouvernance des microservices
- Eureka et Zookeeper peuvent tous deux fournir des fonctions d'enregistrement et de découverte de services. Quelle est la différence entre eux ?
- Parlons du processus d'appel principal du composant de découverte de services Eureka ?
- ...
Traitement massif de données
- Comment retrouver la même URL parmi un grand nombre d’URL ?
- Comment trouver des mots fréquents à partir de grandes quantités de données ?
- Comment connaître l'adresse IP qui visite le plus le site Web de Baidu un certain jour ?
- Comment trouver des entiers uniques dans une grande quantité de données ?
- Comment déterminer si un nombre existe dans une grande quantité de données ?
- Comment interroger les chaînes de requête les plus populaires ?
- Comment compter le nombre de numéros de téléphone différents ?
- Comment trouver la médiane à partir de 500 millions de nombres ?
- Comment trier par fréquence de requête ?
- Comment trouver les 500 premiers numéros ?
- Parlez-moi des routines courantes pour les problèmes TopK dans le Big Data ?
Tendances des étoiles
Remarque : Ce graphique de tendance est automatiquement actualisé régulièrement par actions-starcharts, auteur @MaoLongLong
Projets de qualité communautaire Doocs
La communauté technologique Doocs s'engage à créer un écosystème d'apprentissage complet et en croissance continue pour les développeurs Internet ! Voici quelques excellents projets sous Doocs. Les amis développeurs sont invités à continuer à y prêter attention.
# | projet | décrire | chaleur |
---|
1 | Java avancé | Les ingénieurs Internet Java maîtrisent parfaitement les connaissances avancées : couvrant des connaissances dans des domaines tels que la haute concurrence, la distribution, la haute disponibilité, les microservices et le traitement massif de données. |
|
2 | code leet | Une variété de langages de programmation implémentent les solutions aux problèmes LeetCode, "Sword Pointer Offer (2e édition)", "Programmer Interview Code (6e édition)". |
|
3 | chasseur de code source | Analyse du code source des frameworks de composants Internet courants. |
|
4 | jvm | Synthèse des connaissances sur les principes sous-jacents de la machine virtuelle Java. |
|
5 | entretien de codage | Une collection de questions d'entretien de codage, notamment « Les points d'épée à offrir », « La beauté de la programmation », etc. |
|
6 | Maryland | Un éditeur WeChat Markdown très concis. |
|
7 | livres-techniques | Une liste de livres techniques à lire. |
|
Donateur
Merci à tous les amis suivants pour leurs contributions à la communauté technique Doocs. Veuillez cliquer ici pour participer à la maintenance du projet.
Compte officiel
Le seul compte public " Doocs " de la communauté technologique Doocs, bienvenue pour scanner le code QR à suivre, en vous concentrant sur le partage des connaissances pertinentes dans le domaine technique et des dernières informations de l'industrie . Bien entendu, vous pouvez également ajouter mon compte WeChat personnel (ndlr : GitHub) pour vous intégrer au groupe d'échange technique.
Suivez le compte public " Doocs " et répondez au PDF pour obtenir le document PDF hors ligne de ce projet (283 pages d'essence), ce qui rend l'apprentissage plus pratique !