<p align="center"><img src="./readme/new-logo.png" height="300" width="400" alt="logo"/></p>
<h2 align="center">Лаконично и элегантно · Стабильно и эффективно | Спокойствие и дальновидность · Стремление к совершенству</h2>
<h4 align="center">Корпоративная микросервисная архитектура на базе Spring Authorization Server с новой адаптацией протокола OAuth 2.1</h4>
---
<p align="center">
<a href="https://github.com/spring-projects/spring-authorization-server" target="_blank"><img src="https://img.shields.io/badge/Spring%20Authorization%20Server-1.3.3-blue.svg?logo=spring" alt="Spring Authorization Server 1.3.3"></a>
<a href="https://spring.io/projects/spring-boot" target="_blank"><img src="https://img.shields.io/badge/Spring%20Boot-3.3.6-blue.svg?logo=spring" alt="Spring Boot 3.3.6"></a>
<a href="https://spring.io/projects/spring-cloud" target="_blank"><img src="https://img.shields.io/badge/Spring%20Cloud-2023.0.3-blue.svg?logo=spring" alt="Spring Cloud 2023.0.3"></a>
<a href="https://github.com/alibaba/spring-cloud-alibaba" target="_blank"><img src="https://img.shields.io/badge/Spring%20Cloud%20Alibaba-2023.0.1.2-blue.svg?logo=alibabadotcom" alt="Spring Cloud Alibaba 2023.0.1.2"></a>
<a href="https://github.com/Tencent/spring-cloud-tencent" target="_blank"><img src="https://img.shields.io/badge/Spring%20Cloud%20Tencent-1.14.0--2023.0.0-blue.svg?logo=tencentqq" alt="Spring Cloud Tencent 1.14.0--2023.0.0-SNAPSHOT"></a>
<a href="https://nacos.io/zh-cn/index.html" target="_blank"><img src="https://img.shields.io/badge/Nacos-2.4.3-brightgreen.svg?logo=alibabadotcom" alt="Nacos 2.4.3"></a>
</p>
<p align="center">
<a href="#" target="_blank"><img src="https://img.shields.io/badge/Version-3.3.6.1-red.svg?logo=spring" alt="Version 3.3.6.1"></a>
<a href="https://www.herodotus.cn" target="_blank"><img src="https://img.shields.io/badge/Dante%20Engine-3.3.6.1-red.svg?logo=spring" alt="Dante Engine 3.3.6.1"></a>
<a href="https://gitee.com/herodotus/dante-oss" target="_blank"><img src="https://img.shields.io/badge/Dante%20OSS-3.3.6.1-red.svg?logo=spring" alt="Dante OSS 3.3.6.1"></a>
<a href="https://bell-sw.com/pages/downloads/#downloads" target="_blank"><img src="https://img.shields.io/badge/JDK-17%2B-green.svg?logo=openjdk" alt="Java 17"></a>
<a href="./LICENSE"><img src="https://shields.io/badge/License-Apache--2.0-blue.svg?logo=apache" alt="License Apache 2.0"></a>
<a href="https://www.herodotus.cn"><img src="https://visitor-badge.laobi.icu/badge?page_id=dante-cloud&title=Total%20Visits" alt="Total Visits"></a>
<a href="https://blog.csdn.net/Pointer_v" target="_blank"><img src="https://img.shields.io/badge/Author-%E7%A0%81%E5%8C%A0%E5%90%9B-orange" alt="码匠君"></a>
<a href="https://gitee.com/dromara/dante-cloud"><img src="https://img.shields.io/github/stars/dromara/dante-cloud?style=flat&logo=github" alt="Github star"></a>
<a href="https://gitee.com/dromara/dante-cloud"><img src="https://img.shields.io/github/forks/dromara/dante-cloud?style=flat&logo=github" alt="Github fork"></a>
<a href="https://gitee.com/dromara/dante-cloud"><img src="https://gitee.com/dromara/dante-cloud/badge/star.svg?theme=dark" alt="Gitee star"></a>
<a href="https://gitee.com/dromara/dante-cloud"><img src="https://gitee.com/dromara/dante-cloud/badge/fork.svg?theme=dark" alt="Gitee fork"></a>
</p>
<p align="center">
<a href="https://gitcode.com/dromara/dante-cloud">Gitcode репозиторий</a> |
<a href="https://github.com/dromara/dante-cloud">Github репозиторий</a> |
<a href="https://gitee.com/dromara/dante-cloud">Gitee репозиторий</a> |
<a href="https://www.herodotus.cn">Старая версия документации</a> |
<a href="https://www.herodotus.vip">Новая версия документации</a>
</p>
<h1 align="center"> Если вам это помогло, пожалуйста, поставьте «Star» в правом верхнем углу, спасибо!</h1>
---
## Корпоративная платформа для разработки и управления микросервисами и функциональностью сервисов
**Dante Cloud** — первая в Китае платформа микросервисов, поддерживающая параллельную работу блокирующих и реактивных сервисов. Она разработана на основе идеи **доменно-ориентированного проектирования (DDD)**, ориентирована на «**высококачественный код и низкую вероятность уязвимостей**», построена на принципах высокой модульности и компонентности с использованием открытых технологий экосистемы Spring, поддерживает аутентификацию устройств Интернета вещей, таких как интеллектуальные телевизоры, удовлетворяет требованиям безопасности **на государственном уровне трёх уровней защиты**, поддерживает шифрование и дешифрование интерфейсов национальной секретной цифровой подписи и другие системы безопасности. Это корпоративное прикладное решение, позволяющее реализовать как микросервисную архитектуру, так и архитектуру монолита с помощью «**одного набора кода**».
### Концепция
**Dante Cloud**
``` ### Бесперебойный переход и миграция OSS
- Разработанная на основе JetCache распределённая двухуровневая система кэширования идеально реализует вторичный кэш JPA Hibernate, поддерживает кэширование данных различных запросов, а также связанные запросы JPA `@ManyToMany`, `@ManyToOne` и т. д. Она отлично решает проблемы Spring Cache, связанные с использованием только локального кэша, сложным созданием ключей и невозможностью обновления данных постраничной навигации. Поддерживает синхронизацию данных локального и удалённого кэшей для сервисов с несколькими экземплярами, а также двухуровневое кэширование Mybatis Plus.
- Унифицированная обработка ошибок на платформе поддерживает систему пользовательских кодов ошибок, эффективно интегрирует системы ошибок OAuth2, Spring Validation и другие, органично объединяет HTTP-коды состояния. Используя режим Customizer, применяя автоматическое вычисление и генерацию кодов ошибок, поддерживая гибкое определение и расширение кодов ошибок на уровне модулей кода, можно получить более разнообразные и гибкие результаты ответов, более человекопонятные отклики, которые проще интерпретировать и локализовать проблемы.
- Полная интеграция OkHttp и HttpClient, реализация слияния OkHttp, HttpClient с RestTemplate и Openfeign. Использование единых параметров Feign для настройки OkHttp и HttpClient позволяет стратегически выбирать использование OkHttp или HttpClient в качестве унифицированного базового HttpClient для RestTemplate и Openfeign.
### 4. Реконструкция фронтенда с использованием pnpm monorepo
- Не использовались какие-либо популярные шаблоны с открытым исходным кодом, был создан совершенно новый технологический стек, полностью «с нуля» написан новый фронтенд.
- Вдохновляясь дизайном и использованием популярных открытых исходных кодов, новый интерфейс стремится соответствовать текущим трендам и привычкам пользователей.
- Активно используются возможности языка Typescript, решается множество проблем проверки типов, максимально избегается использование типа any в программировании на Typescript.
- При написании кода активно применяются новые возможности Vue3, такие как Composition Api и Hooks.
- Эффективно используются характеристики Component, Hooks и объектно-ориентированные особенности Typescript для извлечения общих компонентов и кода, что позволяет снизить дублирование кода в проекте.
- Инкапсулируются многие базовые компоненты и функциональные компоненты Quasar, чтобы облегчить унифицированное изменение, обслуживание и разработку кода.
- Для производственного режима проводится глубокая оптимизация производительности сборки проекта на базе Vite3.
- Предлагается использование docker-compose для контейнеризации и развёртывания производственного кода проекта.
- Данная версия основана на pnpm и использует режим monorepo для реконструкции фронтенда. Создание версии monorepo фронтенда служит основой для расширения дополнительных функций и добавления прикладных возможностей.
- Извлекаются общие модули, такие как utils, components, apis и bpmn-designer, формируя таким образом совместно используемые компоненты.
- Совместно используемые модули подвергаются оптимизации конфигурации и могут быть скомпилированы в независимые компоненты, которые затем публикуются отдельно в виде компонентов.
- Код поддерживается и разрабатывается отдельно для совместно используемых модулей, снижая сложность существующего кода проекта и облегчая расширение функциональности и повторное использование кода в будущем.
## [1] Открытый исходный код
### 1. Заявление об изменении
Начиная с версии **v3.3.6.0**, проекты с открытым исходным кодом Dante Cloud, Dante OSS и Dante Engine **навсегда** переходят на лицензию Apache Version 2.0. Лицензия позволяет использовать продукт в личных целях, включая обучение и дипломные работы, а также разрешает коммерческое применение, но запрещает вторичное открытие исходного кода.
### 2. Дополнительные положения
При использовании необходимо соблюдать следующие дополнительные условия:
- Запрещено применять данное программное обеспечение для действий, угрожающих национальной безопасности, чести и интересам, а также для любых незаконных целей.
- В расширенном коде (изменённом или производном от существующего исходного кода) требуется сохранение информации о лицензии, авторских правах и других указаниях оригинального автора (уважайте авторские права первоначального создателя, не удаляйте и не изменяйте информацию об авторских правах и @author в файлах). Кроме того, не заменяйте глобально упоминания Dante OSS, Herodotus или «Мастер» в исходном коде, иначе вы нарушите условия настоящего соглашения.
- Если вы используете части кода или функции данного программного обеспечения в качестве образца, сохраните авторские права и информацию об исходном файле в вашем программном обеспечении и укажите источник в очевидном месте, например: «Данное программное обеспечение основано на микросервисной архитектуре Dante Cloud» или «Dante OSS», и добавьте ссылку: https://www.herodotus.cn.
- Все юридические споры и ответственность, возникающие в связи с данным программным обеспечением, не имеют отношения к автору.
- Если у вас есть улучшения для данного программного обеспечения и вы хотите внести свой вклад, совместное развитие и взаимное достижение успеха — это путь к успеху.
- Данный проект подал заявку на авторское право на программное обеспечение, пожалуйста, уважайте открытый исходный код.
### 3. Важное замечание
В связи с частыми случаями изменения имён пакетов, удаления информации об авторских правах и вторичного открытия исходного кода, для защиты прав авторов Dante OSS и Dante Engine должны зарегистрировать свои заявки и после одобрения открыть исходный код, [【посмотреть подробности или зарегистрироваться】](https://gitee.com/dromara/dante-cloud/issues/IB5KL0).
## [2] Общая архитектура

### (1) Динамические разрешения на уровне метода

### (2) Вход в консоль Minio через Dante Cloud

### (3) Мониторинг цепочки вызовов службы

## [3] Описание функций
[【Подробности см. в онлайн-документации】](https://www.herodotus.vip/support/comparison.html)
## [4] Технические стеки и версии
### (1) Версии Spring Full Family и Core Technologies
| Компонент | Версия |
|:----------|:--------:|
| Spring Boot | 3.3.6 |
| Spring Cloud | 2023.0.3 |
| Spring Cloud Alibaba | 2023.0.1.2 |
| Spring Cloud Tencent | 1.14.0-2023.0.0 |
| Spring Authorization Server | 1.3.3 |
| Spring Boot Admin | 3.3.6 |
| Nacos | 2.4.3 |
| Sentinel | 1.8.8 |
| Seata | 1.7.0 |
> Соответствие версий Spring Full Family, см.: [Version Information](https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E).
### (2) Затронутые технологии:
- Постоянная структура: Spring Data Jpa & Mybatis Plus
- API Gateway: Spring Cloud Gateway
- Сервис регистрации и обнаружения, центр конфигурации: Alibaba Nacos, Tencent Polaris
- Потребление услуг: Spring Cloud OpenFeign, RestTemplate, OkHttps
- Балансировка нагрузки: Spring Cloud Loadbalancer
- Защита от перегрузки, понижение и ограничение потока: Alibaba Sentinel, Tencent Polaris
- Мониторинг услуг: Spring Boot Admin
- Очередь сообщений: используется Spring Cloud Bus, по умолчанию Kafka адаптируется под RabbitMQ
- Трассировка ссылок: Skywalking
- Распределённые транзакции: Seata
- Кэширование данных: JetCache (Redis + Caffeine) многоуровневое кэширование
- База данных: Postgresql, MySQL, Oracle ...
- Сериализация JSON: Jackson & FastJson
- Файловый сервис: Aliyun OSS/Minio
- Отладка данных: p6spy
- Центр журналов: ELK
- Сбор журналов: Logstash Logback Encoder
### (3) Фронтенд-технология
- Vue 3
- Vite 5
- Pinia
- Typescript 5
- Quasar 2
- Vue-Router 4
- Vueliate
## [5] Версии и ветки
### A. Объяснение номеров версий
Номер версии системы разделён на четыре сегмента:
- Первый и второй сегменты соответствуют версии Spring Boot и изменяются вместе с ней. Например, если используется версия Spring Boot 2.4.6, то номер версии начинается с 2.4.X.X.
- Третий сегмент указывает на изменения в функциях системы.
- Четвёртый сегмент отражает состояние обслуживания и оптимизации функциональных возможностей системы.
### B. Описание веток
| Название ветки | Соответствующая версия Spring | Соответствующая JDK версия | Назначение | Текущее состояние |
|-----------------|-----------------------------|-------------------------|-----------|------------------| |------------------------|-----------------------------------------|-----------|--------------------|-------------------------------------------------------------|
| master | Spring Boot 3.3 и Spring Cloud 2023.0.3 | JDK 17 | основная ветка выпуска | Рекомендуется использовать ветку кода |
| develop | Spring Boot 3.3 и Spring Cloud 2023.0.3 | JDK 17 | ветка разработки | Новые функции и исправления ошибок разрабатываются в этой ветке, после выпуска изменения будут перенесены в основную ветку. Ветка разработки не гарантирует стабильности |
| reactive-master | Spring Boot 3.3 и Spring Cloud 2023.0.3 | JDK 21 | основная ветка выпуска для реактивной версии | Рекомендуется использовать ветку кода |
| reactive-develop | Spring Boot 3.3 и Spring Cloud 2023.0.3 | JDK 21 | ветка разработки для реактивной версии | Следующая версия ветки разработки реактивных микросервисов. Ветка разработки не гарантирует стабильности |
| 3.1.X | Spring Boot 3.1 и Spring Cloud 2022.0.X | JDK 17 | исторический код, больше не поддерживается | Код, разработанный на основе Spring Boot 3.1, стабилен и больше не поддерживается |
| 2.7.X | Spring Boot 2.7 и Spring Cloud 2021.0.X | JDK 8 | исторический код, больше не поддерживается | Код, разработанный на основе Spring Boot 2.7, стабилен и больше не поддерживается |
| spring-security-oauth2 | Spring Boot 2.6 и Spring Cloud 2021.0.X | JDK 8 | исторический код, больше не поддерживается | Микросервисы, основанные на исходном Spring Security OAuth2, стабильны и больше не поддерживаются, так как связанные компоненты больше не обновляются |
## [6]、Инженерная структура
dante-cloud ├── configurations -- скрипты конфигурационных файлов и единый контекст сборки Docker ├── dependencies -- основные зависимости проекта Maven, централизованное управление версиями и зависимостями ├── module -- сборка зависимых компонентов │ ├── dante-module-common -- модуль общих вспомогательных кодов │ ├── dante-module-metadata -- модуль синхронизации метаданных разрешений │ ├── dante-module-social -- модуль социальной авторизации │ ├── dante-module-strategy -- модуль стратегии доступа к данным UAA │ └── dante-monomer-autoconfigure -- модуль автоматической настройки для мономерной версии ├── packages -- базовые ядра Starter │ ├── authorization-spring-boot-starter -- базовый стартер OAuth2 аутентификации, используется для сервера аутентификации UAA и мономерной версии Dante Cloud │ ├── facility-spring-boot-starter -- стартер переключения базовых инфраструктур │ └── service-spring-boot-starter -- универсальный стартер для сервисов платформы ├── platform -- ядро платформы услуг │ ├── dante-cloud-gateway -- сетевой шлюз услуг │ ├── dante-cloud-message -- сервис сообщений │ ├── dante-cloud-monitor -- мониторинг Spring Boot Admin │ ├── dante-cloud-upms -- система управления едиными разрешениями │ └── dante-cloud-uaa -- управление аккаунтами и единая аутентификация ├── services -- бизнес-сервисы платформы │ ├── dante-cloud-bpmn-ability -- сервисы рабочих процессов │ ├── dante-cloud-bpmn-logic -- пакет кода рабочих процессов │ ├── dante-cloud-oss-ability -- сервис объектного хранения └── └── dante-monomer-application -- модуль приложения мономерной версии Dante Cloud
## [7]、Адрес проекта
- Адрес основного бэкенд-проекта: [https://gitcode.com/dromara/dante-cloud](https://gitcode.com/dromara/dante-cloud)
- Адрес фронтенд-проекта: [https://gitcode.com/HerodotusSoftware/dante-cloud-ui](https://gitcode.com/HerodotusSoftware/dante-cloud-ui)
## [8]、Тестирование безопасности
Dante Cloud прошёл проверку безопасности, проведённую сторонними организациями, а также тестирование на соответствие требованиям. Подробности см.: [Описание тестирования безопасности](https://www.herodotus.vip/support/comparison.html#%E4%BA%8C-%E5%AE%89%E5%85%A8%E6%B5%8B%E8%AF%95)
## [9]、Участие в разработке
1. Fork проекта на Gitee в свой репозиторий.
2. Клонируй форкнутый проект в свою локальную директорию.
3. Измени код (не забудь изменить ветку develop).
4. Закоммити изменения и отправь их в свой репозиторий (в ветку develop).
5. На Gitee, на главной странице, увидишь кнопку pull request, нажми на неё, заполни описание и отправь запрос.
6. Ожидай слияния от сопровождающих.
## [10]、Как выполнить обновление
Старайся не изменять исходный код проектов, кроме Dante Cloud, например, Dante Engine, Dante OSS. Если изменения внесены, сделай pull requests. Иначе код может рассинхронизироваться с официальным, что усложнит будущие обновления.
Для каждой версии обновления мы предоставляем подробные журналы изменений: https://www.herodotus.cn/others/log/changelog.html. Здесь ты можешь увидеть, какие новые функции и улучшения были добавлены в Dante Cloud.
Для версий с большими изменениями и отличиями мы предоставляем детальные инструкции по обновлению: https://www.herodotus.cn/guide/get-start/notices.html. Здесь можно найти методы обновления для разных версий Dante Cloud.
## [11]、Обратная связь и общение
- См. раздел обратной связи в [онлайн-документации](https://www.herodotus.cn).
## [12]、Предварительный просмотр интерфейса
<table>
<tr>
<td><img src="./readme/ui1.png" alt="Интерфейс фронтенда 1"/></td>
<td><img src="./readme/ui2.png" alt="Интерфейс фронтенда 2"/></td>
<td><img src="./readme/ui3.png" alt="Интерфейс фронтенда 1"/></td>
</tr>
<tr>
<td><img src="./readme/ui6.png" alt="Интерфейс фронтенда 6"/></td>
<td><img src="./readme/ui7.png" alt="Интерфейс фронтенда 7"/></td>
<td><img src="./readme/ui8.png" alt="Интерфейс фронтенда 8"/></td>
</tr>
<tr>
<td><img src="./readme/ui4.jpg" alt="Интерфейс фронтенда 2"/></td>
<td><img src="./readme/ui5.jpg" alt="Интерфейс фронтенда 3"/></td>
<td><img src="./readme/oauth2-login1.png" alt="Пример эффекта OAuth2"/></td>
</tr>
<tr>
<td><img src="./readme/oauth2-login2.png" alt="Интерфейс фронтенда 3"/> ## [13]、Благодарности
### Список спонсоров
| № | Спонсор | Время поддержки | № | Спонсор | Время поддержки | № | Спонсор | Время поддержки |
|:--:|:------------------------------------------------------:|:---------------------:|:--:|:-------------------------------------------------:|:---------------------:|:--:|:-------------------------------------------:|:---------------------|
| 1 | Большое спасибо | 25.10.2021 | 2 | [Похититель картошки](https://gitee.com/dongzongyang) | 24.11.2021 | 3 | [lorron](https://gitee.com/lorron) | 04.04.2022 |
| 4 | В облаке | 26.12.2022 | 5 | [Сисяй](https://gitee.com/syllvin) | 27.12.2022 | 6 | [p911gt3rs](https://gitee.com/p911gt3rs) | 03.01.2023 |
| 7 | [jacsty](https://gitee.com/jacsty) | 31.01.2023 | 8 | [hubert_rust](https://gitee.com/hubert_rust) | 16.03.2023 | 9 | [Zkey Z](https://gitee.com/zkeyzvip) | 18.03.2023 |
| 10 | [Чжигоуоба](https://gitee.com/zzgf16) | 27.03.2023 | 11 | [michael](https://gitee.com/yiminyangguang) | 07.04.2023 | 12 | [Дядюшка, переулок](https://gitee.com/yushui_wang) | 11.04.2023 |
| 13 | [sun_left](https://gitee.com/sun_left) | 19.04.2023 | 14 | [time、sand](https://gitee.com/tzy15680905763) | 06.07.2023 | 15 | [Индеец-попугай](https://gitee.com/deadncut) | 09.09.2023 |
| 16 | Порыв ветра | 10.12.2023 | 17 | Джек | 01.03.2024 | 18 | [onehelper](https://gitee.com/onehelper) | 24.05.2024 |
| 19 | [Брат Нин](https://gitee.com/seabuckthorn-syrup) | 29.05.2024 | 20 | [cryptoneedle](https://gitee.com/cryptoneedle) | 01.11.2024 | 21 | | |
### Спасибо JetBrains за бесплатную лицензию с открытым исходным кодом

Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )