原创 依賴注入(dependency injection)最通俗的講解

這篇文章解釋了什麼是依賴注入(又稱控制反轉),以及它如何改善定義業務邏輯的代碼。 服務和依賴 服務可以是您編寫的類,也可以是來自導入庫的類。例如,它可以是一個 logger 或一個 database connection。因此,您可以編寫一

原创 記錄 gRPC Deadlines 的一次事故

收到交易服務的報警,服務器內存暴增。後經排查發現是由於gRPC客戶端調用的時候在上下文(context)中未設置Deadline導致的。那麼爲什麼未設置Deadline會導致內存耗盡呢? 當您使用gRPC時,gRPC庫負責通信,編組,解組和

原创 Elasticsearch 入門教程

Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調用它的接口。Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。 一、安裝 環境 #lsb_releas

原创 劃分微服務邊界的5個特徵

當我們討論微服務時,更多的是學習技術上怎麼實現,而當你掌握了微服務技術之後,你會發現微服務的劃分也是個難點。在微服務劃分時,一般情況下都會考慮按業務功能劃分、確保服務和服務之間要解偶等等,而實際在設計微服務系統時這些方法可能依然會存在很多問

原创 Opentracing and Jaeger in a real Go Microservices

背景 微服務極大地改變了軟件的開發和交付模式,單體應用被拆分爲多個微服務,單個服務的複雜度大幅降低,庫之間的依賴也轉變爲服務之間的依賴。由此帶來的問題是部署的粒度變得越來越細,衆多服務給運維帶來巨大壓力,不過好在我們有 Kubernetes