Spring Cloud 2020.0.0 официально выпущен, до свидания, Netflix

Spring Cloud
Spring Cloud 2020.0.0 официально выпущен, до свидания, Netflix

Делитесь, растите и отказывайтесь прятаться. Обратите внимание на общедоступный номер【Утопия BAT], Ответить ключевые слова专栏Есть небольшие и красивые стеки технологий Spring, промежуточное ПО и т. д.Исходный столбецна бесплатное обучение. Эта статья былаwww.yourbatman.cnзаписано.

✍Предисловие

Здравствуйте, меня зовут Ваш Бэтмен.

22.12.2020 Пекин поздно ночью,Spring Cloud 2020.0.0Версия официально выпущена. 2020.0.0 — это первый выпуск Spring Cloud, в котором используется новая схема управления версиями.

Несколько слов о номере версии: До этого Spring Cloud's Release Train назывался в честь станций лондонского метро, ​​таких как Hoxton, Greenwich и т.д.

Описание: версия 2020.0.0, также известная какIlford(Название станции метро), т.к. этот проект был переименован в соответствии с новым регламентом после марта, предполагается, что это для удобства общения внутри коллектива, так же можно понять, что это только внутренний код, что удобно для связи

Хотя они расположены в алфавитном порядке, все же есть две фатальные проблемы:

  • на не английскийродной языкСтраны (такие как небесная династия) очень недружественные и не могут быстро разобраться в отношениях между номерами версий
  • A-Z, что, если номер версии достигнет Z? Как дальше развиваться? твой, твой

Команда Spring поняла, что это действительно проблема, и приняла решение в марте этого года.Изменять. За подробностями обратитесь к статье, которую я написал ранее (настоятельно рекомендуетсяОб этом изменении правил знают все, кто заходит к вам):Spring меняет правила именования номеров версий: этот шаг подходит для неанглоязычных стран.

Примечание. Изменение правила номера версии применяется ко всем стекам технологий Spring, включая Spring Framework, Spring Boot, Spring Cloud, Spring Data...

Текст стал нормальным. Spring Cloud начал исследование и разработку этой версии еще в начале года и выпустил свою версию 2020.0.0-M1 (первую веху) в апреле этого года, пока не осталось менее 10 дней до окончания 2020.» Придержите большой шаг, официально ВЫПУСКАЕТЕ.

Spring Cloud, как инфраструктура облачных вычислений, построенная на Spring Boot, я думаю, что есть две основные причины этой дистоции:

  1. Spring Boot 2.4.0 версии 2020-11-12 официально ВЫПУСКАЕТСЯ (только Spirng Framework 5.3.0 версии 2020-10-27 является ВЫПУСКОМ)
    1. Официально выпущен Spring Framework 5.3.0, который продолжает прилагать усилия по переходу к облачным технологиям.
    2. Официально выпущен Spring Boot 2.4.0, новый механизм загрузки файла конфигурации (не имеющий обратной совместимости)
  2. Изменения действительно слишком большие, R&D, тесты и документация огромны.

Из дорожной карты выпуска Spring Framework, Spring Boot и Spring Cloud я еще раз проверил свое предложение:То, что вы знаете о Spring Cloud, зависит от того, как много вы знаете о Spring Boot, а то, что вы знаете о Spring Boot, зависит от того, как много вы знаете о Spring Framework.. Это основная причина, по которой в моей статье я уделяю много времени Spring Framework, а не Spring Boot: нижний слой прозрачен, а верхний прост в использовании.

соглашение о версиях

  • Весенний фреймворк: 5.3.2
  • Весенняя загрузка: 2.4.1
  • Весеннее облако: 2020.0.0
    • Вышеупомянутая версия - это версия, которую "несет" SC.

✍Текст

Есть интересное явление, до дедлайна (2020-12-23 22:00:00)Официальный сайтТекущая последняя версия синхронно не помечается как версия 2020.0.0 (как показано на рисунке):

Фактически, официальный блог сделал объявление о выпуске уже через 24 часа:

И последняя пакет JAR уже существует на центральном складе Maven (докажите, что вы импортируете пакет обычно и используете это не проблема):

На самом деле документальный уровень, а не только официальный сайт ведомства не синхронизирует последнюю версию, я не буду перечислять, все-таки менее важные. Для этого явления, о котором я говорю, не является ли команда Spring Cloud нехваткой людей, использующих его? Будет ли общество продвигать его? О (∩_∩) О ~ га

