<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CoSky基于 Redis 的服務(wù)治理平臺

          聯(lián)合創(chuàng)作 · 2023-09-30 23:59

          CoSky 高性能、低成本微服務(wù)治理平臺(服務(wù)注冊/發(fā)現(xiàn) & 配置中心)

          CoSky 是一個輕量級、低成本的服務(wù)注冊、服務(wù)發(fā)現(xiàn)、 配置服務(wù) SDK,通過使用現(xiàn)有基礎(chǔ)設(shè)施中的 Redis (相信你已經(jīng)部署了Redis),不用給運維部署帶來額外的成本與負擔(dān)。 借助于 Redis 的高性能, CoSky 提供了超高TPS&QPS (10W+/s JMH 基準測試)。CoSky 結(jié)合本地進程緩存策略 + Redis PubSub,實現(xiàn)實時進程緩存刷新,兼具無與倫比的QPS性能 (7000W+/s JMH 基準測試)、進程緩存與 Redis 的實時一致性。

          服務(wù)注冊與發(fā)現(xiàn)

          CoSky-Discovery

          配置中心

          CoSky-Configuration

          CoSky-Mirror (實時同步服務(wù)實例變更狀態(tài))

          CoSky-Mirror 就像一個鏡子放在 Nacos、CoSky 中間,構(gòu)建一個統(tǒng)一的服務(wù)發(fā)現(xiàn)平臺。

          CoSky-Mirror

          CoSky-Mirror-Unified

          Examples

          Service Consumer --RPC--> Service Provider Examples

          安裝

          Gradle

          Kotlin DSL

              val coskyVersion = "1.2.10";
              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>1.2.10</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-rest-api}
            cloud:
              cosky:
                namespace: ${cosky.namespace:cosky-{system}}
                config:
                  config-id: ${spring.application.name}.yaml
                redis:
                  mode: ${cosky.redis.mode:standalone}
                  url: ${cosky.redis.uri:redis://localhost:6379}
          logging:
            file:
              name: logs/${spring.application.name}.log

          REST-API Server (Optional)

          安裝 REST-API Server

          方式一:下載可執(zhí)行文件

          下載 rest-api-server

          解壓 cosky-rest-api-1.2.10.tar

          cd cosky-rest-api-1.2.10
          # 工作目錄: cosky-rest-api-1.2.10
          bin/cosky-rest-api --server.port=8080 --cosky.redis.uri=redis://localhost:6379

          方式二:在 Docker 中運行

          docker pull ahoowang/cosky-rest-api:1.2.10
          docker run --name cosky-rest-api -d -p 8080:8080 --link redis -e COSKY_REDIS_URI=redis://redis:6379  ahoowang/cosky-rest-api:1.2.10

          方式三:在 Kubernetes 中運行

          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: cosky-rest-api
            labels:
              app: cosky-rest-api
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: cosky-rest-api
            template:
              metadata:
                labels:
                  app: cosky-rest-api
              spec:
                containers:
                  - env:
                      - name: COSKY_REDIS_MODE
                        value: standalone
                      - name: COSKY_REDIS_URI
                        value: redis://redis-uri:6379
                    image: ahoowang/cosky-rest-api:1.2.10
                    name: cosky-rest-api
                    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-rest-api
            labels:
              app: cosky-rest-api
          spec:
            selector:
              app: cosky-rest-api
            ports:
              - name: rest
                port: 80
                protocol: TCP
                targetPort: 8080

          Dashboard

          http://localhost:8080/dashboard

          dashboard-dashboard

          服務(wù)依賴拓撲

          dashboard-topology

          基于角色的訪問控制(RBAC)

          • cosky: 保留用戶名,超級用戶,擁有最高權(quán)限。應(yīng)用首次啟動時會初始化超級用戶(cosky)的密碼,并打印在控制臺。忘記密碼也不用擔(dān)心,可以通過配置 enforce-init-super-user: trueCoSky 會幫助你重新初始化密碼并打印在控制臺。
          ---------------- ****** CoSky -  init super user:[cosky] password:[6TrmOux4Oj] ****** ----------------
          • admin: 保留角色,超級管理員角色,擁有所有權(quán)限,一個用戶可以綁定多個角色,一個角色可以綁定多個資源操作權(quán)限。
          • 權(quán)限控制粒度為命名空間,讀寫操作

          角色權(quán)限

          dashboard-role

          添加角色

          dashboard-role-add

          用戶管理

          dashboard-user

          添加用戶

          dashboard-user-add

          審計日志

          dashboard-audit-log

          命名空間管理

          dashboard-namespace

          配置管理

          dashboard-config

          編輯配置

          dashboard-config-edit

          回滾配置

          dashboard-config-rollback

          從 Nacos 導(dǎo)入配置

          dashboard-config-import

          服務(wù)管理

          dashboard-service

          編輯服務(wù)實例信息

          dashboard-service-edit

          REST-API

          http://localhost:8080/swagger-ui/index.html#/

          Namespace

          rest-api-namespace

          • /v1/namespaces
            • GET
          • /v1/namespaces/{namespace}
            • PUT
            • GET
          • /v1/namespaces/current
            • GET
          • /v1/namespaces/current/{namespace}
            • PUT

          Config

          rest-api-config

          • /v1/namespaces/{namespace}/configs
            • GET
          • /v1/namespaces/{namespace}/configs/{configId}
            • GET
            • PUT
              • DELETE
          • /v1/namespaces/{namespace}/configs/{configId}/versions
            • GET
          • /v1/namespaces/{namespace}/configs/{configId}/versions/{version}
            • GET
          • /v1/namespaces/{namespace}/configs/{configId}/to/{targetVersion}
            • PUT

          Service

          rest-api-service

          • /v1/namespaces/{namespace}/services/
            • GET
          • /v1/namespaces/{namespace}/services/{serviceId}/instances
            • GET
            • PUT
          • /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}
            • DELETE
          • /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}/metadata
            • PUT
          • /v1/namespaces/{namespace}/services/{serviceId}/lb
            • GET

          JMH-Benchmark

          • 基準測試運行環(huán)境:筆記本開發(fā)機 ( MacBook Pro (M1) )
          • 所有基準測試都在開發(fā)筆記本上執(zhí)行。
          • Redis 部署環(huán)境也在該筆記本開發(fā)機上。

          ConfigService

          gradle cosky-config:jmh
          # or
          java -jar cosky-config/build/libs/cosky-config-1.2.10-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
          # or
          java -jar cosky-discovery/build/libs/cosky-discovery-1.2.10-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
          Benchmark                                                Mode  Cnt          Score   Error  Units
          ConsistencyRedisServiceDiscoveryBenchmark.getInstances  thrpt        76621729.048          ops/s
          ConsistencyRedisServiceDiscoveryBenchmark.getServices   thrpt       455760632.346          ops/s
          RedisServiceDiscoveryBenchmark.getInstances             thrpt          226909.985          ops/s
          RedisServiceDiscoveryBenchmark.getServices              thrpt          304979.150          ops/s
          RedisServiceRegistryBenchmark.deregister                thrpt          255305.648          ops/s
          RedisServiceRegistryBenchmark.register                  thrpt          110664.160          ops/s
          RedisServiceRegistryBenchmark.renew                     thrpt          210960.325          ops/s
          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  牛牛精品一区二区 | 天天干老女人 | 青娱乐在线免费观看视频 | 黄色的网站在线 | 日本成人精品免费在线视频 |