原创 kafka consumer group設計的巧妙以及討厭的rebalance

文章目錄一.consumer group的特性二.特性導致的好處三.每個group如何管理它的offset四.Rebalance 一.consumer group的特性 consumer group下可能有一個或多個consum

原创 以假想公司的視角來看微服務網關和BFF的演化

序 本文主要通過虛擬一個公司的業務發展,來觀看微服務網關和BFF的演化 v1版本的soa服務 在2010年左右有個叫highShop的電商互聯網公司成立了,他有一定的業務規模,內部已經完成了單體應用拆分,soa服務化,採用的是瀏覽

原创 後端接口簽名的一點思考

好久沒寫博客了,打起字來都不知道怎麼總結文字了。 首先,明白一點,接口只要暴露在公網就沒有了絕對的安全,我們使用https也好,jwt也好還是簽名也罷,都是將我們接口協議被攻擊的成本大大增加,使得黑客或者別有用心之人去衡量攻擊我們

原创 隨筆-企圖理解DDD的領域之代碼能力下沉

    今天一直在坐火車,一直在想以前很多大佬關於DDD的分析與拆解的文章,說實話光是其中比如限界上下文,子域,聚合根等等,這些抽象的術語就像攔路虎一樣去了解DDD,真的想起來mvc,mvvc是多麼容易讓人理解呀,那真是個十分和諧

原创 流量突增限流策略

思考 由於疫情,我們做的是互聯網教育類,所以今年我們的產品流量增加了兩倍,但是通過擴容加機器資源的方式完全扛住了,突然想到如果是爆發式的,假如流量突增10倍甚至20倍該如何處理呢?仔細思考了了一下這個問題,加上查找資料,就想簡單寫

原创 es加快查詢速度的小套路

文章目錄一. es查詢速度與內存的關係二. 沒有銀彈的優化手段1. 不必緩存所有的字段信息2. 數據預熱3. 文檔模型的合理設計4.坑爹的深度分頁 一. es查詢速度與內存的關係 當我們向es裏面寫數據的時候,實際上都會寫到磁盤文

原创 那些不能使用kafka默認的配置有哪些?

前言 毫無疑問首先需要了解kafka各組件的概念,然後我個人覺得在日常的開發中其實去熟悉kafka的集羣配置是非常重要且優先級很高的一環,因爲原理性的東西很多,想去學習源碼更不是一天兩天就能做完的事,但是生產環境的kafka集羣配

原创 (四)go-kit服務註冊與發現

前言 爲什麼需要服務註冊與發現? 在微服務架構下,原單體服務被拆分爲多個服務獨立部署,維護數量過多的服務地址,運維人員無法高效工作。所以,在微服務架構中引入了服務註冊中心,用於接受和維護各個服務地址的地址信息。客戶端或者網關可以通

原创 gitlab上CI/CD的一些小實踐和理解

前言 之前用jenkins做的CI/CI,現在在新公司的業務CI/CD的流程是全部跑在gitlab上面,弄了一兩天終於算是能完全跑通了,其實歸根到底還是要把持續集成的部署給拆開成鏈式的,一步步執行,即使每次迭代一點點東西也可以使得

原创 (六)go-kit集成jaeger實現服務鏈路追蹤

前言 微服務架構是一個分佈式架構,實際開發中,我們按照業務要求劃分服務單元,一套系統往往由多個業務單元構成。在這個場景中,一個請求肯能要經歷多個業務單元的處理才能完成響應,如果出現了異常或者錯誤,很難定位。在往常的查詢中我們往往會

原创 (序)開箱go-ki從0開始搭建微服務

前言 筆者目前從事go後端的微服務開發,用的是公司自研的框架,這個框架有好有壞,在業務的快速發展期讓我們能迅速迭代業務,但是以成熟的微服務體系來看一些基礎設施並不完善,而且我來的時候框架都做好了,主要是堆業務代碼和性邏輯代碼能優

原创 (三)go-kit服務接口限流

前言 限流這層按說是應該在網關那做的,這裏爲了學習go kit暫時放在這裏 在middleware/rate.go使用gokit的endpointMiddleWare定義一個限流中間件,在main函數裏面將要限流的接口用這個函數裝

原创 (二)go-kit自定義error處理

前言 本文介紹go-kit自定義error處理,本文地址: github地址,這樣做的目的是返回自定義的文本錯誤,將http狀態碼直接寫進http status code裏面,這有利於日誌錯誤分類的收集和統計 1.自定義一個解碼函