Управление версиями Spring Cloud

Управление версиями слишком важно для разработки программного обеспечения.До появления Spring Boot зависимости и управление версиями были очень большими (даже при наличии Spring BOM), особенно когда была версияне подходитЛегко украсть ваше время на полдень или даже на целый день.

Как платформа приложений верхнего уровня, Spring Cloud может нормально работать только в том случае, если базовая версия соответствует, Самое главное, чтобы она соответствовала номеру версии Spring Boot.

Соответствие версии Spring Boot

Появление и популярность Spring Boot значительно облегчили вышеуказанные проблемы, но соответствие версий между Spring Cloud и Spring Boot по-прежнему необходимо при использовании Spring Cloud.Особое вниманиеиз. Для этого я составил для вас эту таблицу:

Release Train время выпуска Весенняя загрузочная версия Версия SC Commons
2020.0.x 2020-12 2.4.x 3.0.0
Hoxton 2019-07 2.2.х, 2.3.х (начиная с SR5) 2.2.x
Greenwich 2018-11 2.1.x 2.1.x
Finchley 2017-10 2.0.x 2.0.x
Edgware 2017-08 1.5.x 1.3.x
Dalston 2017-05 1.5.x 1.2.x
Brixton 2016-09 1.3.x 1.1.x
Angel 2016-05 1.2.x 1.0.x

Примечание. Для сравнения версий этой огромной системы, таких как внутренние компоненты Spring Cloud, Spring Boot, Spirng Framework, Security и т. д., статья была отсортирована, и будет выпущена следующая. Пожалуйста, не забудьте собрать ее.

специальное напоминание:spring-cloud-starter-loadbalancerОн был коммерциализирован с версией Spring Cloud Commons 2.2.0 (версия Hoxton). Обратите внимание на этот узел версии, поскольку он заменяет ленту.

Текущая поддерживаемая версия

Весеннее облако следуетPivotal OSS support policyпара соглашенияосновная версияПредоставляется 3 года поддержки. Кроме того, после выпуска основной или дополнительной версии Spring Cloud, если есть серьезные ошибки и проблемы с безопасностью, она будет поддерживаться в течение определенного периода времени (от 6 до 12 месяцев).

Особое примечание: это относится косновная версияВсего 3 года, а мажорные версии редки.

Теперь, когда выпущена версия 2020.0.0, пришло время отказаться от нее. Версии, официально поддерживаемые Spring Cloud:

  • 2020.0 версия:( Поддержка Spring Boot 2.4.x) этоосновная версия, по плану будет поддерживать до декабря 2023 года
    • Это еще один крупный релиз со времен Finchley.
  • версия Хокстона: (Поддерживает Spring Boot 2.2.x и 2.3.x) В качестве второстепенного выпуска в серии выпусков Finchley его регулярное техническое обслуживание будет продолжаться до конца июня 2021 года. Начиная с 2020-07, он войдет в специальный период обслуживания (никаких новых функций, только экстренные ошибки), и только основные ошибки/исправления безопасности будут выпущены в конце 2021-декабря.
  • Гринвич версия:( Поддержка Spring Boot 2.1.x) 2020-01 Остановить техническое обслуживание, 2020-12-31 также завершится специальный период обслуживания
  • Версия Финчли: (поддерживает Spring Boot 2.0.x) этоосновная версияНачало выпуска 2018 года
  • старая версия: Ну забудь

Весенний официальныйпредположение: Попробуйте использовать последнюю версию. Тем не менее, рекомендуется рекомендовать, так как использовать толькопоздняя мессаТе из нас, кто разбирается в технике, могут чувствовать себя в безопасности только тогда, когда мы сидим во втором ряду или даже в третьем ряду, чтобы посмотреть фильм. Но большие волны истории всегда уничтожат первый ряд, поэтому всегда хорошо заранее подготовиться, чтобы, когда вас вытолкнут в первый ряд, вы могли толькообнаженное плавание.

Весеннее облако 2020.0 какосновная версия, который принес много значительных изменений, среди которых некоторые блокирующие обновления (не обратно совместимые) являются самым важным пунктом этой статьи, приходите и служите.

Блокировка обновления (без обратной совместимости)

Примерно в это же время в прошлом году (2019) Spring Cloud объявила в своей дорожной карте (описанной в предыдущей статье), что будетконецНекоторые библиотеки / версии, самая важная вещьПроект Spring Cloud Netflix переходит в режим обслуживания, а затем планирует полностью удалить его в 2020 году.

