原创 ASP.NET 自定義項目模板

前言 在微服務架構盛行的時代,一言不合就新建一個服務,雖然搭建服務並沒什麼難度,但不可避免的是每個人搭建出來的架子會存在差異,這很合理,因爲每個開發者的個人風格、工作經驗都不一樣,難免認爲自己喜歡的纔是最好的。另一方面,如果需要較頻繁搭建服

原创 Apollo 配置中心:客戶端接入

通過上篇文章 分佈式部署 的介紹 ,接下來就可以在程序中接入 Apollo 客戶端進行調用,這邊文章主要介紹在 Java 和 .NET Core 中如何接入,更多可參考 其它語言客戶端接入指南。 創建應用 在客戶端接入 Apollo 之前,

原创 Apollo 配置中心:分佈式部署

Apollo(阿波羅)是攜程框架部門研發的分佈式配置中心,能夠集中化管理應用不同環境、不同集羣的配置,配置修改後能夠實時推送到應用端,並且具備規範的權限、流程治理等特性,適用於微服務配置管理場景。 服務端架構 上圖簡要描述了 Apollo

原创 ZooKeeper 實現分佈式鎖

ZooKeeper 是一個典型的分佈式數據一致性解決方案,分佈式應用程序可以基於 ZooKeeper 實現諸如數據發佈/訂閱、負載均衡、分佈式協調/通知、集羣管理、Master 選舉、分佈式鎖等功能。 節點 在介紹 ZooKeeper 分佈

原创 .NET Core + Consul 服務註冊與發現

Consul 介紹 在分佈式架構中,服務治理是必須面對的問題,如果缺乏簡單有效治理方案,各服務之間只能通過人肉配置的方式進行服務關係管理,當遇到服務關係變化時,就會變得極其麻煩且容易出錯。 Consul 是一個用來實現分佈式系統服務發現與配

原创 算法:零錢兌換

問題 給定不同面額的硬幣(coins)和一個總金額(amount) 。寫一個函數來計算可以湊成總金額所需的最少的硬幣個數,如果沒有任何一種硬幣組合能滿足,返回 -1。 示例1 輸入:coins = [1, 2, 5], amount =

原创 .NET Core + Spring Cloud:熔斷降級

在微服務架構下,服務之間彼此隔離,服務之間的調用通過網絡請求,在衆多服務中,可能因爲網絡或服務本身的原因引起某些接口異常是很常見的現象,接口超時或報錯在實際情況下偶發也屬正常,但如果短時間內不斷的出現並積壓,就可能引起服務崩潰。 Hystr

原创 .NET Core + Spring Cloud:API 網關

API網關是系統的唯一入口,調用任何服務的請求都需要經過網關層,最終纔可能到達目標服務,既然是必經之路,那我們可以在網關層進行一些通用的操作,如:認證、鑑權、限流、智能路由、緩存、日誌、監控、超時、熔斷、重試等等,這樣既使整個框架條理清晰,

原创 .NET Core + Spring Cloud:服務註冊與發現

毫無疑問,微服務架構是目前的主流,在微服務架構下,服務治理、負載均衡、服務熔斷、配置中心、API網關 等都是需要關注的問題,當然不是非要全部完善後才能進行微服務開發,在很多項目團隊中,初期可能會將某個服務部署成集羣,然後通過 Nginx 代

原创 RedLock 實現分佈式鎖

併發是程序開發中不可避免的問題,根據系統面向用戶、功能場景的不同,併發的重視程度會有不同。從程序的角度來說,併發意味着相同的時間點執行了相同的代碼,而有些情況是不被允許的,比如:轉賬、搶購佔庫存等,如果沒有做好臨界條件的驗證,會帶來非常嚴重

原创 ASP.NET Core 日誌收集(log4net+Kafka+ELK)

在開發環境中,記錄日誌這件事情常常被忽視,因爲我們有強大的 IDE ,可以調試,可以斷點,問題出現後一般都能很快解決。但在生產環境,異常一旦發生,如果不能重現,又沒有提前做好日誌記錄,就會非常被動,問題的定位也可能需要花很多時間,問題最終也

原创 Kafka 集羣

Kafka 是一個分佈式消息系統,具有高水平擴展和高吞吐量的特點。在Kafka 集羣中,沒有 “中心主節點” 的概念,集羣中所有的節點都是對等的。 Kafka 幾大概念 Topic(主題) Kafka 中可將消息分類,每一類的消息稱爲一個

原创 SkyWalking-netcore 無入侵分佈式追蹤

SkyWalking-netcore 最近更新的版本改成了無入侵的集成方式,主要思想應該是分離開發和監測,開發只管代碼部分,監測的問題是代碼程序之外的工作。 基於之前 SkyWalking 分佈式追蹤系統 的介紹,一些概念性的內容、環境搭

原创 SonarQube 搭建代碼質量管理平臺(二)

通過 SonarQube 搭建代碼質量管理平臺(一) 的介紹,如果每次都需要手動執行 sonar-scanner ,想想也是醉了,所以我們需要進一步完善 SonarQube 進行自動化代碼分析。 從官方文檔的 Scanners 部分可以看出

原创 Elasticsearch 集羣

Cluster 集羣 一個 Elasticsearch 集羣由一個或多個節點(Node)組成,每個集羣都有一個共同的集羣名稱作爲標識。 Node 節點 一個 Elasticsearch 實例即一個 Node,一臺機器可以有多個實例,正常使