Spring Boot в технологической практике Lianjiawang

Spring Boot Микросервисы Spring Tomcat
Spring Boot в технологической практике Lianjiawang


Источник контента:6 мая 2017 года Тяньлян Ченг, архитектор Lianjia.com, выступил с речью на тему «Практика Spring Boot на Lianjia.com» на «Салон технологий сообщества Spring Cloud China Community Technology Salon-Beijing Station». IT big coffee сообщил, что как эксклюзивный видео-партнер, он был выпущен с разрешения организатора и спикера.

Количество слов для чтения:2133 | 5 минут чтения

Гостевое PPT и речевое видео:t.cn/Rp022Hh

Резюме

SpringBoot — это новая платформа, предоставленная командой Pivotal, предназначенная для упрощения первоначальной настройки и разработки новых приложений Spring. Фреймворк использует особый способ настройки, поэтому разработчикам больше не нужно определять шаблонную конфигурацию. Таким образом, Boot стремится стать лидером в развивающейся области быстрой разработки приложений.

Практика весенней загрузки

Что такое Spring Boot?

Spring Boot — это фреймворк, основанный на экологии Spring 4 и выше, фреймворк, который оптимизирует и упрощает разработку Spring, а также фреймворк начального уровня для микросервисов.

SpringBoot в основном упрощает разработку, а также изменяет традиционный метод веб-развертывания.Некоторые контейнеры являются встроенными, что делает наше развертывание и работу более удобными, и их можно запускать через пакет jar. Он также обеспечивает автоматическую настройку, чтобы упростить разработку. Spring Boot поставляется с внутрипроцессным мониторингом и инкапсуляцией JMX, так что мы можем связать информацию внутри процесса с платформой мониторинга и можем управлять более внутренними ситуациями программного процесса. Поскольку Spring Boot уже имеет встроенный веб-контейнер, пакет WAR больше не нужен.


Технология стратегии платформы Lianjia.com в основном связана с направлением данных платформы и интеллектуальным анализом данных, поэтому в основном это некоторые услуги.

Как показано на рисунке, на верхнем уровне находится шлюз API, который используется для подключения следующих сервисов, обеспечения преобразования API, отличных от серии Java, и распределения маршрутизации API и т. д. Для Java мы предоставляем сервис SDK.

Средний уровень — это в основном некоторые базовые сервисные платформы в бизнесе. Есть RDC как поставщики услуг, в основном в форме dubbo. В процессе мы сделали настройку и реестр. На протяжении всего процесса у нас есть мониторинг в процессе и сервисный мониторинг. Поскольку мы работаем над базовой платформой, нам также нужно провести несколько экспериментов с публикацией в градациях серого и трафиком, поэтому у нас будет платформа для экспериментов с трафиком. Эти платформы изначально были основаны на Spring, и теперь мы изменили его, чтобы переделать эти сервисы на основе Spring Boot.

Внизу находится поток реализации данных и поток вычислений в реальном времени.

Проблемы, возникшие при разработке отдела стратегии платформы Lianjiawang

Конфигурация службы сложная. Есть много базовых сервисов, и конфигурация ресурсов сервисов сложна. Управление услугами традиционным способом является сложным.

Вызовы между службами сложны. Службы поиска, службы пользовательского центра и т. д., вызовы между ними сложны, и существует множество зависимостей, требующих микрослужб.

Мониторинг обслуживания затруднен. Сервисов много, а развертывание машины сложное, особенно важно следить за выживаемостью сервисов и за тем, чтобы бизнес был в норме.

Проблемы с тестированием обслуживания. Зависимости сервисов относительно велики, и для тестирования небольшой функции также необходимо запустить окружающие сервисы.


Spring Boot централизует беспорядочную конфигурацию. Традиционный Spring настраивается в XML, и трудно разделить контейнерную и бизнес-конфигурацию. После использования Spring Boot вы можете разделить эти две части и настроить внедрение контейнера с помощью метода Spring4 Java Config.

Бизнес-конфигурацией, связанной с бизнесом, можно управлять через yml, свойства и т. д.

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


Так формируется путь, показанный на рисунке выше. У нас есть конфигурация ресурсов или реестр, а платформа поиска, платформа интеллектуального анализа данных и пользовательский центр зависят от реестра и нескольких локальных файлов конфигурации.

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

Решите проблему низкой пропускной способности однопроцессного мультиприложения

Одно приложение и одна обработка с использованием режима толстой банки Spring Boot для встраивания tomcat и других контейнеров.

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

Управление услугами стало более понятным, а проект упаковки — более упорядоченным.

Сервис встроен в tomcat, что упрощает управление процессом и автоматизацию тестирования.


Традиционный метод очень сложен из-за XML, различных зависимостей Spring, зависимостей SDK и т. д., а контроль версий и зависимости версий подвержены проблемам, что приводит к сложному управлению единым входом или разрешениями. Мы помещаем его информацию о конфигурации в центр конфигурации, расширяя Spring, и нам нужен только адрес центра конфигурации. Добавьте несколько локальных конфигураций, которые не сильно изменятся, и, наконец, выполните SSO/User-starter. Это позволяет очень легко интегрировать наш пользовательский центр и систему разрешений, значительно снижает затраты на пользовательский доступ, необходимый для всех систем нашего Lianjia.com, а затраты на отладку будут очень низкими.


Все наши сервисы ранее использовали dubbo или какие-то RPC, написанные самим нативом, в ходе этого процесса мы также трансформировали dubbo через Spring Boot.

Что касается синтаксического анализа конфигурации dubbo, на основе исходного синтаксического анализа конфигурации SpringXML добавлены Spring Config Parser и Spring Boot Start. К протоколу передачи добавляются два протокола, restful и Restful. После трансформации нужна только одна конфигурация реестра + аннотация при написании сервисов.

Управление микросервисами

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

В основном мы делаем некоторые сервисные шлюзы API, встроенный администратор dubbo, добавляем в модуль отслеживание цепочки вызовов, запросы и диагностику, а также добавляем внутренний мониторинг сервисов на основе Spring Boot Actutor. Jolokia также интегрирована для улучшения мониторинга и контроля JMX.

Трудности и вызовы

Проблемы с онлайн-эксплуатацией и обслуживанием

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

Теперь после преобразования Spring Boot у каждого приложения есть свой Tomcat, поэтому конфигурация Tomcat должна быть доставлена ​​в приложение. Если нет спецификации программирования и спецификации конфигурации, конфигурация каждого приложения может быть не квалифицирована, и возникнут некоторые риски безопасности.

В этом случае необходимо сделать некоторые спецификации кодирования и спецификации конфигурации, снова удалить информацию, относящуюся к Tomcat, и передать ее в центр конфигурации для запуска.

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

проблема кодирования

Читать код сложнее: запись кода более скрыта, а логика не так понятна, как web.xml и spring xml. Требуются более высокие требования к программированию.

Увеличение затрат на обучение. Новые технологии требуют затрат на обучение. Начать работу со Spring Boot просто, а его использование или расширение требует более глубокого изучения или изучения исходного кода.

Фреймворк микросервисов начального уровня: Spring Boot в основном переупаковывает Spring, чтобы решить проблему простоты использования Spring. Чтобы Spring Boot выполнял микросервисы, ему также необходимо обогатить окружение.

На этом мы заканчиваем сегодняшнюю беседу, всем спасибо!