原创 分佈式系統中服務降級策略探究-chat

在分佈式系統架構中多個系統之間通常是通過遠程RPC調用進行通信,也就是 A 系統調用 B 系統服務,B 系統調用 C 系統的服務。當尾部應用 C 發生故障而系統 B 沒有服務降級時候可能會導致 B,甚至系統 A 癱瘓,這種現象被稱

原创 增強版的ThreadLocal-TransmittableThreadLocal

一、前言 ThreadLocal是JDK裏面提供的一個thread-local(線程局部)的變量,當一個變量被聲明爲ThreadLocal時候,每個線程會持有該變量的一個獨有副本;但是ThreadLocal不支持繼承性,雖然JDK

原创 HttpClient的異步調用,你造?

**一、前言**HttpClient提供了兩種I/O模型:經典的java阻塞I/O模型和基於Java NIO的異步非阻塞事件驅動I/O模型。Java中的阻塞I/O是一種高效、便捷的I/O模型,非常適合併發連接數量相對適中的高性能應用程序。只

原创 高性能網絡通信框架Netty-基礎概念篇

一、前言 Netty是一種可以輕鬆快速的開發協議服務器和客戶端網絡應用程序的NIO框架,它大大簡化了TCP或者UDP服務器的網絡編程,但是你仍然可以訪問和使用底層的API,Netty只是對其進行了高層的抽象。 Netty的簡易和快

原创 微服務核心組件 Zuul 網關原理剖析

一、前言 Zuul 網關是具體核心業務服務的看門神,相比具體實現業務的系統服務來說它是一個邊緣服務,主要提供動態路由,監控,彈性,安全性等功能。在分佈式的微服務系統中,系統被拆爲了多套系統,通過zuul網關來對用戶的請求進行路由,

原创 Java併發編程視頻分享-第一期

一、主講人:加多(阿里集團-淘寶技術部-高級開發工程師) **本名:**翟陸續 目前在阿里巴巴淘寶移動中間件消息服務組工作,熱衷併發編程,開源框架,架構設計。 著作:《Java併發編程之美》 二、本次課程內容: 什麼是線程?

原创 dubbo剖析-服務降級

一、前言 dubbo提供了一些服務降級措施,當服務提供端某一個非關鍵的服務出錯時候,dubbo可以對消費端的調用進行降級,這樣服務消費端就避免了在去調用出錯的服務提供端,而是使用自定義的返回值直接在在本地返回。 二、如何使用服務降

原创 Dubbo剖析-併發控制

一、前言 前面講解了Dubbo的服務降級,本節我們來講解dubbo中的併發控制,併發控制分爲客戶端併發控制和服務端併發控制。 二、併發控制 2.1 客戶端併發控制 在服務消費方法進行併發控制需要設置actives參數,如下: <d

原创 談談Go併發編程

一、前言 Go語言在設計時,Java和C ++是編寫服務器程序最常用的語言(至少在Google是這樣),這是因爲使用這些語言可以高效的開發。但是Go設計者們覺得像Java和C++這些語言需要開發者記憶太多的語法和規則,並且需要重複

原创 高性能可擴展分佈式RPC框架Dubbo-內核原理揭祕

一、前言 整體來說,一個公司業務系統的演進流程基本都是從單體應用到多體應用。在單體應用時,不同業務模塊相互調用直接在本地 JVM 進程內就可以完成;而變爲多個應用時,相互之間進行通信的方式就不能簡單的進行本地調用了,因爲不同業務模

原创 GoLang內存模型

一、前言 Go語言的內存模型規定了一個goroutine可以看到另外一個goroutine修改同一個變量的值的條件,這類似java內存模型中內存可見性問題(Java內存可見性問題可以參考拙作:Java併發編程之美一書)。 當多個gor

原创 Go併發編程之美-CAS操作

一、前言 go語言類似Java JUC包也提供了一些列用於多線程之間進行同步的措施,比如低級的同步措施有 鎖、CAS、原子變量操作類。相比Java來說go提供了獨特的基於通道的同步措施。本節我們先來看看go中CAS操作 二、CAS操作 go

原创 Go併發編程之美-條件變量

一、前言 go語言類似Java JUC包也提供了一些列用於多線程之間進行同步的措施,比如低級的同步措施有 鎖、CAS、原子變量操作類。相比Java來說go提供了獨特的基於通道的同步措施。本節我們先來看看go中與鎖相關的條件變量 二、條件變量

原创 Go併發編程之美-讀寫鎖

一、前言 go語言類似Java JUC包也提供了一些列用於多線程之間進行同步的措施,比如低級的同步措施有 鎖、CAS、原子變量操作類。相比Java來說go提供了獨特的基於通道的同步措施。本節我們先來看看go中讀寫鎖 二、讀寫鎖 go中

原创 Go併發編程之美-互斥鎖

一、前言 go語言類似Java JUC包也提供了一些列用於多線程之間進行同步的措施,比如低級的同步措施有 鎖、CAS、原子變量操作類。相比Java來說go提供了獨特的基於通道的同步措施。本節我們先來看看go中互斥鎖 二、互斥鎖 互斥鎖是獨佔