![#fullstackguy - Обучение IT-профессии](/img/default-banner.jpg)
- Видео 28
- Просмотров 44 588
#fullstackguy - Обучение IT-профессии
Добавлен 12 дек 2020
Уроки по Java, Spring Boot, Hibernate, SQL и разработке в целом.
А также - архитектура, проектирование, тестирование и теория.
💳Поддержать канал - (Сбер) - 2202 2023 7217 2415
А также - архитектура, проектирование, тестирование и теория.
💳Поддержать канал - (Сбер) - 2202 2023 7217 2415
Spring Boot 3: как создать свой стартер?
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com
# Описание
------------
Довольно часто в разработке микросервисов встаёт вопрос о использовании общей кодовой базы в разных сервисах. Некоторые дублируют код между микросервисами, другие выделяют код в отдельные библиотеки. В этом видео я расскажу о том, как создать отдельную библиотеку с Spring компонентами - стартер.
# Ссылки
----------
1️⃣ fullstackguy.ru/blog/2024/04/08/how-to-make-spring-boot-3-starter/ - сопроводительная статья к видео
2️⃣ school.fullstackguy.ru/courses/hugo - курс по созданию собственных страничек-визиток, блогов, лендингов
# Контакты
--------------------
Telegr...
# Описание
------------
Довольно часто в разработке микросервисов встаёт вопрос о использовании общей кодовой базы в разных сервисах. Некоторые дублируют код между микросервисами, другие выделяют код в отдельные библиотеки. В этом видео я расскажу о том, как создать отдельную библиотеку с Spring компонентами - стартер.
# Ссылки
----------
1️⃣ fullstackguy.ru/blog/2024/04/08/how-to-make-spring-boot-3-starter/ - сопроводительная статья к видео
2️⃣ school.fullstackguy.ru/courses/hugo - курс по созданию собственных страничек-визиток, блогов, лендингов
# Контакты
--------------------
Telegr...
Просмотров: 1 024
Видео
Gradle: Tips & Tricks - Как дебажить зависимости?
Просмотров 1318 месяцев назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com #gradle #java #javaprogramming Полезные ссылки: 1️⃣ Ссылка на документацию: docs.gradle.org/current/userguide/viewing_debugging_dependencies.html Тайм-коды: 0:00 - Введение 1:05 - Тестовый проект 3:21 - Команда #1 6:57 - Команда #2 💳Поддержать канал - (Сбер) - 2202 2023 7217 2415
Fullstackguy - 1 год 🎈
Просмотров 174Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com Boosty: boosty.to/fullstackguy Очередной выпуск поболтатушек. Обсуждаем проект FullStackGuy, что изменилось, как повлиял и на что, подводим итоги. Полезные ссылки: 1) Сайт проекта FullStackGuy: fullstackguy.ru 2) Мой личный сайт: anverbogatov.ru 3) Сайт проекта #НЕмузыкант: www.yout...
Gradle: Tips & Tricks - Как узнать есть ли обновления библиотек проекта?
Просмотров 319Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com #gradle #java #javaprogramming В Maven есть отличный способ узнать, какие зависимости в проекте пора бы обновить. А в Gradle таких способов нет... или есть? В этом видео, разбираемся с тем, как получить список библиотек Gradle проекта и их обновления. Полезные ссылки: 1️⃣ Ссылка на ...
Как разместить Hugo сайт в Яндекс Облаке? (Hugo + Yandex.Cloud = ❤️)
Просмотров 428Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com #gohugo #hugoweb #yandex #yandexcloud #yandexobjectstorage Двери AWS для россиян официально закрыты. Компания громко хлопнула ею перед нашим носом, и, самое время заняться поиском альтернатив. Я свои статические сайты перенёс на Яндекс Облако и, в этом туториале, спешу поделиться св...
Мобилизация и IT #2
Просмотров 2,1 тыс.Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com Вторая часть поболтатушек о главном. Обсуждаем апдейты от Минцифр. Полезные ссылки: 1) Приказ о перечне специальностей: digital.gov.ru/uploaded/files/712-graf.pdf 2) Инструкция по заполнению формы на Госуслугах: digital.gov.ru/uploaded/files/podachazayavleniya.pdf 3) Csv файл с шабл...
Мобилизация IT
Просмотров 3,8 тыс.Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com Очень неспокойная обстановка в последние дни, а когда говорят, что на душе камень - нужно высказаться. В этом видео, высказываю своё личное мнение о следующих вещах: - Мобилизация IT-шников в России - Отсрочка - не бронь - Почему IT-шникам дана отсрочка # Уточнение о отсрочке IT-шни...
Что такое CAP-теорема?
Просмотров 5 тыс.Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com Разбираемся в том, что такое CAP-теорема, и как с ней работать. Ссылка на статью: fullstackguy.ru/blog/2022/09/14/cap-theorem/ Тайм-коды: 0:00 - Начало 0:55 - Что такое CAP-теорема? 5:19 - Consistency или Согласованность 9:56 - Availability или Доступность 11:34 - Partition Toleranc...
Как начать делиться знаниями?
Просмотров 108Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com В этом видео, хочу порассуждать на такую тему, как "Как разработчику начать делиться знаниями?" Вот дорос ты до senior'а, а что дальше делать не уверен. Вроде есть тимлиды, но... там уметь коммуницировать нужно. Есть техлиды, но... там глубоко в технологии нужно. Есть архитектора, н...
Зачем разработчику делать свой курс?
Просмотров 79Год назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com В этом видео, хочу порассуждать на так нынче близкую мне тему - "Зачем профессиональному разработчику делать свой онлайн курс?" Тайм-коды: 0:00 - Интро 0:24 - Начало 0:51 - Первая причина это... 3:32 - А вторая... 4:34 - Третья... 5:34 - Мой опыт 💳Поддержать канал - (Сбер) - 2202 20...
Spring Boot: Как создать starter?
Просмотров 5 тыс.2 года назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com Рассказываю как создать собственный starter для Spring Boot проекта. Полезные ссылки: fullstackguy.ru/blog/2022/06/15/spring-starter-intro/ Тайм-коды: 0:00 - Приветствие 0:53 - Создание проекта 2:14 - Создание starter'а 12:26 - Сборка starter'а 13:05 - Используем свежесозданный star...
Модель памяти Java процесса
Просмотров 9 тыс.2 года назад
🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses/hugo?.com Рассуждаем о Java Memory Model и Garbage Collection'е. Визуализируем память Java приложения. Смотрим на красочный VisualGC. Всё ради того, чтобы разобраться как работает JVM с памятью. Полезные ссылки: fullstackguy.ru/blog/2022/05/24/jvm-process-memory-model/ - статья модели памяти ...
Docker: Tips & Tricks - Как упаковать Node.js приложение в контейнер?
Просмотров 1,9 тыс.2 года назад
Docker: Tips & Tricks - Как упаковать Node.js приложение в контейнер?
Intellij IDEA: Tips & Tricks - Анализ стектрейса
Просмотров 4562 года назад
Intellij IDEA: Tips & Tricks - Анализ стектрейса
Intellij IDEA: Tips & Tricks - Поиск в YAML
Просмотров 4982 года назад
Intellij IDEA: Tips & Tricks - Поиск в YAML
Maven: Tips & Tricks - Автоматическое версионирование
Просмотров 3292 года назад
Maven: Tips & Tricks - Автоматическое версионирование
Maven: Tips & Tricks - Как сбежать из ада? (jar hell 🔥)
Просмотров 2032 года назад
Maven: Tips & Tricks - Как сбежать из ада? (jar hell 🔥)
Maven: Tips & Tricks - Как найти неиспользуемые зависимости
Просмотров 3812 года назад
Maven: Tips & Tricks - Как найти неиспользуемые зависимости
Maven: Tips & Tricks - Как найти устаревшие зависимости?
Просмотров 2082 года назад
Maven: Tips & Tricks - Как найти устаревшие зависимости?
А когда я собираю, у меня ругается что нету main метода. Что делать?
Попробуй сделать стартер по нормальному, с мультимодулями. Хрен знает как такой билдить и юзать ))
Вы случайно попались мне в рекомендации - и я так с большим удовольствием смотрела Ваше видео и много нового для себя приобрела. Спасибо за Ваш труд!
Спасибо за теплые слова! Очень рад, что оказался полезен 🤝
Спасибо, хороший человек! Кроме этого больше не нашел руссоязычных видео про VisualVM.
Всегда пожалуйста! Очень рад, что видео оказалось полезным! 🤝
спасибо, наконец понял
Крутяк! 🤝
Спасибо большое, очень понятно и просто объяснили!!!!
Всегда пожалуйста! 🙏
круто!
Рад что видео оказалось полезным! 🤝
на каком обновлении стоит у вас мак? у меня sonoma и в intelliJ IDEA подлагивает, не понимаю почему
Sonoma 14.5. Полет нормальный 👍
Теорема не может "работать" или "не работать". Теорема может быть истинной или нет, иметь доказательство или не иметь.
большое спасибо за наглядное и понятное объяснение
Пожалуйста! Рад, что видео оказалось полезным.
Я понял как его создать, но не понял чем стартер отличаеться от просто jar файла в который вынесена какая то бизнес логика
Вы все верно поняли - стартер это и есть jar, с вынесенной логикой. Единственное - этот jar содержит расширение Spring приложения. Он же может добавлять свои конфигурации и бины в контейнер спринга.
как убирать матречную заставку?
Супер, крутой гайд! Лайк и подписка автоматом
Рад, что понравилось! 🤝💪
Спасибо за видео. А какая судьба у стартера на реальных проектах? Он публикуется в мавен центарал или какие-то внутренние репозитории, или подключается по мере необходимости как .jar библиотека(которая тоже где-то должна храниться)? Далее на проекте есть какое-то описание уже созданных стартеров, какая то документация, с указанием что он делает и описанием параметров для подключения зависимости(групАйДи, версия и т.п) ? Или попросту говоря - я написал стартер, как он далее попадает в общее пользование на большом проекте? И еще один вопрос, при написании стартера мы можем так же использовать gradle ? Почему-то, большинство примеров, даже относительно свежих, с использованием мавена.
Отличный вопрос! Действительно, чтобы сделать стартер доступным другим его нужно где-то опубликовать. Можно это сделать в открытых maven репозиториях (например, maven central). В реальной коммерческой разработке компании обычно имеют свои хранилища артефактов - nexus, artifactory и т.п. для того, чтобы сделать зависимости доступными только внутри компании. Поэтому - в компании - когда Вы сделаете свой стартер, он публикуется в собственном хранилище артефактов. Что дальше? А дальше зависит от процессов в команде. Кто-то пишет в документациях, что есть такой стартер, вот что он делает. Кто-то прописывает его в своем сервисе, использует, и другие команды знать-не-знают что такой стартер есть. А кто-то делает свой корпоративный Spring Initilzr, который генерирует шаблоны проектов с уже включенной зависимостью на стартер.
лучшее объяснение, что мне приходилось слышать, спасибо!!
Приятно слышать! Спасибо за добрые слова! 🤝
Супер, спасибо. Это то что мне сейчас нужно.
Рад что материал оказался полезен! 🤝
а где гитхаб, ни в статье ни тут нет
Приветствую Вадим! Для этого урока я не делал репозитрия с кодом. Вроде бы весь код довольно прост для воспроизведения. Но Ваше пожелание учту. Я планирую опубликовать статью о создании стартеров для Spring Boot 3 в следующий вторник. Для неё прикреплю репозиторий с кодом. Надеюсь, это поможет Вам лучше разобраться с темой. Хорошего дня! 👋
@@fullstackguy спасибо, просто я несоклько раз создавал мавен квик старт и у меня нет помника, а вставить его неоткуда(
@@MrAPPOLON123 Вадим, приветствую! Как и говорил ранее - вот обновлённая статья о создании стартеров в Spring Boot 3: fullstackguy.ru/blog/2024/04/08/how-to-make-spring-boot-3-starter/ А также - репозиторий с примером на GitHub, для Вашего удоства: github.com/anverbogatov/spring-boot-3-starter-demo Если будут ещё вопросы - смело обращайся в моей группе ВК - vk.com/fullstackguy Помогу, расскажу, разберу. Хорошего вечера! 👋
@@fullstackguy приветствую , попробовал сделать точно так же как в вашей новой статье, всё написал, установил зависимость этого стартера в свой проект, я даже вижу в External libraries классы стартера которые я писал, но оно как будто не импортируется com.example.weather_spring_boot_starter.service.WeatherService weatherService; светится красным и класс не доступен, что может быть не так?
А можете залить на гитхаб проекты и дать ссылку? Попробую помочь
а как сделать СР систему, по идее, если какой-то узел выходит из строя или между узлами прерывается связь, то пользователям вообще должно быть запрещено взаимодействие с любым из узлов пока не устранится проблема?
Михаил, Вы все верно поняли. CP системы должны быть согласованы в любой момент времени. Это значит, что пока, например, запись данных не завершиться на всех узлах системы, система не вернет ответ пользователю и он будет ждать. Если запись на один или несколько узлов не удалась, происходит откат везде и сразу (пример: двухфазный коммит). Примером CP систем является Redis, например
Крайне понятное и лаконичное объяснение темы. Один из лучших ресурсов про САР, что я видел. Большое вам спасибо!
Большое спасибо Вам, Егор, за теплые слова! 🤝
Consistency (согласованность) - это свойство, которое говорит, что система имеет согласованное состояние. Ага. Не поспоришь.
Учился у лучших! От создателей «это вам не это» и «не только лишь все» 😀
Хорошее объяснение. Благодаря видео и статье понял для чего и как делать стартеры. Для spring boot 3 вместо файла spring.factories нужен файл org.springframework.boot.autoconfigure.AutoConfiguration.imports.
Рад, что материал пригодился! 🤝
Хорошее видео, спасибо. У меня возник вопрос. А могу ли я в кастомном стартере использовать классы и пакеты основного проекта? Например, я хочу в кастомном стартере через аспект логгировать все методы в сервисах основного проекта. Мне для этого надо подключить основной проект в кастомный стартер?
Илья, спасибо за интересный вопрос! Если честно, Я - не уверен, что так можно. Если стартер будет зависеть от классов проекта, а проект, затем от стартера, то у нас, технически, будет циклическая зависимость. Не буду гадать, как в этом случае себя поведут системы сборки. Однако, в Вашем сценарии есть нарушение самой сути стартеров. Дело в том, что стартер, подразумевает наличие общего кода или функционала, который, как строительные кубики, можно взять и переиспользовать в разных сервисах. Если Вы "завязываете" стартер на конкретном проекте, то зачем вообще, в таком случае, использовать стартер? Разместите общую логику в самом проекте, и не будет никаких проблем. Как правильно, на мой взгляд, разрешить Ваш сценарий с кастомным стартером? Добавить отдельную аннотацию (например, @Logged), и реализовать в стартере её обработку - логгировать вызовы всех методов, отмеченных этой аннотацией. Ну, а затем, в проекте, подключить стартер, раскидать использование аннотации и готово. Ну и наконец, о логгировании - на всякий случай тоже скажу, логгировать ВСЁ - очень плохой вариант. 1) тупо вызовы методов не дадут читающему быстрого понимания что происходит. Это слишком техническая информация. 2) на высоконагруженных сервисах, подобный подход к логгированию быстро "забьёт эфир". А дальше, либо система логгирования откажет, либо будет очень сильно оставать. На мой взгляд, логгировать нужно с умом - добавлять то, что действительно нужно, и исключать то, что не нужно. Как это сделать? Каждый раз, когда будете добавлять вызов логгера, задайте себе вопрос - если система откажет, поможет ли информация в логе понять, что произошло. Будет ли информация в логе давать дополнительный контекст или она бесполезна. Надеюсь информация выше Вас, Илья, не перегрузился. Если будут ещё вопросы - обращайтесь 🤝
@@fullstackguy ничего себе, какой развёрнутый ответ, спасибо. Сделал так, как вы сказали через аннотацию, всё получилось Информация для меня, вкатыша, очень полезная, спасибо вам огромное, обязательно запомню. На самом деле у меня появился еще вопрос) Допустим, я пометил аннотацией из кастомного стартера методы, которые хочу логгировать. Могу ли я сделать так, чтобы этот стартер работал только при указании, например @EnableLoggedConfig, в основном проекте в классе, где @SpringBootApplication. Если @EnableXXX не указана, то аннотации @Logged над классами основного модуля просто игнорируются Я уже прописал в кастомном стартере аннотацию @EnableLoggedConfig с @Import(CustomLoggedConfig.class), но всё равно указание аннотации ни на что не влияет, в любом случае стартер отрабатывает. Может знаете какие-нибудь источники? Не хочу вас нагружать вопросами, но вы сами сказали "если будут вопросы - задавайте"))
Хороший канал, жаль новые видео редко выходят
Просто автор чуть чуть лентяй 😅
Не всегда каждый символ 2 байта занимает. там флажок есть isLatin, если он true (т.е. если только ASCII символы), то тогда один байт.
Очень интересно! Спасибо! Лайк-подписка всё такое.
Все бы так сразу! 😂 Рад, что видео оказалось полезным! 🤝
Очень понятно, с примерами и подробностями. Спасибо!
Пожалуйста! Рад, что видео оказалось полезным! 🤝
процентов на 90 работает. остальное допилить напильником
По-моему Вы нередко меняли местами Injection и Inversion. Подразумевали-то одно, но вместо внедрения по контексту речь шла о инверсии.
Простите, не очень понимаю. Кто мешает залезть в pom-файл в редакторе и изменить номер версии? Зачем таким извращённым способом его менять? Есть гипотеза у меня, что это на случай сильно автоматизированной сборки, когда Мавен из Дженкинса, к примеру, запускают. Верно ли понял? Всё равно это кажется неким извращением - с помощью плагина редактировать Pom.xml. Отредактировав, надо ведь закоммитить, не правда ли? Закоммитив, запушить. И всё это тоже с помощью плагинов делают? А если кормит или пуш не проходят, то вся сборка ломается. Не логичнее ли выставлять версии, коммитить и пушить руками?
Дмитрий, спасибо за классный вопрос! Нет ничего криминального в том, чтобы идти в pom файл и редактировать номер версии руками. Действительно, все эти подходы с плагинами гораздо сложнее. И особенно это так - если версионирование проекта не важно. НО - для случаев, когда версионирование важно, давайте попробуем проскалировать подход с ручным редактированием версии. В случае, когда есть один разработчик на проекте - он отвечает за смену версии. Когда потребуется он пойдёт и обновит версию в pom-файле. Когда разработчиков в команде больше одного - потребуется определить кто и когда будет обновлять версию. Уже на этом этапе нужно будет менять процесс разработки - договариваться об условиях и ответственности. Идём дальше - если у нас монолит и его редактирует множество разработчиков из разных команд - договориться о правилах уже вряд ли получиться. Поэтому точно потребуется изменение процесса разработки - выделение релиз-инженера, например. Из примеров выше, Вы можете заметить всё возрастающую сложность версионирования проекта с изменением условий (масштабов) разработки. И вот для подобных случаев и нужны подходы, подобные описанному в моём ролике. Далее, как Вы верно подметили - коммит с новой сборкой, в случае использования плагинов, должен кем-то где-то делаться. Обычно, в командах разработки решается вопрос о том, а что такое "новая версия" - это каждое изменение вмёрженное в какую-то ветку (будь то master, или release-ветка) или же это целый кластер изменений. И в зависимости от выбора - добавляется шаг обновления версии в проекте в тот или иной этап pipeline'а на CI. Ну и конкретно про CI - действительно, если инкремент версии в CI будет провален, то весь процесс сборки будет провален. И на самом деле - это хорошо. И вот почему - после успешной сборки, зачастую, собранный артифкат публикуется где-то (nexus, артифактори и т.д.) где он становится доступен под какой-то версией. Соответсвенно - не получилось инкрементировать версию - нет артифакта в nexus. То есть - смена версии в pom, по хорошему, должна стать частью процесса сборки. У такого автоматизированного подхода есть ещё плюсы: - в автоматизацию достаточно заложить правила инкремента версии (commit hash, semver и т.д.) и автоматически все команды разработки ему следуют - разработчики концентрируются на выполнении бизнес-задач, не тратя когнитивный ресурс на процесс выпуска очередной версии ну и наконец, практика авто-обновления версии довольно распространена. Я рассказал лишь об одном. В gradle есть свои плагины - например - github.com/ajoberstar/reckon Ещё раз - спасибо за хороший вопрос. Мне понравилось на него отвечать! С наступающим Новым Годом! 🤝
@@fullstackguy Анвер, благодарю вас за скорый, развёрнутый и доброжелательеый ответ! И вас с наступающим Новым Годом!
Ссылка на статью not found
Спасибо за наводку. Ссылку обновил 🤝
Thanks a lot, it was very helpful
I’m happy that it was useful for you 🤝
Спасибо тебе большое! Выручило твое видео!
Пожалуйста! Рад, что помог! 🤝
Очень познавательно и интересно, спасибо больше за столь информативное видео
Спасибо за добрые слова! Рад, что видео оказалось полезным! 🤝
Спасибо!
Добрый день, в версии Homebrew 4.1.7-56-gfc72dfc Homebrew/homebrew-cask (git revision 8cd3ca9a48; last commit 2023-08-15) brew upgrade --cask обновляет каски 🙂
Ура! Наконец-то дождались!! 😂
Что за непонятная вырезка, вообще никакой пользы не несет, просто вырвано из контекста
так где ответ а главный вопрос, НАHУЯ она нужна? проще тупо с сайтов качать у устанавливать нежели дрочиться с этим брю, еще и команды запоминать под эту дрочку
Классное видео!! Круто было бы увидеть как в новом Буте это делать вроде как уже factories не нужны
Как нибудь сделаю! Спасибо за теплые слова 🤝
Как же четко и круто всё объяснили 🔥
Рад, что понравилось! 🤝
Это мега круто
Спасибо! Рад что материал оказался полезным! 🤝
Спасибо автору за такой полезный контент! То,что нужно👍🔥
Топчик, однозначно👍
Спасибо, автору! Просто, доступно и и без лишней воды 🔥🔥🔥
Этот плагин у меня показывает неиспользуемые зависимости хотя по факту они используются в проекте. После их удаления билд естественно падает
подобные плагины отлично работают на прямых зависимостях, и почти всегда "с особенностями" на транзитивных зависимостях. Боюсь что с этим серебрянной пули нет.
Ночью белый экран в глаза ммм
Ночью, примерно с 23:00, в организме происходит выработка мелатонина. Под действием этого гормона наш организм производит самообслуживание - регулирует свою работу и выносит мусор. Белый экран в глаза - это не удобство. Не спать ночью - урон своему организму. Задумайтесь.
@@fullstackguy Это чего, нейросеть прикручена для ответов?))
@@user-fr2dw3qd4v Это я козырнул корочками нутрициолога. Не зря ж получал)))
А что с сайтом?(( Хотел статью почитать...
Спасибо что обратили моё внимание! 🤝 Забыл обновить ссылку. Вот правильная: fullstackguy.anverbogatov.ru/cap-theorem/
@@fullstackguy Супер! Спасибо!
Очень хорошо подан материал!
Михаил, большое спасибо за отзыв! Я рад что моя работа оказалась полезной! 🤝
Класс! Спасибо! Но есть пара вопросов: взаимодействие версии спринга в стартере и в приложении (могу ли я использовать свой стартер в приложениях с другой версией спринга и на что нужно обратить внимание). То же самое с версией java. То же самое о различии версий зависимостей
Константин, отличный вопрос! К сожалению, мажорные версии спринга обратной совместимости не имеют, поэтому использование разных версий в приложении и в стартере могут привести к конфликтам. Что делать в этом случае? Мигрировать приложение и стартер на одну версию.
хотел уточнить по поводу партишн толеранс, в примере был запрос на один сервер, где мы обновили данные, потом идет запрос на чтение данных со второго сервера, и получает старые данные) так и в чем тут суть?) я туповат, признаюсь, не стыдно) суть в том, что второй сервер вместо того, чтоб отвалиться и сказать, что я не дам тебе данные, потому что я не общаюсь с первым сервером, просто возвращает старые данные?
Вы всё верно поняли: если у вас нарушен механизм общения между двумя серверами или кластерами, но вы всё еще хотите получать со всех них данные, то должны мириться с тем, что данные будут неконсистенты. Если же вы хотите консистентные данные, то должны попрощаться с partition tolerance и получать данные только с того сервера, где они последней версии, либо попрощаться с availability и ждать, пока связь между двумя частями (в данном случае) восстановится и целостность данных восстановится. Всё куда проблемней, если у вас кластеров несколько и на одном одни данные свежие, а на другом другие :) Поэтому в некоторых системах никуда не уйти от одного класса, в других от другого. Скажем, если вы закинули в корзинку товар, которого уже нет, это, хоть и нехорошо, но допустимо, однако он на чекауте уже должен быть обязательно недоступен. Можете посмотреть еще что такое eventually consistent, тоже интересно и полезно в этом свете. Также, отсюда вырастает еще один серьезный класс проблем: т.н. "split brain", с которым тоже надо знать, как бороться.
Как всё медленно, скорость 1.5 выручает
Целью этого канала Я ставлю просвещение. А сложные знания, вроде этих, торопежки не терпят.
Для меня скорость вполне комфортная. Есть возможность обдумать сказанное