Прежде чем приступить к чтению исходного кода, я считаю необходимым рассказать о системе springcloud.
SpringCloud — это серия проектов микросервисных инструментов.собирать. Эта коллекция содержит такие инструменты, как реестр обнаружения служб, центр конфигурации, шина сообщений, балансировка нагрузки, автоматический выключатель, мониторинг данных и т. д.
Эти проекты находятся по адресу:GitHub.com/spring - уродливо...Включать:
- Spring Cloud Commons
- SpringCloud Netflix
- SpringCloud Stream
- SpringCloud Config .....
Эта статья посвящена двум проектам:
Spring Cloud commons
Этот проект очень важен, потому что он содержит два важных подмодуля:
1.Spring Cloud Context: Предоставляет проекту такие функции, как контекст загрузки, шифрование, область обновления и конечные точки среды. Когда SpringCloud создает контекст (т. е. экземпляр ApplicationContext), он принимает дизайн контейнера родитель-потомок Spring и создает родительский контейнер Bootstrap Application Context поверх контейнера, созданного SpringBoot (далее именуемого контейнером приложения). ).
2.Spring Cloud Commons: Глядя на его название, видно, что это проект общего назначения, который будет представлен другими проектами.
В основном он обеспечивает регистрацию и обнаружение служб, балансировку нагрузки, автоматический выключатель и другие функции в микрослужбах.код уровня абстракции, этот уровень абстракции не имеет ничего общего с конкретной реализацией. Таким образом, конкретная реализация этих функций может быть реализована с помощью различных технологий, и может быть достигнута гибкая замена во время использования.
Такие столбцы, как:DiscoveryClient
использовать, мы можем решить использоватьSpring Cloud Netflix Eureka,Spring Cloud Consul发现和Spring Cloud Zookeeper发现
.
-
когда мы используем
@EnableDiscoveryClient
представлятьDiscoveryClient
Когда, какое конкретное введениеDiscoveryClient
, это будет зависеть от того, какой конкретно проект вы импортируете. если бы мы использовалиSpring Cloud Netflix Eureka
. что принесетSpring Cloud Netflix Eureka
изDiscoveryClient
. -
когда мы используем
@EnableEurekaClient
представлятьDiscoveryClient
, то есть явно использовать толькоSpring Cloud Netflix Eureka
изDiscoveryClient
.
Это тоже
@EnableDiscoveryClient
а также@EnableEurekaClient
разница.
Из этого мы можем видеть цель Spring Cloud Commons как публичного проекта.
Spring Cloud Netflix
Netflix имеет открытую структуру распределенных сервисов, Netflix OSS. адрес проектаgithub.com/Netflix
Проект Spring Cloud Netflix переупаковал его, чтобы сделать его более подходящим для системы springcloud. Spring Cloud Netflix включает подпроекты, соответствующие Netflix OSS.
- SpringCloud-Eureka -- Netflix Eureka
- SpringCloud-Ribbon -- Netflix Ribbon
- SpringCloud-Hystrix -- Netflix Hystrix
- ...
Когда мы думаем о весеннем облаке, это Эврика, Лента. Я думаю, что это неправильно, Eureka и Ribbon существуют только как подпроекты проекта Spring Cloud Netflix в рамках системы Springcloud, и они являются просто реализацией компонентов микросервиса.
Поскольку мы обычно используем эти реализации в рамках проекта Spring Cloud Netflix, мы объективно считаем, что Eureka и Ribbon — это springcloud.
Поэтому, прежде чем читать исходный код, уточните эти отношенияspringcloud,Spring Cloud Netflix ,Netflix OSS
очень нужно.
Самое главное: когда мы читаемSpringCloud-Eureka,SpringCloud-Ribbon
В ожидании исходного кода см.Netflix OSS
вики-документация, полезная для нас, чтобы понять их.
Адрес документа springcloud:
Английский адрес Netflix Эврика
Spring Cloud xxx
В коллекции springcloud есть много проектов, и адреса проектов находятся по адресу:GitHub.com/spring - уродливо...
Суммировать:
Поняв некоторые из этих взаимосвязей, начните читать исходный код некоторых из этих ключевых компонентов.