Spring Cloud принимает такое решение фактически «вынужденно». Мы знаем, что Spring Cloud всегда ставилNetflix OSSКак официальное универсальное решение по умолчанию, пакет Netflix OSS в то время не мог дождаться, когда его приравняют к Spring Cloud. Однако примерно в 2018 году Netflix объявил, что его основные компоненты Hystrix, Ribbon, Zuul, Archaius и т. д.состояние обслуживания.

Хотя есть ZUUL 2.x и Archaius 2.x, они не совместимы с обратным и не могут быть модернизированы плавно, поэтому почти невозможно использовать

Модули, которые находятся на обслуживании с 2018 года (включая их соответствующие стартеры, которые здесь не перечислены):

  1. spring-cloud-netflix-archaius
  2. spring-cloud-netflix-hystrix-contract
  3. spring-cloud-netflix-hystrix-dashboard
  4. spring-cloud-netflix-hystrix-stream
  5. spring-cloud-netflix-hystrix
  6. spring-cloud-netflix-ribbon
  7. spring-cloud-netflix-turbine-stream
  8. spring-cloud-netflix-turbine
  9. spring-cloud-netflix-zuul

1. До свидания, Нетфликс

Сегодня официально выпущен Spring Cloud 2020.0, в этой мажорной версии по установленному плануspring-cloud-netflixНож. Я нарисовал для тебя картинкуspring-cloud-netflix-dependenciesСравнительная таблица основных различий между версиями до и после XML-файла понятна с первого взгляда:

  • spring-cloud-netflix-dependenciesИсчезновения нет, он до сих пор существует, номер версии следует за большей частью команды на обновление до версии 3.0.x.
  • Старая версияspring-cloud-netflix-dependenciesУправляет всеми компонентами Netflix, включая Hystrix, Ribbon, Zuul, Eureka и т. д. А начиная с версии 2020.0,Он имеет и управляет только Eureka (включая сервер и клиент)

Объяснение: Хотя Feign изначально принадлежал Netflix, начиная с версии 9.x он был передан организации OpenFeign, поэтому больше не находится под юрисдикцией Netflix.

Краткое резюме предложения: версия Spring Cloud 2020.0.0Удалить полностьюВ дополнение к Netflix из Эврикивсекомпоненты. На данный момент мы с благодарностью можем сказать спасибо пакету OSS Netflix и попрощаться с ним.

Примечание: проект Netflix Eureka все еще активен. Дизайн этого реестра достаточно хорош, его общая производительность приемлема, а его конкурентоспособность на рынке все еще замечательна. Поэтому Spring Cloud еще не отказался от него.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Альтернативный компонент Netflix

Поскольку Spring Cloud резко сократил пакет OSS для Netflix, должна быть альтернатива. Это точно, и команда Spring Cloud предложила нам альтернативы:

Netflix Рекомендуемые альтернативы инструкция
Hystrix Resilience4j Сам Hystrix рекомендует использовать его вместо себя
Hystrix Dashboard / Turbine Micrometer + Monitoring System Грубо говоря, мониторить это дело, чтобы давали больше профессиональных компонентов делать
Ribbon Spring Cloud Loadbalancer Я ничего не мог с собой поделать, Весна наконец-то выстрелил сам
Zuul 1 Spring Cloud Gateway Я ничего не мог с собой поделать, Весна наконец-то выстрелил сам
Archaius 1 Внешняя конфигурация Spring Boot + конфигурация Spring Cloud Лучше и мощнее, чем то, чего добился Netflix
Что такое весенние облако LoadBalancer?

Из вышеперечисленных альтернатив вам может быть самой незнакомой и самой любопытной.Spring Cloud Loadbalancer, который когда-то был просто Spring CloudинкубаторНебольшой проект в , и на какое-то время он сел на мель. После перезапуска, разработки и превращения его в великую миссию, он официально используется дляполная заменаЛента, станьте балансировщиком нагрузки Spring Cloudтолько реализация.

Стоит отметить, что Spring Cloud LoadBalancer был впервые представлен, когда был выпущен Spring Cloud Commons 2.2.0, то есть, когда был выпущен Hoxton, но он был лишь запасным колесом/альтернативой, а Ribbon по-прежнему оставался опорой по умолчанию. На следующем снимке экрана показана ситуация в версии Hoxton:

