1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/noear-water

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Вода

一站式分布式服务治理中台。Простая работа, ранний уход с работы.

Java-сервис разработки и управления, предоставляющий комплексное решение (можно понимать как поддержку пакета микросервисной архитектуры). Разработан на основе фреймворка Solon и поддерживает полный стандарт Solon Cloud; работает в производственной среде уже 4 года.

Функции аналогичны: consul + rabbitmq + elk + prometheus + openFaas + quartz + и т. д., а также органично объединены. Или примерно равны: nacos + rocketmq + PlumeLog + prometheus + magic-api + xxl-job + и др.

Дружелюбен к k8s, поддерживает миграцию IP-адресов, поддерживает сопоставление k8s svc (через восходящую конфигурацию, можно напрямую сделать обнаружение службы как адрес службы k8s).

Начало

Понимание фреймворков и компонентов

Компонент Описание
org.noear:water.client Фреймворк: клиент Water
org.noear:water-solon-cloud-plugin Фреймворк: клиент Water for solon (также может использоваться для проектов Spring Boot)
org.noear:waterapi Сборка: сервер Water
org.noear:watersev Сборка: фоновый сервис Water (мониторинг работоспособности; мониторинг данных; рассылка сообщений; планирование задач и т.д.)
org.noear:wateradmin Сборка: консоль управления Water (поддерживает вход в систему LDAP)
org.noear:waterfaas Сборка: сервис FaaS Water, предоставляет облегчённые сервисы FaaS
org.noear:xwater Сборка: помощник Water

Консоль демонстрации станции

Адрес: http://water.noear.org (учётная запись: demo; пароль: demo)

Ключевое описание персистентности:

  • Персистентность журнала, поддержка: MySql, PostgreSQL, MongoDB, ElasticSearch, ClickHouse
  • Персистентность сообщений, поддержка: MySql, PostgreSQL, MongoDB

Ссылка на приложение

Адрес: https://gitee.com/noear/marsh

Видеоуроки

[Water Урок 1] Быстрое развёртывание с помощью docker-compose. Легко работать, рано уходить с работы:)

[Water Урок 2] Опыт разработки с использованием Solon Coud + Water

[Water Урок 3] Water — это комплексная платформа управления услугами, давайте узнаем больше

[Water Урок 4] Конфигурация приложений служб и ключевые дизайнерские идеи

[Water Урок 5] Применение сервиса журналов и дизайн лёгкого и быстрого клиента

[Water Урок 6] Применение общей шины сообщений и общий обзор внутренней архитектуры

[Water Урок 7] Практическое применение FaaS

[Water Урок 8] Мониторинг услуг и количественный мониторинг

[Water Урок 9] Управление несколькими учётными записями и настройка разрешений, а также конфигурация входа в систему LDAP

[Water Урок++] Развёртывание и запуск на основе исходного кода

(1) Использование

Конфигурация

  • pom.xml / mevan конфигурация
<!-- Клиентская версия -->
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>water.client</artifactId>
    <version>2.15.1</version>
</dependency>

<!-- Интеграция с Solon cloud (также можно использовать в проектах Spring Boot) -->
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>water-solon-cloud-plugin</artifactId>
    <version>3.0.3</version>
</dependency>
  • app.yml / конфигурация инструкции
solon.app:
  name: "wateradmin"
  group: "water"

solon.cloud.water:
  server: "waterapi:9371"           #WATER сервис адрес
  config:
    load: "test.yml"                #По умолчанию загруженная конфигурация
  log:
    default: "water_log_admin"      #По умолчанию регистратор

Код

