原创 .NET Core 服務在 ARM64 服務器中的部署

Linux 服務器 CPU 架構主要可分爲:X86_64/AMD64、ARM64/AARCH64 兩大類,大多情況使用的都是基於 AMD64 CPU 架構的服務器。但隨着國產操作系統、CPU 等自主生態打造的應用產品得到越來越多的用戶認可和

原创 .NET Core dump 分析

服務 CPU 或 內存偶爾飆高是部署環境中經常遇到的問題,一般會採用記錄日誌的方式來診斷,不過有些情況靠日誌可能並不能分析出個所以然,面對實在無頭緒的問題也只能暫時使用重啓大法先恢復。 爲了儘可能精準的定位問題,掌握通過 dump 分析服務

原创 .NET Core 消息傳遞:MediatR

MediatR 是參考中介者模式實現的一個 .NET 工具類庫,支持在進程內以單播或多播的形式進行消息傳遞,通過使用 MediatR 可實現消息的發送和處理充分解耦。 在介紹 MediatR 之前,先簡單瞭解下中介者模式。中介者模式主要是指

原创 .NET Core Cookie SameSite

在較多的項目中,Cookie 是比較常用的一種狀態保持的選擇。比如常見的例子:用戶登錄成功後,服務器通過 set-cookie 將會話Id設置到當前域下,前端在調用後端接口時,會自動將同域下的 Cookie 攜帶上,然後後端接口再獲取到會話

原创 .NET Core 取消令牌:CancellationToken

在 .NET 開發中,CancellationToken(取消令牌)是一項比較重要的功能,掌握併合理的使用 CancellationToken 可以提升服務的性能。特別在異步編程中,我常常會以創建 Task 的方式利用多線程執行一些耗時或非

原创 .NET Core + Kubernetes:StatefulSet

在 Kubernetes 中,Pod 資源的控制器 Deployment、Replicaset、Daemonset 等常用於管理無狀態應用,它們所管理的 Pod 對應的 IP、名字,啓停順序等都是隨機的,Pod 之間也並不存在任何關聯關係。

原创 ASP.NET Core Cookie SameSite

在較多的項目中,Cookie 是比較常用的一種狀態保持的選擇。比如常見的例子:用戶登錄成功後,服務器通過 set-cookie 將會話Id設置到當前域下,前端在調用後端接口時,會自動將同域下的 Cookie 攜帶上,然後後端接口再獲取到會話

原创 .NET Core + Kubernetes:Helm

Helm 作爲 Kubernetes 體系的包管理工具,已經逐漸成爲了應用分發標準,在 .NET 開發中,可以理解爲與 NuGet 包類似。回顧之前文章中的介紹,Kubernetes 中單個服務的部署有時會涉及到多種資源類型,如:Deplo

原创 .NET Core + Ocelot:API 網關

關於 API 網關的作用,核心是 API 請求的收口及控制,如:鑑權、限流、熔斷、數據緩存 等都是開發中常見的需求,將此類需求交給網關層處理,可以使每個微服務更聚焦於業務功能開發,同時也可爲下游服務的安全及穩定性保駕護航。 在之前的文章

原创 ASP.NET Core 消息傳遞:MediatR

MediatR 是參考中介者模式實現的一個 .NET 工具類庫,支持在進程內以單播或多播的形式進行消息傳遞,通過使用 MediatR 可實現消息的發送和處理充分解耦。 在介紹 MediatR 之前,先簡單瞭解下中介者模式。中介者模式主要是指

原创 .NET Core + Kubernetes:Volume

和 Docker 類似,Kubernetes 中也提供了 Volume 來實現數據卷掛載,但 Kubernetes 中 Volume 是基於 Pod,而不是容器,它可被 Pod 中多個容器共享,另外 Kubernetes 中提供比較豐富的

原创 ASP.NET Core 日誌模型

.NET Core 提供了獨立的日誌模型,採用統一的 API 來完成日誌的記錄,支持各種內置日誌記錄器(如:Console、Debug、EventSource、EventLog、TraceSource 等 )和第三方日誌框架 (如: Log

原创 ASP.NET Core gRPC 攔截器

gRPC 作爲一套獨立的 RPC 框架,像攔截器這種功能當然也是不可或缺的,框架自帶的攔截器更多是基於框架本身出發,對於 gRPC 來說最突出的就是需要支持各種不同 RPC 調用方式的攔截,如:簡單 RPC 調用、流式 RPC 調用,流式調

原创 ASP.NET Core 診斷跟蹤:DiagnosticSource

最近在研究全鏈路監控的實現方式,目的是計劃在項目中加入全鏈路日誌的支持,說到這個問題肯定有人會想到 APM,如:SkyWalking、Cat、Zipkin、Pinpoint 、Elastic APM 等,確實市面上已經存在現成的全鏈路監控框

原创 VS 擴展開發:Grpc Proto To Nuget Package

背景 一直以來我們使用 gRPC 來進行微服務開發,對 gRPC 有過了解應該清楚它依賴 proto 接口定義文件來實現的,在進行服務調用之前,需要先通過 proto 文件來生成當前服務使用語言的客戶端代碼,然後就可以實現調用本地方法一樣調