摘要:表示的是兩個(gè),當(dāng)其中任意一個(gè)計(jì)算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經(jīng)常可見它的使用,在開始分析它的高并發(fā)實(shí)現(xiàn)機(jī)制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購(gòu),是兩個(gè)比較典型的互聯(lián)網(wǎng)高并發(fā)場(chǎng)景。
干貨:深度剖析分布式搜索引擎設(shè)計(jì)
分布式,高可用,和機(jī)器學(xué)習(xí)一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個(gè)名詞,今天我們首先來說說分布式。
探究高可用服務(wù)端架構(gòu)的優(yōu)秀資料索引從屬于筆者的 服務(wù)端應(yīng)用程序開發(fā)與系統(tǒng)架構(gòu) 系列文章;最近隨著公司業(yè)務(wù)的發(fā)展與終端用戶的增加,保證系統(tǒng)的高可用性也日漸成為團(tuán)隊(duì)考慮的重要因素,筆者也把去年以來看的一些文章歸集整理,拋磚引玉,如果有其他優(yōu)秀的望不吝賜教。
挺好,可以看看,架構(gòu)設(shè)計(jì)原則 - 減少一層又一層的流量
本文的目的正是分析 I/O 的內(nèi)在工作機(jī)制,你將了解到:Java 的 I/O 類庫的基本架構(gòu);磁盤 I/O 工作機(jī)制;網(wǎng)絡(luò) I/O 的工作機(jī)制;其中以網(wǎng)絡(luò) I/O 為重點(diǎn)介紹 Java Socket 的工作方式;你還將了解到 NIO 的工作方式,還有同步和異步以及阻塞與非阻塞的區(qū)別,最后我們將介紹一些常用的關(guān)于 I/O 的優(yōu)化技巧。
對(duì) AQS 進(jìn)行源碼剖析
高并發(fā)經(jīng)常會(huì)發(fā)生在有大活躍用戶量,用戶高聚集的業(yè)務(wù)場(chǎng)景中,如:秒殺活動(dòng),定時(shí)領(lǐng)取紅包等。
為了讓業(yè)務(wù)可以流暢的運(yùn)行并且給用戶一個(gè)好的交互體驗(yàn),我們需要根據(jù)業(yè)務(wù)場(chǎng)景預(yù)估達(dá)到的并發(fā)量等因素,來設(shè)計(jì)適合自己業(yè)務(wù)場(chǎng)景的高并發(fā)處理方案。
在電商相關(guān)產(chǎn)品開發(fā)的這些年,我有幸的遇到了并發(fā)下的各種坑,這一路摸爬滾打過來有著不少的血淚史,這里進(jìn)行的總結(jié),作為自己的歸檔記錄,同時(shí)分享給大家。
線程池在多線程編程的中可謂是個(gè)利器,使用線程池會(huì)大大提高多線程的效率。原因是使用線程池相對(duì)于new Thread有效避免了線程創(chuàng)建和銷毀的開銷。 在Java中一般來說通過Executors來創(chuàng)建所需要的線程池,如:Executors.newFixedThreadPool、Exe…
前面兩篇文章已經(jīng)整理了CompletableFuture大部分的特性,本文會(huì)整理完CompletableFuture余下的特性,以及將它跟RxJava進(jìn)行比較。 Either 表示的是兩個(gè)CompletableFuture,當(dāng)其中任意一個(gè)CompletableFuture計(jì)算完…
ConcurrentHashMap 是線程安全并且高效的 HashMap,在并發(fā)編程中經(jīng)常可見它的使用,在開始分析它的高并發(fā)實(shí)現(xiàn)機(jī)制前,先講講廢話,看看它是如何被引入 jdk 的。
前言 新書Java并發(fā)編程系統(tǒng)與模型已上線,歡迎拜讀。 由于微信小程序要使用Https,但是又不能修改已有線上的配置。所以最簡(jiǎn)單的方法就是使用nginx轉(zhuǎn)發(fā),在nginx上使用https,然后再轉(zhuǎn)發(fā)到內(nèi)部服務(wù)器。Nginx由于其優(yōu)良的性能。一臺(tái)4核16GB的內(nèi)存完全可以支撐日均…
互聯(lián)網(wǎng)正在高速發(fā)展,使用互聯(lián)網(wǎng)服務(wù)的用戶越多,高并發(fā)的場(chǎng)景也變得越來越多。電商秒殺和搶購(gòu),是兩個(gè)比較典型的互聯(lián)網(wǎng)高并發(fā)場(chǎng)景。雖然我們解決問題的具體技術(shù)方案可能千差萬別,但是遇到的挑戰(zhàn)卻是相似的,因此解決問題的思路也異曲同工。
不管你是新程序員還是老手,你一定在面試中遇到過有關(guān)線程的問題。Java 語言一個(gè)重要的特點(diǎn)就是內(nèi)置了對(duì)并發(fā)的支持,讓 Java 大受企業(yè)和程序員的歡迎。大多數(shù)待遇豐厚的 Java 開發(fā)職位都要求開發(fā)者精通多線程技術(shù)并且有豐富的 Java 程序開發(fā)、調(diào)試、優(yōu)化經(jīng)驗(yàn),所以線程相關(guān)的問題在面試中經(jīng)常會(huì)被提到。
ZooKeeper 是 Apache 的一個(gè)頂級(jí)項(xiàng)目,為分布式應(yīng)用提供高效、高可用的分布式協(xié)調(diào)服務(wù),提供了諸如數(shù)據(jù)發(fā)布 / 訂閱、負(fù)載均衡、命名服務(wù)、分布式協(xié)調(diào) / 通知和分布式鎖等分布式基礎(chǔ)服務(wù)。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的穩(wěn)定性,被廣泛地應(yīng)用于諸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系統(tǒng)中。本文的目標(biāo)讀者是對(duì) ZooKeeper 有一定了解的技術(shù)人員,將從 ZooKeeper 運(yùn)行模式、集群組成、容災(zāi)、擴(kuò)容和縮容四方面逐步深入,最終構(gòu)建出高可用的 ZooKeeper 集群。
最近遇到很多人來咨詢我關(guān)于瀏覽器緩存的一些問題,而這些問題都是類似的,因此總結(jié)本文來解答以后遇到類似問題的朋友。
因本文主要以瀏覽器緩存場(chǎng)景介紹,所以非瀏覽器場(chǎng)景下的一些用法本文不會(huì)介紹,而且本文以 chrome 為測(cè)試瀏覽器。
瀏覽器緩存是指當(dāng)我們使用瀏覽器訪問一些網(wǎng)站頁面或者 http 服務(wù)時(shí),根據(jù)服務(wù)端返回的緩存設(shè)置響應(yīng)頭將響應(yīng)內(nèi)容緩存到瀏覽器,下次可以直接使用緩存內(nèi)容或者僅需要去服務(wù)端驗(yàn)證內(nèi)容是否過期即可。這樣的好處可以減少瀏覽器和服務(wù)端之間來回傳輸?shù)臄?shù)據(jù)量,節(jié)省帶寬提升性能。
新書Java并發(fā)編程系統(tǒng)與模型已上線,歡迎拜讀。 一個(gè)日均PV在千萬以上的移動(dòng)客戶端,大概有20w-50w的注冊(cè)用戶數(shù)。為了簡(jiǎn)單起見,將一次PV來代表一次Http請(qǐng)求。在移動(dòng)客戶端下,這些是純邏輯的,不包含靜態(tài)頁面的訪問和圖片的訪問。 并發(fā)量 并發(fā)量的計(jì)算公式是pv/時(shí)間。無論…
從 JDK1.4 開始,java 中提供一個(gè)種叫 NIO(Non-Blocking IO)的 IO 處理機(jī)制。與以往的標(biāo)準(zhǔn) IO 機(jī)制 (BIO,Blocking IO) 不同的是,新的機(jī)制把重點(diǎn)放在了如何縮短抽象與現(xiàn)實(shí)之間的距離上面。NIO 中提出了一種新的抽象,NIO 彌補(bǔ)了原來的 BIO 的不足,它在標(biāo)準(zhǔn) Java 代碼中提供了高速的、面向塊的 I/O。
NIO 的包括三個(gè)核心概念: 緩沖區(qū)(Buffer)、通道(Channel)、選擇器(Selector)。
經(jīng)過本系列的上半部分 JDK1.8 AbstractQueuedSynchronizer 的實(shí)現(xiàn)分析的解讀,相信很多讀者已經(jīng)對(duì) AbstractQueuedSynchronizer(下文簡(jiǎn)稱 AQS) 的獨(dú)占功能了然于胸, 那么這次我們通過對(duì)另一個(gè)工具類: CountDownLatch 的分析來解讀 AQS 的另外一個(gè)功能:共享功能。
netty 源碼分析之拆包器,深入剖析了 netty 是如何支持各種數(shù)據(jù)包協(xié)議的原理
nginx、swoole 的高并發(fā)原理,讓我們一探究竟。
今天我們來研究學(xué)習(xí)一下 AbstractQueuedSynchronizer 類的相關(guān)原理, java.util.concurrent 包中很多類都依賴于這個(gè)類所提供的隊(duì)列式的同步器, 比如說常用的 ReentranLock,Semaphore 和 CountDownLatch 等.
?為了方便理解, 我們以一段使用 ReentranLock 的代碼為例, 講解 ReentranLock 每個(gè)方法中有關(guān) AQS 的使用.
在java.util.concurrent包中,大部分的同步器都是基于AbstractQueuedSynchronizer(AQS)這個(gè)框架實(shí)現(xiàn)的。這個(gè)框架為同步狀態(tài)提供原子性管理、線程的阻塞和解除阻塞以及排隊(duì)提供了一種通用機(jī)制。 同步器一般包含2種方法,一種是acquire,…
Java NIO 系列文章
Java 并發(fā)編程學(xué)習(xí)筆記整理
本文是對(duì)《大型網(wǎng)站架構(gòu)設(shè)計(jì)》(李智慧 著) 一書的梳理,類似文字版的 “思維導(dǎo)圖”。羅列了大型網(wǎng)站架構(gòu)涉及到的概念,附上了簡(jiǎn)單說明
ZooKeeper 的一致性算法賞析
前幾天,偶然看到了 《扛住 100 億次請(qǐng)求——如何做一個(gè) “有把握” 的春晚紅包系統(tǒng)”》(url)一文,看完以后,感慨良多,收益很多。正所謂他山之石,可以攻玉,雖然此文發(fā)表于 2015 年, 我看到時(shí)已經(jīng)是 2016 年末,但是其中的思想仍然是可以為很多后端設(shè)計(jì)借鑒,。同時(shí)作為一個(gè)工程師,看完以后又會(huì)思考,學(xué)習(xí)了這樣的文章以后,是否能給自己的工作帶來一些實(shí)際的經(jīng)驗(yàn)?zāi)兀克^紙上得來終覺淺,絕知此事要躬行,能否自己實(shí)踐一下 100 億次紅包請(qǐng)求呢?否則讀完以后腦子里能剩下的東西 不過就是 100 億 1400 萬 QPS 整流 這樣的字眼,剩下的文章將展示作者是如何以此過程為目標(biāo),在本地環(huán)境的模擬了此過程。
??實(shí)現(xiàn)的目標(biāo): 單機(jī)支持 100 萬連接,模擬了搖紅包和發(fā)紅包過程,單機(jī)峰值 QPS 6 萬,平穩(wěn)支持了業(yè)務(wù)。
??注:本文以及作者所有內(nèi)容,僅代表個(gè)人理解和實(shí)踐,過程和微信團(tuán)隊(duì)沒有任何關(guān)系,真正的線上系統(tǒng)也不同,只是從一些技術(shù)點(diǎn)進(jìn)行了實(shí)踐,請(qǐng)讀者進(jìn)行區(qū)分。因作者水平有限,有任何問題都是作者的責(zé)任,有問題請(qǐng)聯(lián)系 ppmsn2005#gmail.com
ZooKeeper 是一個(gè)開源的分布式協(xié)調(diào)服務(wù),由雅虎創(chuàng)建,是 Google Chubby 的開源實(shí)現(xiàn)。分布式應(yīng)用程序可以基于 ZooKeeper 實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布 / 訂閱、負(fù)載均衡、命名服務(wù)、分布式協(xié)調(diào) / 通知、集群管理、Master 選舉、分布式鎖和分布式隊(duì)列等功能。
ThreadPoolExecutor 源碼解析
Java 并發(fā)編程:線程池的使用
在了解具體的 Nginx 配置項(xiàng)之前我們需要對(duì)于 Nginx 配置文件的構(gòu)成有所概念,一般來說,Nginx 配置文件會(huì)由如下幾個(gè)部分構(gòu)成:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39783.html
摘要:我思考的是什么才算是高并發(fā)你一天幾個(gè)肯定高不了。所以我得出一個(gè)自定義概念如果某個(gè)系統(tǒng)的日在千萬級(jí)別以上,他就可能是一個(gè)高并發(fā)的系統(tǒng)。高并發(fā)的問題,我們具體該關(guān)心什么講真話,高并發(fā)是個(gè)比較抽象的概念。是指秒鐘響應(yīng)的請(qǐng)求數(shù)量。 這并不是一個(gè)回答的問題的文章,而是由此引發(fā)的一個(gè)思考。 大家心里仔細(xì)想想,當(dāng)你們聽到高并發(fā)網(wǎng)站時(shí),心里對(duì)這個(gè)網(wǎng)站是個(gè)什么概念?首先想到的是淘寶嗎?帶著問題,我們一起...
摘要:在中一般來說通過來創(chuàng)建所需要的線程池,如高并發(fā)原理初探后端掘金閱前熱身為了更加形象的說明同步異步阻塞非阻塞,我們以小明去買奶茶為例。 AbstractQueuedSynchronizer 超詳細(xì)原理解析 - 后端 - 掘金今天我們來研究學(xué)習(xí)一下AbstractQueuedSynchronizer類的相關(guān)原理,java.util.concurrent包中很多類都依賴于這個(gè)類所提供的隊(duì)列式...
摘要:在中一般來說通過來創(chuàng)建所需要的線程池,如高并發(fā)原理初探后端掘金閱前熱身為了更加形象的說明同步異步阻塞非阻塞,我們以小明去買奶茶為例。 AbstractQueuedSynchronizer 超詳細(xì)原理解析 - 后端 - 掘金今天我們來研究學(xué)習(xí)一下AbstractQueuedSynchronizer類的相關(guān)原理,java.util.concurrent包中很多類都依賴于這個(gè)類所提供的隊(duì)列式...
摘要:表示的是兩個(gè),當(dāng)其中任意一個(gè)計(jì)算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經(jīng)常可見它的使用,在開始分析它的高并發(fā)實(shí)現(xiàn)機(jī)制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購(gòu),是兩個(gè)比較典型的互聯(lián)網(wǎng)高并發(fā)場(chǎng)景。 干貨:深度剖析分布式搜索引擎設(shè)計(jì) 分布式,高可用,和機(jī)器學(xué)習(xí)一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個(gè)名詞,今天我們首先來說說分布式。 探究...
摘要:表示的是兩個(gè),當(dāng)其中任意一個(gè)計(jì)算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經(jīng)常可見它的使用,在開始分析它的高并發(fā)實(shí)現(xiàn)機(jī)制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購(gòu),是兩個(gè)比較典型的互聯(lián)網(wǎng)高并發(fā)場(chǎng)景。 干貨:深度剖析分布式搜索引擎設(shè)計(jì) 分布式,高可用,和機(jī)器學(xué)習(xí)一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個(gè)名詞,今天我們首先來說說分布式。 探究...
閱讀 1231·2021-11-23 09:51
閱讀 678·2021-11-19 09:40
閱讀 1337·2021-10-11 10:58
閱讀 2347·2021-09-30 09:47
閱讀 3726·2021-09-22 15:55
閱讀 2159·2021-09-03 10:49
閱讀 1250·2021-09-03 10:33
閱讀 698·2019-08-29 17:12