原创 常用架構模式

根據維基百科中的定義: 架構模式是一個通用的、可重用的解決方案,用於在給定上下文中的軟件體系結構中經常出現的問題。架構模式與軟件設計模式類似,但具有更廣泛的範圍。 在本文中,將簡要地解釋以下10種常見的體系架構模式,以及它們的用法、優

原创 併發基礎(1):wait、sleep、await、yield的區別

是否釋放鎖:調用sleep和yield的時候不釋放當前線程所獲得的鎖,但是調用await/wait的時候卻釋放了其獲取的鎖並阻塞等待。   調用後何時恢復: # sleep讓線程阻塞,且在指定的時間之內都不會執行,時間到了之後恢復到就緒狀

原创 Mysql(1):由淺入深探究mysql索引結構原理、性能分析與優化

第一部分:基礎知識: 索引 官方介紹索引是幫助MySQL高效獲取數據的數據結構。筆者理解索引相當於一本書的目錄,通過目錄就知道要的資料在哪裏,不用一頁一頁查閱找出需要的資料。關鍵字index -----------------------

原创 Mysql(3):事務、鎖及鎖級別

1、什麼是事務 事務是一條或多條數據庫操作語句的組合,具備ACID,4個特點。 原子性:要不全部成功,要不全部撤銷 隔離性:事務之間相互獨立,互不干擾 一致性:數據庫正確地改變狀態後,數據庫的一致性約束沒有被破壞 持久性:事務的提交結果,

原创 Mysql(2):MyISAM和InnDB的區別

MyISAM: 不支持事務,但是每次查詢都是原子的; 支持表級鎖,即每次操作是對整個表加鎖; 存儲表的總行數; 一個MYISAM表有三個文件:索引文件、表結構文件、數據文件; 採用菲聚集索引,索引文件的數據域存儲指向數據文件的指針。輔索引

原创 服務溶斷、降級、限流(1):概念

服務熔斷 在介紹熔斷機制之前,我們需要了解微服務的雪崩效應。在微服務架構中,微服務是完成一個單一的業務功能,這樣做的好處是可以做到解耦,每個微服務可以獨立演進。但是,一個應用可能會有多個微服務組成,微服務之間的數據交互通過遠程過程調用完成

原创 Dubbo(2):分組與版本號

一、前言 在Dubbo中接口類並不能唯一確定一個服務,在dubbo中接口+服務分組+版本號才能唯一確定一個服務,本文就來講解下服務分組和版本號的使用。 二、服務分組 當一個接口有多種實現時,可以用 group 區分。 服務提供方: i

原创 iptables(1):介紹

iptables防火牆可以用於創建過濾(filter)與NAT規則。所有Linux發行版都能使用iptables,因此理解如何配置iptables將會幫助你更有效地管理Linux防火牆。如果你是第一次接觸iptables,你會覺得它很複雜

原创 iptables(3):NAT網絡

本文主要介紹如何使用iptbales實現linux2.4下的強大的NAT功能。關於iptables的詳細語法請參考“用iptales實現包過慮型防火牆”一文。需要申明的是,本文絕對不是 NAT-HOWTO的簡單重複或是中文版,在整個的敘述

原创 Netty(1):線程模型

本文主要介紹Netty線程模型及其實現,介紹Netty線程模型前,首先會介紹下經典的Reactor線程模型,目前大多數網絡框架都是基於Reactor模式進行設計和開發,Reactor模式基於事件驅動,非常適合處理海量的I/O事件。下面簡單

原创 Dubbo(4):服務提供方Invoker到Exporter的轉換

一、前言 前面dubbo整體架構分析裏面我們講解了服務提供者暴露一個服務的詳細過程是,首先具體服務的實現類轉換爲了Invoker對象,然後Invoker在轉換爲Exporter,本文就來講解第二步轉換。 image.png 二、Invo

原创 Dubbo(3):服務提供方實現類到Invoker的轉換

一、前言 前面dubbo整體架構分析裏面我們講解了服務提供者暴露一個服務的詳細過程是,首先具體服務的實現類轉換爲了Invoker對象,然後Invoker在轉換爲Exporter,本文就來講解第一步轉換。   二、實現類到Invoker對

原创 Dubbo(1):線程模型

一、前言 Dubbo默認的底層網絡通訊是使用Netty來做的,在服務提供方NettyServer使用兩級線程池,其中EventLoopGroup(boss)主要用來接受客戶端的鏈接請求,並把接受的請求分發給EventLoopGroup(w

原创 分佈式事務(2):一致性協議

2PC與3PC 在分佈式系統中,每一個機器節點雖然都能夠明確地知道自己在進行事務操作過程中的結果是成功或失敗,但卻無法直接獲取到其他分佈式節點的操作結果。因此,當一個事務操作需要跨越多個分佈式節點的時候,爲了保持事務處理的ACID特性,就

原创 存淘汰算法--LRU算法

1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根據數據的歷史訪問記錄來進行淘汰數據,其核心思想是“如果數據最近被訪問過,那麼將來被訪問的機率也更高”。 1.2. 實現 最常見的實現是使用一