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

OSCHINA-MIRROR/AhooWang-CoSky

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

CoSky Высокопроизводительная, низкозатратная платформа управления микросервисами (Открытие и конфигурация сервиса)

Лицензия GitHub релиз Maven Central Codacy Badge codecov Статус тестирования интеграции

Документация на китайском

CoSky — это легковесная, низкозатратная библиотека SDK для регистрации услуг, открытия и конфигурирования сервисов. Использует Redis в существующей инфраструктуре (вероятно, вы уже установили Redis), что позволяет избежать дополнительных затрат на эксплуатацию и обслуживание. Благодаря высокой производительности Redis, CoSky обеспечивает сверхвысокую скорость транзакций и запросов (более 100,000+ операций в секунду JMH Benchmark). CoSky использует стратегию кэширования процессов + Redis PubSub, чтобы обеспечить реальное время обновление кэша процессов с уникальной скоростью запросов (более 70,000,000+ операций в секунду JMH Benchmark) и реальную временную согласованность между кэшем процессов и Redis.

Открытие сервиса

CoSky-Discovery

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

CoSky-Configuration

Примеры

Примеры потребителя услуги --RPC--> поставщика услуги

Установка

Gradle

Kotlin DSL

val coskyVersion = "lastVersion";
implementation("me.ahoo.cosky:spring-cloud-starter-cosky-config:${coskyVersion}")
implementation("me.ahoo.cosky:spring-cloud-starter-cosky-discovery:${coskyVersion}")
implementation("org.springframework.cloud:spring-cloud-starter-loadbalancer:3.0.3")

Maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>demo</artifactId>
    <properties>
        <cosky.version>lastVersion</cosky.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>me.ahoo.cosky</groupId>
            <artifactId>spring-cloud-starter-cosky-config</artifactId>
            <version>${cosky.version}</version>
        </dependency>
        <dependency>
            <groupId>me.ahoo.cosky</groupId>
            <artifactId>spring-cloud-starter-cosky-discovery</artifactId>
            <version>${cosky.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>3.0.3</version>
        </dependency>
    </dependencies>
</project>

bootstrap.yaml (Spring-Cloud-Config)

spring:
  application:
    name: ${service.name:cosky}
  data:
    redis:
      url: redis://localhost:6379
  cloud:
    cosky:
      namespace: ${cosky.namespace:cosky-{system}}
      config:
        config-id: ${spring.application.name}.yaml
    service-registry:
      auto-registration:
        enabled: ${cosky.auto-registry:true}
logging:
  file:
    name: logs/${spring.application.name}.log

Сервер REST-API (необязательно)

Установка сервера REST-API

Вариант 1: Скачивание исполняемого файла

Скачайте cosky-server

Распакуйте cosky-lastVersion.tar

cd cosky-lastVersion
# Рабочий каталог: cosky-lastVersion
bin/cosky --server.port=8080 --spring.data.redis.uri=redis://localhost:6379

Вариант 2: Запуск через Docker

docker pull ahoowang/cosky:lastVersion
docker run --name cosky -d -p 8080:8080 --link redis -e SPRING_DATA_REDIS_URL=redis://redis:6379 ahoowang/cosky:lastVersion

Вариант 3: Запуск через Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cosky
  labels:
    app: cosky
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cosky
  template:
    metadata:
      labels:
        app: cosky
    spec:
      containers:
        - env:
            - name: SPRING_DATA_REDIS_URL
              value: redis://redis-uri:6379
          image: ahoowang/cosky:lastVersion
          name: cosky
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: "1"
              memory: 1280Mi
            requests:
              cpu: 250m
              memory: 1024Mi
          volumeMounts:
            - mountPath: /etc/localtime
              name: volume-localtime
      volumes:
        - hostPath:
            path: /etc/localtime
            type: ""
          name: volume-localtime

---
apiVersion: v1
kind: Service
metadata:
  name: cosky
  labels:
    app: cosky
spec:
  selector:
    app: cosky
  ports:
    - name: rest
      port: 80
      protocol: TCP
      targetPort: 8080

Дашборд

http://localhost:8080/dashboard

CoSky-Dashboard

Топология зависимостей сервисов

CoSky-Dashboard-topology

Управление доступом на основе ролей (RBAC)

  • cosky: зарезервированное имя пользователя, суперпользователь с максимальными правами. При первом запуске приложения пароль суперпользователя (cosky) будет инициализирован и распечатан в консоли. Если вы забудете свой пароль, вы можете настроить enforce-init-super-user: true, CoSky поможет вам переинициализировать пароль и распечатает его в консоли.
---------------- ****** CoSky -  init super user:[cosky] password:[6TrmOux4Oj] ****** ----------------
  • admin: зарезервированная роль, роль суперадминистратора со всеми правами. Один пользователь может быть связан с несколькими ролями, а одна роль может быть связана с множеством прав доступа к ресурсам.
  • Гранулярность контроля прав доступа — пространства имён, чтение и запись

Права ролей

CoSky-Dashboard-role

Добавление роли

CoSky-Dashboard-role-add

Управление пользователями

CoSky-Dashboard-user

Добавление пользователя

CoSky-Dashboard-user-add

Журнал аудита

CoSky-Dashboard-audit-log

Пространства имён

CoSky-Dashboard-namespace

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

CoSky-Dashboard-config

Редактирование конфигурации

CoSky-Dashboard-config-edit

Возврат конфигурации

CoSky-Dashboard-config-rollback

Импорт конфигурации из Nacos

 <img src="./docs/dashboard-config-import.gif" alt="CoSky-Dashboard-config-import"/>

Сервис

CoSky-Dashboard-service

Редактирование экземпляра сервиса

CoSky-Dashboard-service-edit

REST-API

https://ahoo-cosky.apifox.cn/

JMH-Benchmark

  • Разработочный ноутбук: MacBook Pro (M1)
  • Все тесты производительности проводятся на разработочном ноутбуке.
  • Установка Redis на разработочном ноутбуке.

ConfigService

gradle cosky-config:jmh
# или
java -jar cosky-config/build/libs/cosky-config-lastVersion-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
Benchmark                                          Mode  Cnt          Score   Error  Units
ConsistencyRedisConfigServiceBenchmark getConfig  thrpt       256733987.827          ops/s
RedisConfigServiceBenchmark getConfig             thrpt          241787.679          ops/s
RedisConfigServiceBenchmark setConfig             thrpt          140461.112          ops/s

ServiceDiscovery

gradle cosky-discovery:jmh
# или
java -jar cosky-discovery/build/libs/cosky-discovery-lastVersion-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
Benchmark                                                Mode  Cnt          Скорость   Ошибка  Единицы
ConsistencyRedisServiceDiscoveryBenchmark getInstances  thrpt        76621729.048          операций в секунду
ConsistencyRedisServiceDiscoveryBenchmark getServices   thrpt       455760632.346          операций в секунду
RedisServiceDiscoveryBenchmark getInstances             thrpt          226909.985          операций в секунду
RedisServiceDiscoveryBenchmark getServices              thrpt          304979.150          операций в секунду
RedisServiceRegistryBenchmark deregister                thrpt          255305.648          операций в секунду
RedisServiceRegistryBenchmark register                  thrpt          110664.160          операций в секунду
RedisServiceRegistryBenchmark renew                     thrpt          210960.325          операций в секунду

CoSky-Mirror (Реальное время синхронизация состояния изменения служебных экземпляров)

CoSky-Mirror — это как зеркало, расположенное между Nacos и CoSky для создания единой платформы открытия услуг.

CoSky-Mirror

CoSky-Mirror-Unified

Сравнение с другими системами

CoSky Eureka Consul CoreDNS Zookeeper Nacos Apollo
CAP CP+AP AP CP CP CP CP+AP CP+AP
Проверка работоспособности Client Beat Client Beat TCP/HTTP/gRPC/Cmd Keep Alive Keep Alive TCP/HTTP/Client Beat Client Beat
Стратегия балансировки нагрузки Weight/Selector Ribbon Fabio RoundRobin RoundRobin Weight/metadata/RoundRobin RoundRobin
Защита от аваланча Нет Да Нет Нет Нет Да Нет
Автоматическое завершение работы экземпляра Поддерживается Поддерживается Не поддерживается Не поддерживается Поддерживается Поддерживается Поддерживается
Протокол доступа HTTP/Redis HTTP HTTP/DNS DNS TCP HTTP/DNS HTTP
Поддержка прослушивания Поддерживается Поддерживается Поддерживается Не поддерживается Поддерживается Поддерживается Поддерживается
Поддержка многочисленных центров данных Поддерживается Поддерживается Поддерживается Не поддерживается Не поддерживается Поддерживается Поддерживается
Синхронизация реестров через границы Поддерживается Не поддерживается Поддерживается Не поддерживается Не поддерживается Поддерживается Не поддерживается
Интеграция со Spring Cloud Поддерживается Поддерживается Поддерживается Не поддерживается Не поддерживается Поддерживается Поддерживается
Интеграция с Dubbo Поддерживается Не поддерживается Не поддерживается Не поддерживается Поддерживается Поддерживается Поддерживается
Интеграция с Kubernetes Поддерживается Не поддерживается Поддерживается Поддерживается Не поддерживается Поддерживается Не поддерживается
Устойчивое хранение данных Redis MySQL MySQL

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Высокопроизводительная, недорогая платформа для управления микросервисами (центр регистрации/обнаружения и настройки сервисов). Развернуть Свернуть
Kotlin и 6 других языков
Apache-2.0
Отмена

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

все

Участники

все

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

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