Предшественником микросервиса lamp-cloud является zuihou-admin-cloud. Начиная с версии 3.0.0 он был переименован в lamp-cloud. Он является участником проекта lamp.
Микросервисный каркас lamp-cloud представляет собой микросервисный каркас SaaS на базе SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE). Он имеет унифицированную систему управления фоном авторизации и аутентификации, которая включает в себя управление пользователями, управление разрешениями на ресурсы, шлюз. Множественные модули, такие как API, распределенные транзакции и возобновление фрагментации больших точек останова в файлах, поддерживают параллельную разработку мультибизнес-систем и могут использоваться в качестве основы разработки для серверных служб. Код краток, структура понятна, подходит для изучения и непосредственного использования в проектах. Основная технология использует основные платформы и промежуточное программное обеспечение, такое как Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis и RiadfdsitMQ.
функция поддержки микросервиса lamp-cloud
1. Регистрация, обнаружение и вызов службы.
Регистрация и обнаружение сервисов на основе Nacos, используя Feign для реализации интермодуляции сервисов, позволяют добиться того же опыта кодирования, что и вызов локальных методов при использовании HTTP-запросов для удаленных вызовов. Разработчики совершенно не подозревают, что это удаленный метод, и даже более того. Это не так. понял, что это HTTP-запрос.
2. Аутентификация службы:
Используйте JWT, чтобы усилить проверку разрешений для планирования между службами и обеспечить безопасность внутренних служб.
3. Балансировка нагрузки
Остальное, остающееся у службы, используется для управления прокси-сервером и шлюзом. В дополнение к часто используемым node.js и nginx, zuul и riadfdson из серии Spring Cloud могут помочь нам выполнить обычное управление шлюзом и балансировку нагрузки. Среди них расширения и ссылки из зарубежных проектов основаны на плагине ограничения тока JWT Zuul, ограничивающем ток.
4. Механизм предохранителя
Из-за распределения сервисов, чтобы избежать «лавины» вызовов между сервисами, Hystrix используется в качестве предохранителя, чтобы избежать «лавины» вызовов между сервисами.
5. Мониторинг
Используйте Spring Boot Admin для мониторинга рабочего состояния каждой независимой службы; используйте турбину для просмотра рабочего состояния и частоты вызовов интерфейса в режиме реального времени; используйте Zipkin для просмотра цепочки вызовов между каждой службой и т. д.
6. Мониторинг вызовов по ссылке
Используйте Zipkin для реализации полноканального мониторинга производительности микросервисов, отображения различных показателей от общего измерения до локального измерения, а также централизованного отображения всей информации о производительности цепочки вызовов в приложениях, что позволяет легко измерять общую и локальную производительность и легко находить источник данных. неисправности, что может значительно сократить время устранения неполадок на производстве. С его помощью мы можем сделать
Отслеживание ссылок и быстрое обнаружение неисправностей. Информацию об ошибках можно быстро найти через цепочку вызовов в сочетании с бизнес-журналами. Визуализация: каждый этап требует времени и проводится анализ производительности. Оптимизация зависимостей: доступность каждого канала вызова, сортировка зависимостей сервисов и оптимизация. Анализ данных, оптимизация ссылок: можно получить пути поведения пользователей, а сводный анализ применяется во многих бизнес-сценариях.
7. Разрешения на данные
Реализация простых прав доступа к данным с помощью перехватчика DataScopeInterceptor на базе Mybatis.
8. SaaS (мультиарендное) неинтрузивное решение
Используйте перехватчик Mybatis для перехвата всего SQL и изменения схемы по умолчанию для достижения мультитенантной изоляции данных. И поддерживает возможность подключения.
9. Кэш второго уровня
J2Cache используется для управления кешем. Кэш первого уровня использует память (Caffeine), а кеш второго уровня использует Redis. Поскольку большое количество операций чтения кэша приведет к тому, что сеть L2 станет узким местом всей системы, цель L1 — уменьшить количество операций чтения до L2. Эта платформа кэширования в основном используется в кластерных средах. Его также можно использовать на одном компьютере, чтобы избежать влияния на серверную часть бизнеса после холодного запуска кэша, вызванного перезапуском приложения.
10. Элегантное преобразование Bean
Используйте компоненты Dozer для оптимизации и преобразования DTO, DO, PO и других объектов.
11. Проверка единой формы на передней и задней частях
Строгая проверка формы обычно требует одновременной проверки внешнего и внутреннего интерфейса. Однако в традиционных проектах внешний и внешний интерфейс можно тестировать только один раз. Если позже правила будут изменены, интерфейсная часть. и серверная часть должна быть изменена одновременно. Таким образом, начальная зависимость zuihou-validator-starter инкапсулируется на основе hibernate-validator, предоставляя общий интерфейс для получения правил, которые необходимо проверить. Затем интерфейсная часть использует правила, возвращаемые серверной частью. Если правила изменятся в будущем, понадобится только серверная часть. Просто измените ее.
12. Предотвращение атак с использованием межсайтовых сценариев (XSS)
Используйте фильтры для фильтрации параметров формы во всех запросах.
Фильтрация всех параметров типа приложения/json через десериализатор Json
13. Инжектор информации о текущем вошедшем в систему пользователе.
Внедрение идентификационных данных пользователя посредством аннотаций
14. Онлайн API
Поскольку некоторые функции встроенного swagger-ui недостаточно дружелюбны, мы приняли отечественный swagger-bootstrap-ui с открытым исходным кодом и создали статер для облегчения работы пользователей Springboot.
15. Генератор кода
Набор генераторов кода настраивается на основе Mybatis-plus-generator. Настраивая аннотации полей базы данных, он автоматически генерирует классы перечисления, аннотации словаря данных, SaveDTO, UpdateDTO, аннотации правил проверки формы, аннотации Swagger и т. д.
16. Планировщик запланированных задач
Улучшения функций на основе xxl-заданий. (Например: отправка задач в указанное время, объединение проектов с исполнителями и планировщиками, несколько источников данных)
17. Загрузка большого файла/точки останова/фрагментированного резюме
Интерфейсная часть использует webupload.js, а серверная часть использует NIO для реализации фрагментированной загрузки больших файлов с помощью точек останова. После запуска служб Eureka, Zuul и File вы можете напрямую открыть docs/chunkUploadDemo/demo.html для тестирования. После тестирования максимальный объем памяти локального стека составляет 128 МБ для запуска файловой службы, а большой файл размером 4,6 ГБ + может быть успешно загружен в течение 5 минут. Официальное время обслуживания будет зависеть от пропускной способности пользователя и пропускной способности сервера, и оно будет зависеть. занять много времени.
18. Распределенные транзакции
Интегрированное с промежуточным программным обеспечением распределенных транзакций Alibaba: Seata, оно решает проблемы распределенных транзакций, возникающие в сценариях микросервисов, эффективным и неинвазивным способом.
19. Кросс-таблица, кросс-база данных и автоматический инжектор данных, связанных с кросс-сервисами.
Он используется для решения проблемы повторного отображения связанных данных атрибутов межтабличных, межбазовых данных, данных подкачки между службами или атрибутов одного объекта. Он поддерживает автоматическое внедрение атрибутов статических данных (словаря данных) и динамического первичного ключа. данные.
20. Версия в оттенках серого
Чтобы решить проблему частого онлайн-обновления служб, отката, быстрой итерации и совместной разработки внутри компании, в этом проекте используется модифицированная стратегия балансировки нагрузки riadfdson для достижения выпуска в оттенках серого.
журнал обновлений lamp-cloud
v3.5.5
рефакторить
lamp-cloud: настройте порядок выполнения TraceFilter, чтобы другие фильтры шлюза могли записывать информацию журнала.
lamp-cloud: оптимизация RouterMeta и поддержка пользовательских ключей интерфейса.
lamp-cloud: оптимизация регионального интерфейса сканирования. Проблема с искажением данных при сканировании.
lamp-cloud: оптимизация регионального интерфейса сканирования не позволяет сканировать данные для округов ниже города.
lamp-cloud: добавлен метод addChildren к базовому объекту древовидной структуры.
lamp-cloud: оптимизируйте структуру агрегации Swagger, чтобы игнорировать службу веб-сокетов.
исправить
lamp-util: если параметр заголовка запроса содержит китайский язык, асинхронный вызов feign сообщает об ошибке.
lamp-cloud: исправлена ошибка, из-за которой древовидная структура не могла получить правильную иерархическую структуру сращивания.
lamp-web-plus: исправлена ошибка, вызванная фиксированной высотой страницы дерева.
lamp-web-plus: решена проблема раскрывающегося списка компонента TableAction, из-за которой разделительная линия отображается неправильно из-за разрешений.
lamp-web-plus: исправлена проблема, из-за которой данные со страницы списка переносились на страницу редактирования и данные случайно изменялись.