Cola Cloud — это платформа для разработки корпоративных приложений на основе микросервисной архитектуры, построенная на Spring Boot и Spring Cloud. Платформа включает в себя OAuth2 аутентификацию, аутентификацию по SMS, управление версиями базы данных с помощью FlyWay, агрегацию документации API всех сервисов через шлюз с использованием Swagger. Интеграция с SpringBootAdmin для мониторинга Hystrix и Turbine. Разработаны модули для пользовательского центра, управления правами доступа, организационной структуры, справочников данных, центра сообщений и уведомлений.
Проектное имя | Номер | Название | Описание |
---|---|---|---|
cola-cloud-auth | auth-service | Сервис аутентификации | Основан на SpringSecurity для обеспечения безопасности, использует систему аутентификации OAuth2.0 для аутентификации клиентов и пользователей, поддерживает вход по логину и паролю, а также по SMS-коду |
cola-cloud-config | config | Сервис конфигурации | Основан на Spring Cloud для создания единой службы конфигурации, отвечающей за управление конфигурационными файлами всех сервисов |
cola-cloud-devtools | - | Инструменты разработки | Генератор кода Cola |
cola-cloud-gateway | gateway | Шлюз сервисов | Основан на Zuul для создания шлюза сервисов, реализует статическую маршрутизацию |
cola-cloud-monitor | monitor | Мониторинг сервисов | Основан на Spring Boot Admin с интеграцией Turbine и Hystrix для мониторинга состояния приложений, трассировки вызовов сервисов и мониторинга срабатывания предохранителей |
cola-cloud-message | message | Центр уведомлений | Общая служба уведомлений, поддерживающая системные сообщения, SMS, электронную почту и push-уведомления |
cola-cloud-registry | registry | Регистрация сервисов | Основан на Eureka для создания центра регистрации сервисов, отвечающего за регистрацию и обнаружение сервисов |
cola-cloud-common | common-service | Базовый сервис | Агрегирует все общие службы платформы Cola |
cola-cloud-organization | organization-service | Организационная структура | Предоставляет услуги по управлению организационной структурой, сотрудниками и должностями |
cola-cloud-tenancy | tenancy-service | Сервис арендаторов | Предоставляет услуги по управлению арендаторами и их членами |
cola-cloud-uc | uc-service | Центр пользователей | Предоставляет услуги по управлению пользователями системы и их регистрацией |
cola-cloud-upm | upm-service | Сервис прав доступа | Предоставляет услуги по управлению ролями, ресурсами и авторизациями |
cola-cloud-notification | notification-service | Центр уведомлений | На основе RabbitMQ отправляет уведомления по SMS, электронной почте и через WebSocket |
git clone https://gitee.com/leecho/cola-cloud.git
Каждый сервис в Spring Cloud развертывается независимо, поэтому при вызовах между сервисами необходимо знать IP-адреса друг друга. Чтобы избежать необходимости изменения кода при изменении IP-адресов, необходимо настроить hosts:
# Центр регистрации и шлюз API
127.0.0.1 registry api-gateway
# Redis, RabbitMQ, MySQL
127.0.0.1 cola-redis cola-rabbitmq cola-mysql
Переменные окружения主要用于配置服务的访问用户名和密码:
// Конфигурационный сервер用户名
CONFIG_SERVER_USERNAME
// Конфигурационный сервер密码
CONFIG_SERVER_PASSWORD
// Регистрацион сервер用户名
REGISTRY_SERVER_USERNAME
// Регистрацион сервер密码
REGISTRY_SERVER_PASSWORD
// Мониторинг сервер用户名
MONITOR_SERVER_USERNAME
// Мониторинг сервер密码
MONITOR_SERVER_PASSWORD
// MYSQL用户名
MYSQL_SERVER_USERNAME
// MYSQL密码
MYSQL_SERVER_PASSWORD
// RabbitMQ用户名
RABBITMQ_SERVER_USERNAME
// RabbitMQ密码
RABBITMQ_SERVER_PASSWORD
// Redis用户名
REDIS_SERVER_USERNAME
// Redis密码
REDIS_SERVER_PASSWORD
Порядок запуска следующий: registry config auth-service uc-serivce upm-service organization-service gateway monitor
registry должен быть запущен первым, так как он предоставляет интерфейсы для регистрации других сервисов.
config запускается после registry, так как он отвечает за предоставление конфигурационной информации другим сервисам. Если config не запущен, другие сервисы не смогут стартовать.
Другие сервисы запускаются после config. При первом запуске проекта после запуска config следует запустить uc-service для инициализации данных.
gateway запускается последним. Если gateway запущен раньше других сервисов, он может не суметь проксировать запросы к другим сервисам, но перезапустится через некоторое время.
monitor можно запускать после config.
http://localhost:80/ — шлюз сервисов, здесь агрегированы все документации API сервисов Swagger
http://localhost:8761/ — центр регистрации, здесь можно просмотреть состояние регистрации сервисов
http://localhost:8080/ — центр мониторинга, здесь можно просмотреть состояние работы сервисов
curl -X POST \
http://api-gateway/uaa/oauth/token \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: 40aa591e-8518-4c1f-9e2d-f0c0e6151a40' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F username=admin \
-F password=111111 \
-F grant_type=password \
-F scope=ui
Spring Cloud Config отвечает за конфигурацию всех сервисов и может использовать локальные файлы, GIT и другие способы для хранения и распространения конфигурационных файлов.
Необходимо добавить зависимость spring-cloud-starter-config
в POM, согласно соглашению о настройках.
В проекте необходимо указать информацию о конфигурационной службе, например, адрес сервера конфигурации, имя пользователя и пароль для доступа. Это делается в файле bootstrap.yml
в директории resources:
spring:
application:
name: message-service
cloud:
config:
uri: http://config:8888
fail-fast: true
Конфигурация клиента Spring Security OAuth2:
security:
oauth2:
client:
clientId: server
clientSecret: server
accessTokenUri: http://auth-service:5000/uaa/oauth/token
grant-type: client_credentials
scope: server
@PreAuthorize("#oauth2.hasScope('server')")
@RequestMapping(value = "accounts/{name}", method = RequestMethod.GET)
public List<DataPoint> getStatisticsByAccountName(@PathVariable String name) {
return statisticsService.findByAccountName(name);
}
zuul:
routes:
message-service:
path: /notifications/**
serviceId: message-service
stripPrefix: false
spring:
application:
name: message-service
cola:
sms: # Конфигурация SMS
type: aliyun
aliyun:
access-key-id:
access-key-secret:
cola:
storage:
type: aliyun
oss:
access-key-id:
access-key-secret:
bucket-name:
endpoint:
QQ交流群:736697444
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )