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

OSCHINA-MIRROR/AhooWang-CoSky

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

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

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

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

CoSky-Discovery

Конфигурирование

CoSky-Configuration

Примеры

Примеры Service Consumer --RPC--> Service Provider

Установка

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](https://github.com/Ahoo-Wang/cosky/releases/download/v2.0.0/cosky-2.0.0.tar)

> tar *cosky-lastVersion.tar*

```shell
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

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

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

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 Сcore Error Units ConsistencyRedisServiceDiscoveryBenchmark.getInstances thrpt 76621729.048 оп/s ConsistencyRedisServiceDiscoveryBenchmark.getServices thrpt 455760632.346 оп/s RedisServiceDiscoveryBenchmark.getInstances thrpt 226909.985 оп/s RedisServiceDiscoveryBenchmark.getServices thrpt 304979.150 оп/s RedisServiceRegistryBenchmark.deregister thrpt 255305.648 оп/s RedisServiceRegistryBenchmark.register thrpt 110664.160 оп/s RedisServiceRegistryBenchmark.renew thrpt 210960.325 оп/s


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

<p align="center">
     <img src="./docs/CoSky-Mirror.png" alt="CoSky-Mirror"/>
</p><p align="center">
      <img src=". /docs/CoSky-Mirror-Unified.png" alt="CoSky-Mirror-Unified"/>
 </p>

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

|                                | 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         |
| Поддержка прослушивания        | Поддерживается   | Поддерживается | Поддерживается    | Не поддерживается | Поддерживается | Поддерживается                     | Поддерживается |
| Поддержка многочисленных центров данных | Поддерживается | Поддерживается | Поддерживается    | Не поддерживается | Не поддерживается | Поддерживается                     | Поддерживается | | Синхронизация кросс-регистрации | Поддерживается | Не поддерживается | Поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Не поддерживается |
 | Интеграция с SpringCloud       | Поддерживается | Поддерживается | Поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Поддерживается |
 | Интеграция с Dubbo             | Поддерживается | Не поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Поддерживается | Поддерживается |
 | Интеграция с K8S               | Поддерживается | Не поддерживается | Поддерживается | Поддерживается | Не поддерживается | Поддерживается | Не поддерживается |
 || Устойчивость                    | 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