摘要:
目錄前言使用 elastic 構建可觀測性平臺在 ASP.NET Core 應用中集成 OTel SDK安裝依賴基礎配置Instrumentation 配置創建自定義 Span 和 Metric完整的代碼演示kibana 中查看數據TracingMetricsTracing 和 Logs 的關聯 前 閱讀全文
摘要:
目錄前言概覽opentelemetry-dotnetopentelemetry-dotnet-contribopentelemetry-dotnet-instrumentationSDK 的基本使用安裝依賴ResourcesResourceBuilder.CreateDefault()Resourc 閱讀全文
摘要:
[TOC] # 前世今生 ## OpenTracing OpenTracing 項目啟動于 2016 年,旨在提供一套分布式追蹤標準,以便開發人員可以更輕松地實現分布式追蹤。 OpenTracing 定義了一套 Tracing 模型,以及一套 API,用于在應用程序中創建和管理這些數據模型。 下面是 閱讀全文
摘要:
[TOC] # 什么是系統的可觀測性(Observability) 對軟件行業來說,可觀測性(Observability)是一個舶來詞,出自控制論(Control Theory)。 **可觀測性是系統的一個屬性**,它是指系統的狀態能否被觀測,也就是說,系統的狀態能否被監控、收集、分析、查詢、可視化 閱讀全文
摘要:
[TOC] # 前言 上文給大家介紹了 TimerQueue 的任務調度算法。 http://www.qzems.com/eventhorizon/p/17557821.html 這邊做一個簡單的復習。 TimerQueue 中的基本任務單元是 TimerQueueTimer,封裝待執行的定時 閱讀全文
摘要:
[TOC] # 前言 TimerQueue 是.NET中實現定時任務的核心組件,它是一個定時任務的管理器,負責存儲和調度定時任務。它被用于實現很多 .NET 中的定時任務,比如 System.Threading.Timer、Task.Delay、CancellationTokenSource 等。 閱讀全文
摘要:
# 什么是 long-running thread long-running task 是指那些長時間運行的任務,比如在一個 while True 中執行耗時較長的同步處理。 下面的例子中,我們不斷從隊列中嘗試取出數據,并對這些數據進行處理,這樣的任務就適合交給一個 long-running tas 閱讀全文
摘要:
Task.Wait 是 Task 的一個實例方法,用于等待 Task 完成,如果 Task 未完成,會阻塞當前線程。
非必要情況下,不建議使用 Task.Wait,而應該使用 await。
本文將基于 .NET 6 的源碼來分析 Task.Wait 的實現,其他版本的實現也是類似的。 閱讀全文
摘要:
CAS 的基本概念 CAS(Compare-and-Swap)是一種多線程并發編程中常用的原子操作,用于實現多線程間的同步和互斥訪問。 它操作通常包含三個參數:一個內存地址(通常是一個共享變量的地址)、期望的舊值和新值。 CompareAndSwap(內存地址,期望的舊值,新值) CAS 操作會比較 閱讀全文
摘要:
LRU緩存替換策略 緩存是一種非常常見的設計,通過將數據緩存到訪問速度更快的存儲設備中,來提高數據的訪問速度,如內存、CPU緩存、硬盤緩存等。 但與緩存的高速相對的是,緩存的成本較高,因此容量往往是有限的,當緩存滿了之后,就需要一種策略來決定將哪些數據移除出緩存,以騰出空間來存儲新的數據。 這樣的策 閱讀全文