public class DemoApp {
    public void
``` Данный текст написан на языке Java.

**main(String[] args)** {
    SolonApp app = Solon.start(DemoApp.class, args);

    // Мониторинг службы: добавление интерфейса для записи производительности (обычно этот фильтр записывается как отдельный класс)
    Logger log = LoggerFactory.getLogger(DemoApp.class);
    app.filter((ctx, chain) -> {
        // 1. Начало отсчёта времени (для расчёта продолжительности ответа)
        long start = System.currentTimeMillis();

        try {
            chain.doFilter(ctx);
        } catch (Throwable e) {
            // 2. Также регистрируем исключение
            log.error("{}",e);
        } finally {
            // 3. Получаем продолжительность ответа интерфейса
            long milliseconds = System.currentTimeMillis() - start;
            CloudClient.metric().addMeter(Solon.cfg().appName(), "path", ctx.pathNew(), milliseconds);
        }
    });
}

@Configuration
public class DemoConfig {

    @Bean
    public DataSource db1(@CloudConfig("demoDb") HikariDataSource ds) {
        // Конфигурирование источника данных
        return ds;
    }

    @Bean
    public I18nBundleFactory i18nBundleFactory(){
        // Переключение на облачный интерфейс для международных услуг
        return new CloudI18nBundleFactory();
    }
}

@Slf4j
@Controller
public class DemoController{
    @CloudConfig(name = "demoDb", autoRefreshed = true)  // Настройка функций сервиса (аннотированный режим)
    DbContext demoDb;

    @NamiClient            // Обнаружение RPC-сервиса (аннотированный режим)
    RockService rockService;
   
    @Mapping("/")
    public void test(){
        // Сервис журнала: запись журнала
        log.info("你好,日志服务"); //(content)
        TagsMDC.tag0("demo");
        log.error("{}\r\n{}","test","你好,日志 службы"); //(tag,summary,content)

        // Конфигурация сервиса: использование контекста базы данных конфигурации для запроса
        Map map = demoDb.table("water_reg_service").limit(1).selectMap("*");

        // Служба сообщений: отправка сообщения
        CloudClient.event().publish(new Event("demo.test", "{\"order_id\":1}")); //(非注解模式)

        // RPC-обнаружение сервиса: вызов RPC-интерфейса
        AppModel app = rockService.getAppById(12);
    }
}

// Подписка на сообщения: подписка и обработка сообщений (подписка по теме)
@Slf4j
@CloudEvent("demo.test")
public class Event_demo_test implements CloudEventHandler {
    @Override
    public boolean handle(Event event) throws Exception {
        // Обработка сообщения...
        log.info("Я получил сообщение: " + event.content());
        return true;
    }
}

// Конфигурация подписки: отслеживание обновлений конфигурации в реальном времени
@CloudConfig("demoDb")
public class TestConfigHandler implements CloudConfigHandler {
    @Override
    public void handle(Config config) {

    }
}

// Распределённая задача
@CloudJob(name = "demo_test", cron7x = "0 1 * * * ?")
public class Job_test implements CloudJobHandler {

    @Override
    public void handle(Context ctx) throws Throwable {
        // Выполнение задачи...
        log.info("Меня запланировали");
    }
} Функции вычисления

<img src="https://gitee.com/noear/water/raw/master/preview/f1.png" height="300"/>
<img src="https://gitee.com/noear/water/raw/master/preview/f2.png" height="300"/>
<img src="https://gitee.com/noear/water/raw/master/preview/f5.png" height="300"/>
<img src="https://gitee.com/noear/water/raw/master/preview/fx.png" height="300"/>  

Помощник в разработке

<img src="https://gitee.com/noear/water/raw/master/preview/h1.png" height="300"/>
<img src="https://gitee.com/noear/water/raw/master/preview/h2.png" height="300"/>
<img src="https://gitee.com/noear/water/raw/master/preview/h3.png" height="300"/>
<img src="https://gitee.com/noear/water/raw/master/preview/h4.png" height="300"/>

Введение

Комплексное решение для управления распределёнными сервисами. Можно рассматривать как набор инструментов для поддержки микросервисной архитектуры. Пять пакетов сервисов общим размером 40 МБ, что делает его сверхлёгким. Функционал включает: consul, rabbitmq, elk, prometheus, openFaas, quartz и другие компоненты, которые органично сочетаются друг ... Развернуть Свернуть
LGPL-2.1
Отмена

Обновления (10)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/noear-water.git
git@api.gitlife.ru:oschina-mirror/noear-water.git
oschina-mirror
noear-water
noear-water
master