Как показано на рисунке, абстракция балансировки нагрузкиLoadBalancerClientИнтерфейс имеет две реализации, и после версии Spring Cloud 2020.0,BlockingLoadBalancerClientЭто единственная реализация.

Что касается использования балансировщика нагрузки spring-cloud-loadbalancer, у официального представителя есть очень рекомендуемое руководство:spring.IO/guides/company/is…

Является ли Spring Cloud Alibaba альтернативой?

Ну, это тоже хорошо.

Однако в настоящее время Spring Cloud не является официальным рекомендуемым решением по умолчанию. Я с нетерпением жду, когда китайцы, работая вместе, отправят Spring Cloud Alibaba как можно скорее, чтобы кривые гайки могли использовать структуру нашей Небесной Династии, и проблема должна быть на китайском O (∩_∩) O, ха-ха~.

Работает ли пакет Netflix для импорта дисплеев?

Хотите перейти на последнюю версию Spring Cloud, сохранив при этом обратную совместимость с технологией Netflix. Хотя основные компоненты netflix больше не включены в зависимости spring-cloud-netflix, могу ли я вручную импортировать пакет и указать номер версии? Может нормально работать?

отвечать: Я дам тебе ответ, постукивая по голове,нет. Поскольку я не демонстрировал его, но он слишком деформирован, чтобы использовать его таким образом, это решение должно быть снято в зародыше, оно не должно существовать.

Кроме того, это также говорит нам об этом: попробуйте столкнуться с этим при использовании Spring Cloud.АннотацияПрограммирование, так что даже если Spirng Cloud изменит базовые компоненты (такие как плавкие предохранители, балансировщики нагрузки) и т. д., теоретически это не окажет никакого влияния на наш бизнес или окажет незначительное влияние благодаря его абстракции Spring Cloud Commons, где Essence.

2. Контекст Bootstrap больше не активируется по умолчанию.

Студенты, знакомые с этим принципом, знают, что контейнер Spring Cloud опирается наBootstrap ContextКонтекст загрузки для запуска, соответствующий классBootstrapApplicationListener.

Это изменилось в версии 2020.0,Новые версии Spring Cloud больше не зависят от этого контекста для запуска.. Таким образом, по умолчанию контекст Bootstrap больше не будет запускаться. Изменения на уровне кода происходят здесь:

BootstrapApplicationListener:

	@Override
	public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
		ConfigurableEnvironment environment = event.getEnvironment();
		// 在方法开头加了这麽个判断
		if (!bootstrapEnabled(environment) && !useLegacyProcessing(environment)) {
			return;
		}
		...
	}

PropertyUtils:

	// BOOTSTRAP_ENABLED_PROPERTY = spring.cloud.bootstrap.enabled
	public static boolean bootstrapEnabled(Environment environment) {
		return environment.getProperty(BOOTSTRAP_ENABLED_PROPERTY, Boolean.class, false) || MARKER_CLASS_EXISTS;
	}
	// USE_LEGACY_PROCESSING_PROPERTY = spring.config.use-legacy-processing
	public static boolean useLegacyProcessing(Environment environment) {
		return environment.getProperty(USE_LEGACY_PROCESSING_PROPERTY, Boolean.class, false);
	}

открытый метод

Если вам нужно открыть контекст Bootstrap, есть два способа сделать это:

  1. Настройкиspring.cloud.bootstrap.enabled=trueилиspring.config.use-legacy-processing=trueВот и все. Примечание. Эти значения свойств должны быть помещены в среду, чтобы они вступили в силу. Например, надежными методами являются: системные свойства, переменные среды, командные строки и т. д.
  2. Импортируйте банку:org.springframework.cloud:spring-cloud-starter-bootstrap, то ничего не делать
    1. Описание: В этой банке один и только одинMarkerКласс, вы знаете функцию, я не буду здесь слишком много объяснять

Примечание. Вручную откройте контекст Bootstrap, чтобы доказать, что вы вернулись к старому способу загрузки SC, затем сделайте все по-старому.

3. Совершенно новая конфигурация

Благодаря тому, что Spring Boot 2.4.x поддерживает новый способ записи конфигурационных файлов, вы можете использоватьspring.config.importОба импортируют конфигурацию других компонентов. как:

  • spring.config.import=configserver:xxx
  • spring.config.import=zookeeper:
  • ...

