À propos du projet
Ce projet est une base de connaissances destinée aux ingénieurs Java opérant sur Internet, dont le contenu provient principalement de Zhonghua Shikan et couvre cinq domaines essentiels : l'architecture haute concurrence, les systèmes distribués, l'architecture haute disponibilité, l'architecture microservices et le traitement de grandes masses de données.
En architecture haute concurrence, le projet explore en profondeur les files de messages (Kafka, ActiveMQ, RabbitMQ, RocketMQ : avantages/inconvénients, haute disponibilité, idempotence, transmission fiable), les moteurs de recherche (architecture distribuée d'Elasticsearch, principes de lecture/écriture, optimisation des requêtes à grande échelle et déploiement en production), la mise en cache (modèle thread de Redis, types de données, stratégies d'expiration, réplication maître-esclave, clusters sentinelles, mécanismes de persistance, modes cluster, problèmes de cascade, de percée et de blocage, consistance double écriture), le fractionnement des bases de données et tables (sélection de middleware, scaling dynamique, génération d'IDs globaux), la séparation lecture/écriture et la conception globale des systèmes haute concurrence.
La partie systèmes distribués traite du découpage des systèmes, du fonctionnement et des protocoles de sérialisation de Dubbo, de l'équilibrage de charge et de la tolérance aux pannes des clusters, de l'idée SPI, de la gouvernance et de la dégradation des services, de l'idempotence et de l'ordre des interfaces, de la conception des frameworks RPC, du théorème CAP, des verrous distribués (comparaison Redis/Zookeeper), des transactions distribuées et des sessions distribuées.
L'architecture haute disponibilité prend pour centre Hystrix, présentant l'isolation par pools de threads, les mécanismes de semaphore, la mise en cache des requêtes, la dégradation Fallback, le principe du circuit breaker, la limitation de débit et la protection contre les temps morts des interfaces, ainsi que les stratégies de limitation, de fusion (choix entre Sentinel et Hystrix) et de dégradation.
La partie microservices inclut la migration du monolithique vers les microservices, la gestion des données pilotée par événements, les stratégies de déploiement, les différences entre Spring Cloud et Dubbo, et la découverte de services Eureka.
Le traitement des données massives se concentre sur des exercices algorithmiques en contexte de très grandes données, tels que la recherche d'URL identiques, de mots fréquents, d'IP populaires, de médianes, de problèmes TopK, etc.
Le projet propose également un document PDF hors ligne (283 pages) et renvoie aux projets communautaires Doocs couvrant le leaderboard LeetCode, l'analyse de code source et les principes JVM.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.