CAP 8.0 版本发布通告 - CAP 7岁生日快乐!
前言
今天,我們很高興宣布 CAP 發(fā)布 8.0 版本正式版,從 2016 年 12 月 14 日CAP立項(xiàng)到 2023 年 12 月14 日發(fā)布 8.0 版本剛好滿 7 年,祝 CAP 7 歲生日快樂(lè),巧的是這一天也是我生日,真是意想不到啊!
那就做一個(gè) Overview 吧,在這7年間,我們一共發(fā)布了 61 個(gè)版本,在 Github 上有 6.3K 的 Star,有 108 個(gè)貢獻(xiàn)者以及 DotNetCore.CAP 核心包在 NuGet 上有 640 萬(wàn)的下載量。這個(gè)數(shù)據(jù)講道理說(shuō)作為一個(gè)非基礎(chǔ)庫(kù)組件來(lái)說(shuō)真的還不錯(cuò),不知道你怎么看。
還沒(méi)有 Star 的朋友如果你能訪問(wèn) Github,動(dòng)手點(diǎn)個(gè) Star 是對(duì)7年來(lái)我們最大的支持,一件事情堅(jiān)持7年真的不容易。如果你不能訪問(wèn)Github,可以在評(píng)論區(qū)回復(fù) “ 祝CAP 7歲生日快樂(lè)! ” 表示支持。
如果你想在你的公司講解分布式事務(wù)或引入CAP 給同事做介紹,可以使用2周前我在 .NET Conf 2023 成都會(huì)場(chǎng)分享的分布式事務(wù)的PPT,這是pptx版本沒(méi)有版權(quán),你可以隨意進(jìn)行更改使用。
總覽
我們宣布 CAP 發(fā)布 8.0 版本正式版,這個(gè)版本我們一方面是對(duì).NET 8 的支持,另外一方面主要是對(duì) Dashboard 的認(rèn)證授權(quán)方式做了大的調(diào)整,另外我們也修復(fù)了一些BUG。
從 7.2 版本以來(lái),我們發(fā)布了2個(gè)小版本,因?yàn)樾“姹疚覀儾粫?huì)有發(fā)布通告,所以這篇文章中也會(huì)提及我們?cè)谥暗倪@些小版本中加的一些小功能。
下面,具體看一下我們新版本的功能吧。
在我們構(gòu)建 SOA 或者 微服務(wù) 系統(tǒng)的過(guò)程中,會(huì)遇到分布式系統(tǒng)下事務(wù)一致性的問(wèn)題,我們通常需要使用事件來(lái)對(duì)各個(gè)服務(wù)進(jìn)行集成,在這過(guò)程中簡(jiǎn)單的使用消息隊(duì)列并不能保證數(shù)據(jù)的安全性,CAP作為一個(gè)分布式事務(wù)解決方案采用的是和當(dāng)前數(shù)據(jù)庫(kù)集成的本地消息表的方案來(lái)解決在各個(gè)服務(wù)通訊環(huán)節(jié)可能出現(xiàn)的異常,它能夠保證任何情況下數(shù)據(jù)都是不會(huì)丟失的,同樣可以用來(lái)作為 EventBus 使用,它輕量簡(jiǎn)單易于使用。
對(duì) CAP 更多了解,請(qǐng)查看我們的 官方文檔。
本次在 CAP 8.0 版本中我們主要帶來(lái)了以下改進(jìn)或新特性:
- 對(duì).NET 8 的全面支持
- 添加 FallbackWindowLookbackSeconds 配置項(xiàng)以支持自定義回溯時(shí)間窗。
- 改進(jìn) EnableConsumerPrefetch 和 UseDispatchingPerGroup 配置項(xiàng)以共同工作。
- DotNetCore.CAP.NATS 支持配置 DeliverPolicy,默認(rèn)為 New。
- 破壞性改動(dòng)
- 在 DotNetCore.CAP.Dashboard 中移除
DefaultAuthenticationScheme、UseChallengeOnAuth、DefaultChallengeScheme和AuthorizationPolicy配置項(xiàng)。
- 在 DotNetCore.CAP.Dashboard 中移除
- BUG 修復(fù)
- 修復(fù)消息無(wú)限重試的問(wèn)題(PR #1456 - 感謝 @bschwehn):這一修復(fù)解決了訂閱者移除后消息重試機(jī)制的問(wèn)題。
- 修復(fù) Open Telemetry 上下文丟失(PR #1452 - 同樣感謝 @bschwehn):這個(gè)修復(fù)確保了在消費(fèi)者重試和Baggage傳播過(guò)程中上下文的完整性。
- 修復(fù) NATS 連接重連處理問(wèn)題(PR #1449 - 感謝 @davidterins)。
- 修復(fù) DotNetCore.CAP.InMemoryStorage 發(fā)件箱模式消息恢復(fù)問(wèn)題(PR #1439 - 同樣感謝 @davidterins)。
- 修復(fù) Azure Service Bus 事件處理程序的雙重注冊(cè)問(wèn)題(PR #1427 - 同樣感謝 @demorgi)。
- 修復(fù) SQL Server 事務(wù)中發(fā)布延遲消息的問(wèn)題(PR #1422 - 感謝 @xiangxiren。
全面支持 .NET 8
在這個(gè)版本中,我們添加了新的 .NET 8 版本框架,同時(shí)我們對(duì)于 .NET 6 保持了兼容性,在 NuGet的依賴項(xiàng)中將同時(shí)顯示 net6.0 和 net8.0,如下圖:
在 .NET 8 中依賴注入引入了 KeyedService,在這個(gè)版本中我們進(jìn)行了支持,你的訂閱方法現(xiàn)在可以位于 KeyedService 中,如果使用的舊版本在過(guò)去則會(huì)引發(fā)異常。
支持自定義回溯時(shí)間窗
添加 FallbackWindowLookbackSeconds 配置項(xiàng)以支持自定義回溯時(shí)間窗。
在過(guò)去,我們?cè)谥卦嚂r(shí)會(huì)從數(shù)據(jù)庫(kù)中獲取4分鐘前存儲(chǔ)的消息,這一設(shè)定是為了保證新加入的消息不會(huì)被獲取到從而避免重復(fù)發(fā)送或消費(fèi)的問(wèn)題,現(xiàn)在這個(gè)值可以進(jìn)行配置。但是如果這個(gè)值配置太小則可能會(huì)帶來(lái)副作用,所以我們?cè)趩?dòng)時(shí)如果檢測(cè)到配置的值小于30秒則會(huì)打印警告日志進(jìn)行提醒。
適用的場(chǎng)景:如果你的系統(tǒng)在某個(gè)時(shí)間點(diǎn)才會(huì)一次性發(fā)送大量消息,并且這些消息不能在4分鐘內(nèi)處理完成,那么可以將此配置值調(diào)大以保證消息盡可能不重復(fù)。
EnableConsumerPrefetch,UseDispatchingPerGroup 同時(shí)工作
在 7.2.0 版中,我們將 UseDispatchingPerGroup 選項(xiàng)標(biāo)記為 [Obsolete],并計(jì)劃在未來(lái)的版本中刪除它,并打算將其功能替換為 EnableConsumerPrefetch 選項(xiàng)。但是,根據(jù)用戶反饋,UseDispatchingPerGroup 有自己獨(dú)特的使用場(chǎng)景。因此,在 7.2.1 版本中,我們將繼續(xù)支持 UseDispatchingPerGroup 選項(xiàng),并且 EnableConsumerPrefetch 也將同時(shí)生效。
下圖描述了這兩個(gè)配置項(xiàng)不同的組合下,消費(fèi)者任務(wù)的執(zhí)行方式。
NATS 支持配置 DeliverPolicy,默認(rèn)為 New
NATS 現(xiàn)在支持對(duì) Stream 的 DeliverPolicy 參數(shù)進(jìn)行自定義,可選項(xiàng)有 DeliverAll, DeliverLast, DeliverNew, DeliverByStartSequence, DeliverByStartTime, or DeliverLastPerSubject,默認(rèn)為 DeliverPolicy.New。
另外,NATS 出了一個(gè)新的 V2 版本的 .NET 驅(qū)動(dòng),我們有計(jì)劃遷移到新的版本,如果有人愿意貢獻(xiàn)請(qǐng)聯(lián)系我或提交PR。
破壞性改動(dòng)
在 DotNetCore.CAP.Dashboard 中移除 DefaultAuthenticationScheme、UseChallengeOnAuth、DefaultChallengeScheme 和 AuthorizationPolicy 配置項(xiàng)。
現(xiàn)在將基于于 ASP.NET Core 的認(rèn)證和授權(quán)中間件來(lái)工作,你可以在 Repo 的 Sample.Dashboard.Auth 示例項(xiàng)目下查看如何和 ASP.NET Core中間件進(jìn)行集成。
BUG 修復(fù)
另外在這個(gè)版本中,我們修復(fù)了一些已知的Bug,以下是已經(jīng)修復(fù)的問(wèn)題列表。
- 修復(fù)消息無(wú)限重試的問(wèn)題(PR #1456 - 感謝 @bschwehn):這一修復(fù)解決了訂閱者移除后消息重試機(jī)制的問(wèn)題。
- 修復(fù) Open Telemetry 上下文丟失(PR #1452 - 同樣感謝 @bschwehn):這個(gè)修復(fù)確保了在消費(fèi)者重試和Baggage傳播過(guò)程中上下文的完整性。
- 修復(fù) NATS 連接重連處理問(wèn)題(PR #1449 - 感謝 @davidterins)。
- 修復(fù) DotNetCore.CAP.InMemoryStorage 發(fā)件箱模式消息恢復(fù)問(wèn)題(PR #1439 - 同樣感謝 @davidterins)。
- 修復(fù) Azure Service Bus 事件處理程序的雙重注冊(cè)問(wèn)題(PR #1427 - 同樣感謝 @demorgi)。
- 修復(fù) SQL Server 事務(wù)中發(fā)布延遲消息的問(wèn)題(PR #1422 - 感謝 @xiangxiren。
總結(jié)
以上,就是本版本我們做出的一些新特性和改動(dòng),感謝大家的支持,我們很開(kāi)心能夠幫助到大家 。
大家在使用的過(guò)程中遇到問(wèn)題希望也能夠積極的反饋,幫助CAP變得越來(lái)越好。??
如果你喜歡這個(gè)項(xiàng)目,可以通過(guò)下面的連接點(diǎn)擊 Star 給我們支持。
如果你覺(jué)得本篇文章對(duì)您有幫助的話,感謝您的【推薦】。
本文地址:http://www.cnblogs.com/savorboard/p/cap-8-0.html
作者博客:Savorboard
本文原創(chuàng)授權(quán)為:署名 - 非商業(yè)性使用 - 禁止演繹,協(xié)議普通文本 | 協(xié)議法律文本
總結(jié)
以上是生活随笔為你收集整理的CAP 8.0 版本发布通告 - CAP 7岁生日快乐!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一文读懂4G无线路由器(无线路由器4G)
- 下一篇: 香水品牌招商加盟广告词187个