原创 架構師成長之路之Servicemesh罪與罰

前言 現在市面上有非常多介紹Servicemesh概念、架構、方法論以及標準化實現的文章,但是對於Servicemesh應該如何才能被真正有效可靠的落地,我們會面臨哪些困難選擇,並未太多提及。本文希望從這個角度出發,結合筆者在生產環境落地

原创 架構師成長之路之限流

文章目錄1. 我們爲什麼需要限流2. 我們常見的限流手段2.1 信號量計數2.2 線程池隔離2.3 固定窗口計數2.4 自然窗口計數2.5 滑動窗口計數2.5.1 基於共享分佈式內存2.5.2 基於本地內存2.6 令牌桶和漏桶算法計數

原创 【Servicemesh系列】【Envoy源碼解析(三)】一個Http請求到響應的全鏈路(二)

目錄 目錄 4. 請求解析 5. 請求的編解碼器初始化階段 6. 請求頭處理階段 6.1 解析Http_Method 6.2 生成&遍歷FilterChain、Router匹配 6.3 負載均衡 6.4 獲取/創建Upstream連

原创 【Servicemesh系列】【Envoy源碼解析(二)】一個Http請求到響應的全鏈路(一)

目錄 目錄 1. http連接建立 2. 請求數據獲取 讀數據的整體邏輯 3. 請求數據處理流程拼裝 1. http連接建立 當有新連接過來的時候,會調用上一章節所提及的被註冊到libevent裏面的回調函數。我們回顧

原创 【大型網站技術架構筆記】(二)大型網站架構模式與核心要素

架構模式 系統朝大型系統衍變的過程中,如下幾個架構模式是我們應該考慮也終將經歷的。 分層 即對系統進行橫向劃分。比如進行MVC分層,又可分爲接入層、業務層、核心數據層。應當禁止跨層調用以及逆向調用。 分割 即對系統進行縱向劃分。比如在業務

原创 【大型網站技術架構筆記】(四)伸縮性、可擴展性與安全

網站架構的伸縮性設計 一般手段有兩種。一類是根據功能進行物理分離,一類是對單一功能進行集羣化來實現。比如將緩存、靜態文件、數據庫服務從服務器中拆分進行單獨部署,比如對業務邏輯進行橫向縱向切分等,都屬於通過物理分離來達成整個系統處理能力的伸

原创 【SEDA異步框架】【三】異步框架技術選型

基於SEDA的異步框架設計與實現 三、異步框架技術選型        在這次實現的SEDA異步框架中,採用的基礎架構原型如下:         採用了spring+quartz+fastjson+rabbitmq來實現。和傳統SEDA架

原创 spring-data-redis中的坑和誤區

spring的redis模板中有問題的地方 在項目開發過程中,想要進行redis的併發控制,這時候,想當然地使用了spring-data-redis庫中template裏面提供的multi()和exec()方法,如下: redis.mul

原创 【大型網站技術架構筆記】(三)高性能與高可用架構

性能測試指標 1.響應時間。 2.併發數。如果暫時沒有對應的準確監控,針對不同業務模型,可以有不一樣的併發數的預估。我們的系統進行峯值併發數預估的話,有一種比較粗略的計算方式,即全天請求平均每秒併發數 * 3。但也需要case by c

原创 【Servicemesh系列】【章1】微服務發展路徑(上)

目錄 目錄 1.1 MVP階段 1.2 微服務 1.3 後微服務時代 1.3.1 虛擬化,標準化,產品化 1.3.2 程序包含環境,而非剝離環境 1.3.3 少慣“寵物”,多養“奶牛”,權衡而非對抗 關於Servicemes

原创 一致性哈希原理與實現

寫在前面 一致性哈希算法在實現集羣軟負載均衡時候可以使用。實現上感覺有點類似zookeeper關於共享鎖和主從選擇的算法。都是通過有序且唯一的節點來實現的。而虛擬化一致性哈希則採用了web架構中經常使用的“虛擬化”思路來實現。總的來說,一

原创 【SEDA異步框架】【二】爲什麼使用SEDA

基於SEDA的異步框架設計與實現       二、爲什麼使用SEDA          目前,面對併發環境,主流互聯網服務器編程模型有兩種:多線程模型以及事件驅動模型。但是這兩個模型都不足以解決這個問題。我們來首先看一下這兩種編程模型。

原创 rabbitmq學習筆記

前一陣子寫SEDA異步框架的時候,使用了rabbitmq作爲分佈式消息隊列(見前文),把一些學習官網教程的筆記簡單備忘。示例都來自官網   Part 2 Work Queues   1、round-robin dispatcherin

原创 ThreadPoolExecutor和CyclicBarrier配合使用可能帶來的隱患

今天是很蛋疼的一天,排查一個bug排查了4個多小時。 情形簡化之後大概是這樣的: 我使用了spring的ThreadPoolTaskExecutor來進行併發時候的異步處理。並且給任務Runnable加上了

原创 【SEDA異步框架】【一】SEDA國內外研究現狀

  基於SEDA的異步框架設計與實現   一、SEDA國內外研究現狀 1、SEDA架構的起源和特點    當前最流行的互聯網服務器模型基本都是基於多線程/進程併發服務模型。然而當線程數目增加到一定值後,系統性能會下降,這就限制了系統支持