首页 > 新闻 > IT新闻 > 正文

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

花韻仙語
发布: 2025-12-18 13:16:03
原创
327人浏览过

CoSky - 高性能、低成本微服务治理平台

English Document

cosky 是一个轻量级、低成本的服务注册、服务发现、配置服务 sdk,通过使用现有基础设施中的 redis(相信您已经部署了 redis),无需给运维部署带来额外的成本与负担。借助 redis 的高性能,cosky 提供了超高的 tps&qps (10w+/s jmh 基准测试)。cosky 结合本地进程缓存策略 + redis pubsub,实现实时进程缓存刷新,兼具无与伦比的 qps 性能 (7000w+/s jmh 基准测试) 和进程缓存与 redis 的实时一致性。

拥抱Spring Boot 4,重构React现代化仪表盘 | CoSky v5.2.0 发布

我们非常高兴地宣布 CoSky v5.2.0 正式发布!这是一个里程碑式的版本,带来了对最新 Spring 生态的支持、一次彻底的技术栈革新以及一系列激动人心的新功能。此版本致力于提升开发者体验、增强系统性能并提供一个更现代化、更强大的服务治理平台。

? 核心技术框架升级

  • 全面支持 Spring Boot 4:无缝升级至最新的 Spring Boot 4 框架,确保您的项目能够利用其最新的性能优化、安全特性和功能增强,保持技术栈的前沿性。
  • 引入全局 CORS 配置:新增 OrderedCorsWebFilter,为 REST API 提供灵活、可排序的全局跨域资源共享配置,简化前端集成。

? 现代化仪表盘焕新登场

我们对管理控制台进行了彻底的架构重构,从 Angular 迁移至 React 技术栈,带来了全面的用户体验革新:

  • 性能大幅提升:通过为所有页面实现按需懒加载(Lazy Loading) 和引入可刷新的路由守卫(Route Guard),显著提升了应用初始加载速度和页面切换的响应效率。
  • 全新视觉与交互:采用了现代化的渐变背景和卡片设计,增强视觉层次感,提供更具吸引力的登录页面和整体界面。
  • 优化上下文管理:重构了应用路由和上下文提供逻辑,改善了数据流,并增强了命名空间选择器的下拉框样式。

? 强大的服务拓扑可视化

全新的服务拓扑功能,让您能够直观地洞察微服务间的依赖关系与运行状态。

  • 从布局引擎升级为网格布局,节点定位更清晰、直观。
  • 支持动态布局、节点分类(如按服务类型区分)、交互式探索以及节点拖拽,使拓扑图不再是静态展示,而是一个强大的分析工具。

⚙️ 功能特性全面增强

配置管理中心:

  • 格式支持增强:为配置编辑器添加文件格式选择器,并明确提示对 Nacos 配置格式的兼容性支持。
  • 版本管理精细化:新增支持展开行的配置版本表格,方便追踪历史变更。
  • 批量操作便捷化:实现通过 ZIP 包导入配置的功能,并优化导出功能以使用 Blob 对象,提升大批量配置操作的效率。
  • 交互体验优化:为配置表和服务表新增排序、搜索过滤功能,动态设置配置抽屉标题,并解决了差异编辑器初始化问题。

服务与权限管理:

  • 服务实例管理:新增服务实例元数据编辑器,并为实例表格添加排序功能。
  • 权限体系完善:实现了完整的角色管理功能,支持资源绑定;新增用户编辑组件。
  • 审计与安全:改进了审计日志在 WebFilter 中的错误处理,增强了系统的可观测性与稳定性。

? 依赖更新与其他改进

  • 移除 Angular 仪表盘:彻底告别旧版,全面拥抱 React 现代化架构。
  • 升级至 Kotlin 2.3.0,并同步更新了 Spring Boot、SpringDoc、Gradle 等大量核心及工具依赖至最新稳定版本,夯实项目基础。
  • 代码结构优化:提升了 TypeScript 类型安全性和代码结构,移除 cosky-mirror 模块,简化项目架构。
  • 为 REST 控制器添加了 Swagger 标签,进一步优化 API 文档。