Это более модульно и больше соответствует требованиям облачной среды.

4. Другое

  • Чтобы отключить индикацию работоспособности на стороне клиента Spring Cloud Confighealth.config.enabled=false, Был замененmanagement.health.config.enabled=false. Сохраняйте стиль в соответствии с конечной точкой управления Spring Boot.
  • Идентификаторы конечных точек с недопустимыми символами (тире) были изменены, чтобы соответствовать стандарту, с тех пор никаких неприятных предупреждений при запуске, сохраните чистоту.
    • bus-env -> busenv
    • bus-refresh -> busrefresh
    • service-registry -> serviceregistry
// old
@Endpoint(id = "service-registry")
public class ServiceRegistryEndpoint { ... }

// new
@Endpoint(id = "serviceregistry")
public class ServiceRegistryEndpoint { ... }

регулярное обновление

Не так много внимания уделяется регулярным обновлениям, в основном таким компонентам, какSpring Cloud Commons、Spring Cloud Kubernetes、Spring Cloud Openfeign...Ждать, чтобы делать некоторые регулярные обновления, тускло.

Стоит отметить: все номера версий облачного модуля Spirng были обновлены до3.0.0(Обновление основных номеров версии), кроме весеннего облачного цепей / весеннего облака Kubernetes (2.0.0) и задача весны облака (2.3.0).

Проблемы, которые все еще существуют

Хотя 2020.0 был ВЫПУСК, но есть еще нерешенные проблемы, например, эта версияСуществующийПроблема:

  • При использованииspring.config.import=configserver:Для настройки центра конфигурации в этой версии отсутствуют параметры повторной попытки поддержки.
    • Решение: если вы хотите использовать его, вам нужно вернуться к традиционному способу (написанному в bootstrap.yaml)
  • spring-cloud-config-dependenciesСуществует нерелизная версия jar (подробности смотрите на скриншоте ниже)
    • Решение. Вручную укажите номер версии jar.

Примечание: M1 — это веховая версия, и она все еще находится на ранней стадии. Могут быть ошибки. Рекомендуется вручную указывать номер версии для замены этого jar-файла при его использовании.

Кажется, что даже если она будет такой же сильной, как команда Spring, будут различные недостатки. Если я подумаю об этом так, то осмелюсь вернуться и с уверенностью писать об ошибках.

✍Резюме

Spring Cloud Spring Cloud 2020.0.0 — этоосновная версия, это очень важное существование, и обновления и изменения также огромны. В частности, это выражается в удалении всех модулей Netflix, изменении способа запуска Spring Cloud и так далее. С выпуском Spring Boot 2.4.x и Spirng Cloud 2020.0, а также прекращением поддержки пакета OSS для Netflix появился новыйглубокое программированиеОпыт, полный сюрпризов, очень жду этого.

Примечание. Поскольку эта версия полностью отказывается от набора вещей Netflix, чтобы идти в ногу со временем, я буду использовать ее в течение определенного периода времени и как можно скорее напишу последнюю версию серии руководств, чтобы помочь вам избежать ловушек.

В конце статьи упоминается, что хоть и вышла версия 2020.0, некоторые проблемы все же есть. Но опять же, это мелкие проблемы, которые могут быть исправлены в следующей минорной версии. Но смущает то, что до конца 2020 года осталось менее 10 дней. Если вступит в 2021 год и новые правила будут называться по номеру версии, то выпущенная на тот момент версия уже не будет называться 2020.xx, а только 2021.xx Очевидно, что это итерация большого номера версии, и вам нужно быть осторожным.

Как вы думаете, команда Spring Cloud также отправила его в 2020 году? Добро пожаловать, чтобы оставить свое мнение в области комментариев.


✔✔✔ Рекомендуемое чтение ✔✔

Серия [преобразование пружинного типа]:

【Джексон】 Серия:

Серия [Проверка компонента проверки данных]:

【Новые функции】 Серия:

【Программа жизни】 серия:

Есть еще такие как [Класс конфигурации Spring] [Spring-static] [Привязка данных Spring] [Spring Cloud Netflix] [Feign] [Ribbon] [Hystrix]... Больше оригинальных колонок, обратите вниманиеBAT的乌托邦Ответить专栏Вы можете получить всех двух персонажей, или вы можете добавить меняfsx1056342982,Заводить друзей.

немногозаконченный,немногозагрузка. Я Брат А (Ваш Бэтмен), увидимся в следующий раз