首页 > 其他分享 >CAP 7.2 版本发布通告

CAP 7.2 版本发布通告

时间:2023-08-08 09:13:39浏览次数:35  
标签:配置 Kubernetes 通告 CAP 7.2 Dashboard 版本 移除

前言

今天,我们很高兴宣布 CAP 发布 7.2 版本正式版,我们在这个版本中主要致力于 Dashboard 对 k8s 服务发现的支持。

从 7.1 版本以来,我们发布了4个小版本,在这些版本中我们主要解决发现的Bug和添加一些小功能,这篇文章中可能也会提及我们在这些小版本中加的一些小功能。

下面,具体看一下我们新版本的功能吧。

总览

可能有些人还不知道 CAP 是什么,老规矩来一个简介。

CAP 是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案(https://github.com/dotnetcore/CAP)同样可以用来作为 EventBus 使用,该项目诞生于2016年,目前在 Github 已经有超过 6000+ Star 和 90+ 贡献者,以及在 NuGet超 500 万的下载量,并在越来越多公司的和项目中得到应用。

如果你想对 CAP 更多了解,请查看我们的 官方文档

本次在 CAP 7.2 版本中我们主要带来了以下新特性:

  • 消息发布任务由.NET线程池管理
  • Dashboard 添加对 Kubernetes 服务发现的支持
  • Dashboard 支持自定义JWT认证登录
  • Dashboard Api 支持匿名访问
  • 破坏性改动
    • 移除 ProducerThreadCount 配置项
    • SnowflakeId 生成由静态单例更改为依赖注入单例
    • 移除7.1版本事务异步方法的支持
  • BUG 修复
    • 修复 RabbitMQ BasicQos 配置项未按预期工作的问题

消息发布任务由.NET线程池管理

在过去,我们消息发布的Task是一条一条发送的,通过使用 ProducerThreadCount 配置项来控制同时发送的进程数来提高消息发送效率。在这个版本中,消息发布任务将由 .NET 线程池调度,同时 ProducerThreadCount 配置项被移除,这将充分利用 .NET 线程池的能力来提高发送效率。

在消息的消费侧,消费者的执行同样是线性的,在过去通过使用 UseDispatchPerGroup 配置项来让每个消费者组使用不同的队列来实现跨消费者组的并行消费。

现在消费侧同样引入了线程池,不过没有默认开启,可以通过EnableConsumerPrefetch 来启用,这样所有的消费者都将并行执行,无论是否处于相同的组,UseDispatchPerGroup将不再需要。

Dashboard 添加对 Kubernetes 服务发现的支持

在CAP的前期阶段,Kubernetes并没有被广泛使用。我们使用 Consul 进行仪表板发现,从其他节点收集数据,这大大简化了在微服务中查看不同节点数据的过程。

根据我们社区的反馈,越来越多的人使用 Kubernetes 作为他们的部署环境。所以我们在这个版本中支持 Kubernetes 作为服务发现。我们引入了一个新的NuGet包 DotNetCore.CAP.Dashboard.K8s 来实现这一点。

在引入了NuGet包后,现在有一个新的 UseK8sDiscovery 配置项用于配置服务发现,以下是一个配置示例

services.AddCap(x =>
{
    // ...
    x.UseDashboard();
    x.UseK8sDiscovery();
});

组件将会自动检测是否处于集群内部,如果处于集群内部还需要赋予 Pod Kubernetes Api 的权限。

分配 Pod 访问 Kubernetes Api

如果你的 Deployment 关联的 ServiceAccount 没有 K8s Api 访问权限的话,则需要赋予 namespaces, services 资源的 get, list 权限。

所需配置项请参考我们的文档。 https://cap.dotnetcore.xyz/user-guide/zh/monitoring/kubernetes/#dashboard

Kubernetes 发现页和Consul发现页使用的同一个,

将 Dashboard 独立运行

如果你想将 Dashboard 作为单独的 Pod 来部署,专门负责查看集群内其他服务的话,我们提供了一个单独的扩展方法来实现这一点。

配置如下:

// 只需要这一行即可
builder.Services.AddCapDashboardStandalone();

这将使CAP Dashboard 作为一个独立的pod服务来运行,仅用作查看其他服务。

下面这个是一个Sample.Dashboard.Jwt这个示例项目,打包的一个可供测试的Docker镜像

docker pull ghcr.io/yang-xiaodong/cap-dashboard:0.2

支持自定义JWT认证登录

现在我们的 Dashboard 支持接入自定义 JWT 统一认证。

现在你可以和你自己的系统集成,使用你的自定义登录页,使用你自己的Token,来访问 Dashboard。

你可以在 Sample.Dashboard.Jwt 示例中查看更多详细。

Dashboard Api 支持匿名访问

在将 CAP Dashboard 集成到现有项目的过程中,有些项目使用了 ASP.NET Core 全局认证过滤器,由于 CAP 的 API 也是基于 ASP.NET Core 路由机制实现的,所以会被全局过滤器限制,现在我们提供了一个新的配置项以允许API匿名访问。

我们在 Dashboard 中提供了一个新的配置项 AllowAnonymousExplicit 以允许将目前的 Api 进行允许匿名访问。

破坏性改动

移除 ProducerThreadCount 配置项

正如在第一节中介绍的一样,我们的消息发送任务现在使用 .NET 线程池进行,所以 ProducerThreadCount 配置项现在已经无效被移除。

SnowflakeId 生成由静态单例更改为依赖注入单例

我们的自动生成 Published 和 Received 表主键的雪花算法现在已经由静态单例模式更改为使用依赖注入的方式进行,这允许用户自行修改实现。

services.AddSingleton<ISnowflakeId, SnowflakeId>();

受改动影响,具体 Broker 中 CustomHeaders 配置项将由 CustomHeadersBuilder 替代, CustomHeadersBuilder 配置项提供了 IServiceProvider 允许从中获得 ISnowflakeId 实例。

移除7.1版本事务异步方法的支持

在7.1版本中,我们添加了对开启事务异步方法的支持,在这个版本中,我们将其移除。 原因是由于我们的事务状态使用 AsyncLocal 存储,AsyncLocal 不支持向上传递导致事务状态丢失,所以这个版本将其移除。

BUG 修复

另外在这个版本中,我们修复了一些已知的Bug,以下是已经修复的问题列表。

  • 修复 RabbitMQ BasicQos 配置项未按预期工作的问题

总结

以上,就是本版本我们做出的一些新特性和改动,感谢大家的支持,我们很开心能够帮助到大家 。

大家在使用的过程中遇到问题希望也能够积极的反馈,帮助CAP变得越来越好。

标签:配置,Kubernetes,通告,CAP,7.2,Dashboard,版本,移除
From: https://www.cnblogs.com/savorboard/p/cap-7-2.html

相关文章

  • 航顺的HK32F030MF4P6的第8号引脚问题 是 VCAP?还是 PD7?
    今天在使用HK32单片机的时候遇到一个问题原理图上usart的Rx连接的是单片机的8引脚,我查询手册发现8引脚是VCAP浮空引脚 手册里没有这个引脚的复用功能。但是在HK32F030M开发板原理图上,8引脚标的是PD7引脚,于是我抱着试一试的心态,将PD7引脚配置成usart,下载进单片机里,果......
  • KubeSphere 社区双周报 | 本周六上海站 Meetup 准时开启 | 2023.7.21-08.03
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.07.21-2023.08.04。贡献者名单新晋KubeSphereCon......
  • 我就面试个普通开发,你居然问我CAP?
    大家好,我是飘渺。不得不说,Java真的是越来越卷了,很多次在群里听到粉丝说自己只是面试个普通开发岗位,结果在面试中经常被问到CAP分布式理论的问题,太可怕了~今天我们就先来看一看在面试中怎么回答分布式的基础理论,才能抓住面试官的芳心。案例背景CAP理论是分布式系统中最核心的基础理......
  • Java面试题 P59:微服务篇:分布式系统理论-CAP和BASE
           ......
  • Capturing Video on iOS iOS拍摄视频的方法总结
    https://www.objc.io/issues/23-video/capturing-video/With processing powerandcamerahardwareimprovingwitheverynewrelease,usingiPhonestocapturevideoisgettingmoreandmoreinteresting.They’resmall,light,andinconspicuous,andthequalityg......
  • 进程注入检测 —— RtlCaptureStackBackTrace 获取当前函数的调用栈函数
    https://stackoverflow.com/questions/590160/how-to-log-stack-frames-with-windows-x64 https://cpp.hotexamples.com/examples/-/-/RtlCaptureStackBackTrace/cpp-rtlcapturestackbacktrace-function-examples.html  例子参考  平日里用VS开发工具在调时在Debug下有一个选......
  • 微服务分布式系统CAP理论与数据一致性抉择
    分布式系统 我们知道分布式系统就是一个系统由多个组成部分共同构成,用户的一个请求可能会经过多个不同的计算机节点之后,通过运算才会把结果响应给用户,那么这个请求所经过的不同的几个系统就是分布式系统。对于用户来讲,你是不是分布式系统,对他来讲是透明的。参考如下图:  ......
  • C# HttpUtility.UrlEncode与 Uri.EscapeDataString区别
    相同点均是对url进行编码区别HttpUtility.UrlEncode会将空格转换为加号(+)Uri.EscapeDataString会将空格转换为%20适用场景HttpUtility.UrlEncode适用于url是查询参数Uri.EscapeDataString适用于url是作为文件路径使用......
  • Ubuntu22.04LTS安装oh-my-cap
    使用oh-my-cap需要安装如下软件sac、taup、gmt,如需使用seed数据还需安装rdseed。下载oh-my-cap-2.0.0安装包并解压安装$tar-xvfoh-my-cap-2.0.0$mvoh-my-cap-2.0.0~/opt/oh-my-cap#安装fk$cd~/opt/oh-my-cap/src/fk$make#安装gcap$cd~/opt/oh-my-cap/src/g......
  • SCAP智能渠道接入平台:打破行业壁垒,推动数字化时代的企业转型
    在当今数字化时代,人们的生活和工作方式正在发生着巨大的变化。越来越多的企业和个人开始依赖于各种数字化产品和服务,而这些产品和服务往往需要通过对接各种外部三方渠道来实现。然而不同的渠道之间存在着巨大的差异,例如接口协议、数据格式、安全性等方面的差异,这给对接工作带来了极......