立即升级,体验更强大、更流畅的 CoSky!


服务注册与发现

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

配置中心

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

Examples

Service Consumer --RPC--> Service Provider Examples

安装

Gradle

Kotlin DSL

    <strong>val</strong> coskyVersion = <span style="color:#dd1144">"lastVersion"</span>;
    implementation(<span style="color:#dd1144">"me.ahoo.cosky:spring-cloud-starter-cosky-config:<span style="color:#333333">${coskyVersion}</span>"</span>)
    implementation(<span style="color:#dd1144">"me.ahoo.cosky:spring-cloud-starter-cosky-discovery:<span style="color:#333333">${coskyVersion}</span>"</span>)
    implementation(<span style="color:#dd1144">"org.springframework.cloud:spring-cloud-starter-loadbalancer:3.0.3"</span>)
登录后复制

Maven

<span><?xml version="1.0" encoding="UTF-8"?></span>

<span style="color:#55cde3"><<span style="color:#008080">project</span> <span>xmlns</span>=<span style="color:#dd1144">"http://maven.apache.org/POM/4.0.0"</span>
         <span>xmlns:xsi</span>=<span style="color:#dd1144">"http://www.w3.org/2001/XMLSchema-instance"</span>
         <span>xsi:schemaLocation</span>=<span style="color:#dd1144">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span>></span>

  <span style="color:#55cde3"><<span style="color:#008080">modelVersion</span>></span>4.0.0<span style="color:#55cde3"></<span style="color:#008080">modelVersion</span>></span>
  <span style="color:#55cde3"><<span style="color:#008080">artifactId</span>></span>demo<span style="color:#55cde3"></<span style="color:#008080">artifactId</span>></span>
  <span style="color:#55cde3"><<span style="color:#008080">properties</span>></span>
    <span style="color:#55cde3"><<span style="color:#008080">cosky.version</span>></span>lastVersion<span style="color:#55cde3"></<span style="color:#008080">cosky.version</span>></span>
  <span style="color:#55cde3"></<span style="color:#008080">properties</span>></span>

  <span style="color:#55cde3"><<span style="color:#008080">dependencies</span>></span>
    <span style="color:#55cde3"><<span style="color:#008080">dependency</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">groupId</span>></span>me.ahoo.cosky<span style="color:#55cde3"></<span style="color:#008080">groupId</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">artifactId</span>></span>spring-cloud-starter-cosky-config<span style="color:#55cde3"></<span style="color:#008080">artifactId</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">version</span>></span>${cosky.version}<span style="color:#55cde3"></<span style="color:#008080">version</span>></span>
    <span style="color:#55cde3"></<span style="color:#008080">dependency</span>></span>
    <span style="color:#55cde3"><<span style="color:#008080">dependency</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">groupId</span>></span>me.ahoo.cosky<span style="color:#55cde3"></<span style="color:#008080">groupId</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">artifactId</span>></span>spring-cloud-starter-cosky-discovery<span style="color:#55cde3"></<span style="color:#008080">artifactId</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">version</span>></span>${cosky.version}<span style="color:#55cde3"></<span style="color:#008080">version</span>></span>
    <span style="color:#55cde3"></<span style="color:#008080">dependency</span>></span>
    <span style="color:#55cde3"><<span style="color:#008080">dependency</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">groupId</span>></span>org.springframework.cloud<span style="color:#55cde3"></<span style="color:#008080">groupId</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">artifactId</span>></span>spring-cloud-starter-loadbalancer<span style="color:#55cde3"></<span style="color:#008080">artifactId</span>></span>
      <span style="color:#55cde3"><<span style="color:#008080">version</span>></span>3.0.3<span style="color:#55cde3"></<span style="color:#008080">version</span>></span>
    <span style="color:#55cde3"></<span style="color:#008080">dependency</span>></span>
  <span style="color:#55cde3"></<span style="color:#008080">dependencies</span>></span>
<span style="color:#55cde3"></<span style="color:#008080">project</span>></span>
登录后复制

bootstrap.yaml (Spring-Cloud-Config)

<span>spring:</span>
  <span>application:</span>
    <span>name:</span> <span style="color:#dd1144">${service.name:cosky}</span>
  <span>data:</span>
    <span>redis:</span>
      <span>url:</span> <span style="color:#dd1144">redis://localhost:6379</span>
  <span>cloud:</span>
    <span>cosky:</span>
      <span>namespace:</span> <span style="color:#dd1144">${cosky.namespace:cosky-{system}}</span>
      <span>config:</span>
        <span>config-id:</span> <span style="color:#dd1144">${spring.application.name}.yaml</span>
    <span>service-registry:</span>
      <span>auto-registration:</span>
        <span>enabled:</span> <span style="color:#dd1144">${cosky.auto-registry:true}</span>
<span>logging:</span>
  <span>file:</span>
    <span>name:</span> <span style="color:#dd1144">logs/${spring.application.name}.log</span>
登录后复制

? REST-API Server(可选)

根据您的环境选择三种部署方式之一:

?️ 方式一:独立可执行文件

下载最新版本并直接运行:

<span>#</span><span> 下载 cosky-server</span>
wget https://github.com/Ahoo-Wang/cosky/releases/latest/download/cosky-server.tar
<span>
#</span><span> 解压并运行</span>
tar -xvf cosky-server.tar
cd cosky-server
bin/cosky --server.port=8080 --spring.data.redis.url=redis://localhost:6379
登录后复制

? 方式二:Docker 部署

使用 Docker 快速部署:

docker pull ahoowang/cosky:latest
docker run --name cosky -d -p 8080:8080 \
  -e SPRING_DATA_REDIS_URL=redis://your-redis-host:6379 \
  ahoowang/cosky:latest
登录后复制

☸️ 方式三:Kubernetes 部署

在 Kubernetes 集群中部署:

<span>apiVersion:</span> <span style="color:#dd1144">apps/v1</span>
<span>kind:</span> <span style="color:#dd1144">Deployment</span>
<span>metadata:</span>
  <span>name:</span> <span style="color:#dd1144">cosky</span>
  <span>labels:</span>
    <span>app:</span> <span style="color:#dd1144">cosky</span>
<span>spec:</span>
  <span>replicas:</span> <span style="color:#008080">1</span>
  <span>selector:</span>
    <span>matchLabels:</span>
      <span>app:</span> <span style="color:#dd1144">cosky</span>
  <span>template:</span>
    <span>metadata:</span>
      <span>labels:</span>
        <span>app:</span> <span style="color:#dd1144">cosky</span>
    <span>spec:</span>
      <span>containers:</span>
        <span>-</span> <span>name:</span> <span style="color:#dd1144">cosky</span>
          <span>image:</span> <span style="color:#dd1144">ahoowang/cosky:latest</span>
          <span>ports:</span>
            <span>-</span> <span>containerPort:</span> <span style="color:#008080">8080</span>
              <span>protocol:</span> <span style="color:#dd1144">TCP</span>
          <span>env:</span>
            <span>-</span> <span>name:</span> <span style="color:#dd1144">SPRING_DATA_REDIS_URL</span>
              <span>value:</span> <span style="color:#dd1144">redis://your-redis-host:6379</span>
          <span>resources:</span>
            <span>requests:</span>
              <span>cpu:</span> <span style="color:#dd1144">250m</span>
              <span>memory:</span> <span style="color:#dd1144">1024Mi</span>
            <span>limits:</span>
              <span>cpu:</span> <span style="color:#dd1144">"1"</span>
              <span>memory:</span> <span style="color:#dd1144">1280Mi</span>
          <span>volumeMounts:</span>
            <span>-</span> <span>name:</span> <span style="color:#dd1144">volume-localtime</span>
              <span>mountPath:</span> <span style="color:#dd1144">/etc/localtime</span>
      <span>volumes:</span>
        <span>-</span> <span>name:</span> <span style="color:#dd1144">volume-localtime</span>
          <span>hostPath:</span>
            <span>path:</span> <span style="color:#dd1144">/etc/localtime</span>
            <span>type:</span> <span style="color:#dd1144">""</span>

<span>---</span>
<span>apiVersion:</span> <span style="color:#dd1144">v1</span>
<span>kind:</span> <span style="color:#dd1144">Service</span>
<span>metadata:</span>
  <span>name:</span> <span style="color:#dd1144">cosky</span>
  <span>labels:</span>
    <span>app:</span> <span style="color:#dd1144">cosky</span>
<span>spec:</span>
  <span>selector:</span>
    <span>app:</span> <span style="color:#dd1144">cosky</span>
  <span>ports:</span>
    <span>-</span> <span>name:</span> <span style="color:#dd1144">rest</span>
      <span>port:</span> <span style="color:#008080">80</span>
      <span>protocol:</span> <span style="color:#dd1144">TCP</span>
      <span>targetPort:</span> <span style="color:#008080">8080</span>
登录后复制

? Dashboard

访问基于Web的管理界面:

http://localhost:8080

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

CoSky Dashboard 提供以下功能:

  • 实时服务监控和管理
  • 配置管理(含版本控制)
  • 命名空间隔离和管理
  • 基于角色的访问控制(RBAC)
  • 审计日志用于合规性
  • 服务拓扑可视化
  • 简单的导入/导出功能

服务依赖拓扑

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

基于角色的访问控制(RBAC)

  • cosky: 保留用户名,超级用户,拥有最高权限。应用首次启动时会初始化超级用户(cosky)的密码,并打印在控制台。忘记密码也不用担心,可以通过配置 enforce-init-super-user: trueCoSky 会帮助你重新初始化密码并打印在控制台。

---------------- ****** CoSky -  init super user:[cosky] password:[6TrmOux4Oj] ****** ----------------
登录后复制
 

  • admin: 保留角色,超级管理员角色,拥有所有权限,一个用户可以绑定多个角色,一个角色可以绑定多个资源操作权限。
  • 权限控制粒度为命名空间,读写操作

角色权限

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

添加角色

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

用户管理

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

添加用户

Hugging Face
Hugging Face

Hugging Face AI开源社区

Hugging Face 270
查看详情 Hugging Face

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

审计日志

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

命名空间管理

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

配置管理

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

编辑配置

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

回滚配置

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

从 Nacos 导入配置

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

服务管理

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

编辑服务实例信息

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

REST-API

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

? 性能基准测试

CoSky 提供卓越的性能,相比其他方案性能提升数个数量级

测试环境

  • 硬件: MacBook Pro (M1)
  • Redis: 在同一台机器上本地部署
  • 方法论: 所有基准测试均使用 JMH (Java Microbenchmark Harness) 进行

配置服务性能

gradle cosky-config:jmh
<span>#</span><span> or</span>
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
<span>#</span><span> or</span>
java -jar cosky-discovery/build/libs/cosky-discovery-lastVersion-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
登录后复制

? 关键洞察: CoSky 的一致性层在配置检索方面提供超过 800 倍的性能提升,在服务发现方面提供超过 250 倍的性能提升,相比标准 Redis 操作。

? CoSky-Mirror (实时同步服务实例变更状态)

CoSky-Mirror 就像一座桥梁连接 Nacos 和 CoSky,构建一个统一的服务发现平台,实现无缝集成。

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布

通过 CoSky-Mirror,您可以:

  • 在 Nacos 和 CoSky 之间实时同步服务实例
  • 保持不同服务注册中心之间的一致性
  • 零停机从 Nacos 迁移到 CoSky
  • 构建混合服务发现架构

? 功能对比

功能 CoSky Eureka Consul CoreDNS Zookeeper Nacos Apollo
健康检查 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集成
K8S集成
持久化 Redis - - - - MySql MySql

? 贡献

欢迎社区贡献!无论是报告错误、提出功能建议还是提交拉取请求,您的参与都能帮助 CoSky 变得更好。

? 许可证

CoSky 是基于 Apache License 2.0 许可的开源软件。

源码地址:点击下载

以上就是拥抱 Spring Boot 4,重构 React 现代化仪表盘 | CoSky v5.2.0 发布的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号