# äºèç½ Java å·¥ç¨å¸è¿é¶ç¥è¯å®å ¨æ«ç² [](https://github.com/doocs/advanced-java/blob/master/LICENSE) [](https://github.com/doocs/advanced-java) [](https://github.com/doocs/advanced-java/stargazers) [](https://github.com/doocs/advanced-java/network/members) [](https://github.com/doocs/advanced-java/labels/help%20wanted) [](https://github.com/doocs/advanced-java/issues) [](http://makeapullrequest.com) æ¬ç³»åç¥è¯åºèªä¸åç³æï¼å 容涵ç[é«å¹¶å](#é«å¹¶åæ¶æ)ã[åå¸å¼](#åå¸å¼ç³»ç»)ã[é«å¯ç¨](#é«å¯ç¨æ¶æ)ã[å¾®æå¡](#å¾®æå¡æ¶æ)çé¢åç¥è¯ãæå¯¹è¿é¨åç¥è¯åäºä¸ä¸ª[ç³»ç»çæ´ç](https://github.com/doocs/advanced-java/issues/1)ï¼æ¹ä¾¿å¦ä¹ æ¥é ãé åã大åç½ç«ææ¯æ¶æââææºæ §ãé£ç¨ï¼[æææ´ä½³](https://doocs.github.io/advanced-java/#/offer)ã å¦ä¹ ä¹åï¼å æ¥çç [Issues 讨论åº](https://github.com/doocs/advanced-java/issues/9#issue-394275038)çææ¯é¢è¯å®æ¯æä¹è¯´çå§ã ## é«å¹¶åæ¶æ ### [æ¶æ¯éå](/docs/high-concurrency/mq-interview.md) - [为ä»ä¹ä½¿ç¨æ¶æ¯éåï¼æ¶æ¯éåæä»ä¹ä¼ç¹å缺ç¹ï¼KafkaãActiveMQãRabbitMQãRocketMQ 齿ä»ä¹ä¼ç¹å缺ç¹ï¼](/docs/high-concurrency/why-mq.md) - [å¦ä½ä¿è¯æ¶æ¯éåçé«å¯ç¨ï¼](/docs/high-concurrency/how-to-ensure-high-availability-of-message-queues.md) - [å¦ä½ä¿è¯æ¶æ¯ä¸è¢«é夿¶è´¹ï¼ï¼å¦ä½ä¿è¯æ¶æ¯æ¶è´¹çå¹çæ§ï¼](/docs/high-concurrency/how-to-ensure-that-messages-are-not-repeatedly-consumed.md) - [å¦ä½ä¿è¯æ¶æ¯çå¯é æ§ä¼ è¾ï¼ï¼å¦ä½å¤çæ¶æ¯ä¸¢å¤±çé®é¢ï¼](/docs/high-concurrency/how-to-ensure-the-reliable-transmission-of-messages.md) - [å¦ä½ä¿è¯æ¶æ¯çé¡ºåºæ§ï¼](/docs/high-concurrency/how-to-ensure-the-order-of-messages.md) - [å¦ä½è§£å³æ¶æ¯éåçå»¶æ¶ä»¥åè¿æå¤±æé®é¢ï¼æ¶æ¯éåæ»¡äºä»¥å该æä¹å¤çï¼æå ç¾ä¸æ¶æ¯æç»ç§¯åå å°æ¶ï¼è¯´è¯´æä¹è§£å³ï¼](/docs/high-concurrency/mq-time-delay-and-expired-failure.md) - [å¦æè®©ä½ åä¸ä¸ªæ¶æ¯éåï¼è¯¥å¦ä½è¿è¡æ¶æè®¾è®¡åï¼è¯´ä¸ä¸ä½ çæè·¯ã](/docs/high-concurrency/mq-design.md) ### [æç´¢å¼æ](/docs/high-concurrency/es-introduction.md) - [es çåå¸å¼æ¶æåçè½è¯´ä¸ä¸ä¹ï¼es æ¯å¦ä½å®ç°åå¸å¼çåï¼ï¼](/docs/high-concurrency/es-architecture.md) - [es åå ¥æ°æ®çå·¥ä½åçæ¯ä»ä¹åï¼es æ¥è¯¢æ°æ®çå·¥ä½åçæ¯ä»ä¹åï¼åºå±ç lucene ä»ç»ä¸ä¸åï¼åæç´¢å¼äºè§£åï¼](/docs/high-concurrency/es-write-query-search.md) - [es 卿°æ®éå¾å¤§çæ åµä¸ï¼æ°å亿级å«ï¼å¦ä½æé«æ¥è¯¢æçåï¼](/docs/high-concurrency/es-optimizing-query-performance.md) - [es ç产é群çé¨ç½²æ¶ææ¯ä»ä¹ï¼æ¯ä¸ªç´¢å¼çæ°æ®éå¤§æ¦æå¤å°ï¼æ¯ä¸ªç´¢å¼å¤§æ¦æå¤å°ä¸ªåçï¼](/docs/high-concurrency/es-production-cluster.md) ### ç¼å - [å¨é¡¹ç®ä¸ç¼åæ¯å¦ä½ä½¿ç¨çï¼ç¼åå¦æä½¿ç¨ä¸å½ä¼é æä»ä¹åæï¼](/docs/high-concurrency/why-cache.md) - [Redis å Memcached æä»ä¹åºå«ï¼Redis ççº¿ç¨æ¨¡åæ¯ä»ä¹ï¼ä¸ºä»ä¹å线ç¨ç Redis æ¯å¤çº¿ç¨ç Memcached æçè¦é«å¾å¤ï¼](/docs/high-concurrency/redis-single-thread-model.md) - [Redis 齿åªäºæ°æ®ç±»åï¼åå«å¨åªäºåºæ¯ä¸ä½¿ç¨æ¯è¾åéï¼](/docs/high-concurrency/redis-data-types.md) - [Redis çè¿æçç¥é½æåªäºï¼æåä¸ä¸ LRU 代ç å®ç°ï¼](/docs/high-concurrency/redis-expiration-policies-and-lru.md) - [å¦ä½ä¿è¯ Redis é«å¹¶åãé«å¯ç¨ï¼Redis ç主ä»å¤å¶åçè½ä»ç»ä¸ä¸ä¹ï¼Redis çå¨å µåçè½ä»ç»ä¸ä¸ä¹ï¼](/docs/high-concurrency/how-to-ensure-high-concurrency-and-high-availability-of-redis.md) - [Redis çæä¹ åæåªå ç§æ¹å¼ï¼ä¸åçæä¹ åæºå¶é½æä»ä¹ä¼ç¼ºç¹ï¼æä¹ åæºå¶å ·ä½åºå±æ¯å¦ä½å®ç°çï¼](/docs/high-concurrency/redis-persistence.md) - [Redis é群模å¼çå·¥ä½åçè½è¯´ä¸ä¸ä¹ï¼å¨é群模å¼ä¸ï¼Redis ç key æ¯å¦ä½å¯»åçï¼åå¸å¼å¯»å齿åªäºç®æ³ï¼äºè§£ä¸è´æ§ hash ç®æ³åï¼å¦ä½å¨æå¢å åå é¤ä¸ä¸ªèç¹ï¼](/docs/high-concurrency/redis-cluster.md) - [äºè§£ä»ä¹æ¯ Redis çéªå´©åç©¿éï¼Redis å´©æºä¹å伿乿 ·ï¼ç³»ç»è¯¥å¦ä½åºå¯¹è¿ç§æ åµï¼å¦ä½å¤ç Redis çç©¿éï¼](/docs/high-concurrency/redis-caching-avalanche-and-caching-penetration.md) - [å¦ä½ä¿è¯ç¼å䏿°æ®åºçååä¸è´æ§ï¼](/docs/high-concurrency/redis-consistence.md) - [Redis çå¹¶åç«äºé®é¢æ¯ä»ä¹ï¼å¦ä½è§£å³è¿ä¸ªé®é¢ï¼äºè§£ Redis äºå¡ç CAS æ¹æ¡åï¼](/docs/high-concurrency/redis-cas.md) - [ç产ç¯å¢ä¸ç Redis æ¯æä¹é¨ç½²çï¼](/docs/high-concurrency/redis-production-environment.md) ### ååºå表 - [为ä»ä¹è¦ååºå表ï¼è®¾è®¡é«å¹¶åç³»ç»çæ¶åï¼æ°æ®åºå±é¢è¯¥å¦ä½è®¾è®¡ï¼ï¼ç¨è¿åªäºååºå表ä¸é´ä»¶ï¼ä¸åçååºå表ä¸é´ä»¶é½æä»ä¹ä¼ç¹å缺ç¹ï¼ä½ ä»¬å ·ä½æ¯å¦ä½å¯¹æ°æ®åºå¦ä½è¿è¡åç´æåææ°´å¹³æåçï¼](/docs/high-concurrency/database-shard.md) - [ç°å¨æä¸ä¸ªæªååºå表çç³»ç»ï¼æªæ¥è¦ååºå表ï¼å¦ä½è®¾è®¡æå¯ä»¥è®©ç³»ç»ä»æªååºåè¡¨å¨æåæ¢å°ååºå表ä¸ï¼](/docs/high-concurrency/database-shard-method.md) - [å¦ä½è®¾è®¡å¯ä»¥å¨ææ©å®¹ç¼©å®¹çååºåè¡¨æ¹æ¡ï¼](/docs/high-concurrency/database-shard-dynamic-expand.md) - [ååºå表ä¹åï¼id 主é®å¦ä½å¤çï¼](/docs/high-concurrency/database-shard-global-id-generate.md) ### 读åå离 - [å¦ä½å®ç° MySQL ç读åå离ï¼MySQL 主ä»å¤å¶åçæ¯å¥ï¼å¦ä½è§£å³ MySQL 主ä»åæ¥çå»¶æ¶é®é¢ï¼](/docs/high-concurrency/mysql-read-write-separation.md) ### é«å¹¶åç³»ç» - [å¦ä½è®¾è®¡ä¸ä¸ªé«å¹¶åç³»ç»ï¼](/docs/high-concurrency/high-concurrency-design.md) ## åå¸å¼ç³»ç» ### [é¢è¯è¿ç¯ç®](/docs/distributed-system/distributed-system-interview.md) ### ç³»ç»æå - [为ä»ä¹è¦è¿è¡ç³»ç»æåï¼å¦ä½è¿è¡ç³»ç»æåï¼æååä¸ç¨ Dubbo å¯ä»¥åï¼](/docs/distributed-system/why-dubbo.md) ### åå¸å¼æå¡æ¡æ¶ - [说ä¸ä¸ Dubbo çå·¥ä½åçï¼æ³¨åä¸å¿æäºå¯ä»¥ç»§ç»éä¿¡åï¼](/docs/distributed-system/dubbo-operating-principle.md) - [Dubbo æ¯æåªäºåºåååè®®ï¼è¯´ä¸ä¸ Hessian çæ°æ®ç»æï¼PB ç¥éåï¼ä¸ºä»ä¹ PB çæçæ¯æé«çï¼](/docs/distributed-system/dubbo-serialization-protocol.md) - [Dubbo è´è½½åè¡¡çç¥åé群容éçç¥é½æåªäºï¼å¨æä»£ççç¥å¢ï¼](/docs/distributed-system/dubbo-load-balancing.md) - [Dubbo ç spi ææ³æ¯ä»ä¹ï¼](/docs/distributed-system/dubbo-spi.md) - [å¦ä½åºäº Dubbo è¿è¡æå¡æ²»çãæå¡é级ã失败éè¯ä»¥åè¶ æ¶éè¯ï¼](/docs/distributed-system/dubbo-service-management.md) - [åå¸å¼æå¡æ¥å£çå¹çæ§å¦ä½è®¾è®¡ï¼æ¯å¦ä¸è½é夿£æ¬¾ï¼ï¼](/docs/distributed-system/distributed-system-idempotency.md) - [åå¸å¼æå¡æ¥å£è¯·æ±çé¡ºåºæ§å¦ä½ä¿è¯ï¼](/docs/distributed-system/distributed-system-request-sequence.md) - [å¦ä½èªå·±è®¾è®¡ä¸ä¸ªç±»ä¼¼ Dubbo ç RPC æ¡æ¶ï¼](/docs/distributed-system/dubbo-rpc-design.md) ### åå¸å¼é - [Zookeeper 齿åªäºåºç¨åºæ¯ï¼](/docs/distributed-system/zookeeper-application-scenarios.md) - [ä½¿ç¨ Redis å¦ä½è®¾è®¡åå¸å¼éï¼ä½¿ç¨ Zookeeper æ¥è®¾è®¡åå¸å¼éå¯ä»¥åï¼ä»¥ä¸ä¸¤ç§åå¸å¼éçå®ç°æ¹å¼åªç§æçæ¯è¾é«ï¼](/docs/distributed-system/distributed-lock-redis-vs-zookeeper.md) ### åå¸å¼äºå¡ - [åå¸å¼äºå¡äºè§£åï¼ä½ 们å¦ä½è§£å³åå¸å¼äºå¡é®é¢çï¼TCC 妿åºç°ç½ç»è¿ä¸éæä¹åï¼XA çä¸è´æ§å¦ä½ä¿è¯ï¼](/docs/distributed-system/distributed-transaction.md) ### åå¸å¼ä¼è¯ - [é群é¨ç½²æ¶çåå¸å¼ Session å¦ä½å®ç°ï¼](/docs/distributed-system/distributed-session.md) ## é«å¯ç¨æ¶æ - [Hystrix ä»ç»](/docs/high-availability/hystrix-introduction.md) - [çµåç½ç«è¯¦æ é¡µç³»ç»æ¶æ](/docs/high-availability/e-commerce-website-detail-page-architecture.md) - [Hystrix çº¿ç¨æ± ææ¯å®ç°èµæºé离](/docs/high-availability/hystrix-thread-pool-isolation.md) - [Hystrix ä¿¡å·éæºå¶å®ç°èµæºé离](/docs/high-availability/hystrix-semphore-isolation.md) - [Hystrix é离çç¥ç»ç²åº¦æ§å¶](/docs/high-availability/hystrix-execution-isolation.md) - [æ·±å ¥ Hystrix æ§è¡æ¶å é¨åç](/docs/high-availability/hystrix-process.md) - [åºäº request cache 请æ±ç¼åææ¯ä¼åæ¹éååæ°æ®æ¥è¯¢æ¥å£](/docs/high-availability/hystrix-request-cache.md) - [åºäºæ¬å°ç¼åç fallback é级æºå¶](/docs/high-availability/hystrix-fallback.md) - [æ·±å ¥ Hystrix æè·¯å¨æ§è¡åç](/docs/high-availability/hystrix-circuit-breaker.md) - [æ·±å ¥ Hystrix çº¿ç¨æ± éç¦»ä¸æ¥å£éæµ](/docs/high-availability/hystrix-thread-pool-current-limiting.md) - [åºäº timeout æºå¶ä¸ºæå¡æ¥å£è°ç¨è¶ æ¶æä¾å®å ¨ä¿æ¤](/docs/high-availability/hystrix-timeout.md) ### é«å¯ç¨ç³»ç» - å¦ä½è®¾è®¡ä¸ä¸ªé«å¯ç¨ç³»ç»ï¼ ### éæµ - å¦ä½éæµï¼å¨å·¥ä½ä¸æ¯æä¹åçï¼è¯´ä¸ä¸å ·ä½çå®ç°ï¼ ### çæ - å¦ä½è¿è¡çæï¼ - çææ¡æ¶é½æåªäºï¼å ·ä½å®ç°åçç¥éåï¼ ### é级 - å¦ä½è¿è¡éçº§ï¼ ## å¾®æå¡æ¶æ - [å¾®æå¡æ¶ææ´ä¸ªç« èå 容å±é¢å¤æ°å¢ï¼ä¼éç»è¡¥å å®å]() - [å ³äºå¾®æå¡æ¶æçæè¿°](/docs/micro-services/microservices-introduction.md) ### Spring Cloud å¾®æå¡æ¶æ - ä»ä¹æ¯å¾®æå¡ï¼å¾®æå¡ä¹é´æ¯å¦ä½ç¬ç«é讯çï¼ - Spring Cloud å Dubbo æåªäºåºå«ï¼ - Spring Boot å Spring Cloudï¼è°è°ä½ 对å®ä»¬ççè§£ï¼ - ä»ä¹æ¯æå¡çæï¼ä»ä¹æ¯æå¡éçº§ï¼ - å¾®æå¡çä¼ç¼ºç¹å嫿¯ä»ä¹ï¼è¯´ä¸ä¸ä½ å¨é¡¹ç®å¼åä¸ç¢°å°çåï¼ - ä½ æç¥éçå¾®æå¡ææ¯æ 齿åªäºï¼ - Eureka å Zookeeper é½å¯ä»¥æä¾æå¡æ³¨åä¸åç°çåè½ï¼å®ä»¬æä»ä¹åºå«ï¼ - ......