性能測試 Case1:求數(shù)據(jù)集中某個字段的最大值 benchmark 結(jié)果如下 從上圖可以看出,常規(guī)方法的速度是 linq 的110倍左右,linq進行了大量的內(nèi)存分配操作,...
性能測試 Case1:求數(shù)據(jù)集中某個字段的最大值 benchmark 結(jié)果如下 從上圖可以看出,常規(guī)方法的速度是 linq 的110倍左右,linq進行了大量的內(nèi)存分配操作,...
原理 守護進程(daemon) 守護進程是一類在后臺運行的特殊進程,用于執(zhí)行特定的系統(tǒng)任務(wù)。他獨立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。Linux系統(tǒng)的...
業(yè)務(wù)使用Redis做緩存,當(dāng)有數(shù)據(jù)更新時,如何保證緩存及時更新 讀數(shù)據(jù)流程 請求到來,業(yè)務(wù)代碼會先查Redis,查不到再去查DB,并將結(jié)果寫入Redis 寫數(shù)據(jù)方案 1. 先...
單實例往往不能滿足生產(chǎn)環(huán)境的需求,需要引入Redis集群,比較常見的Redis集群方案有主從復(fù)制、哨兵模式、官網(wǎng)的Redis Cluster,另外還有一些Proxy模式,各大...
什么是熱點key? 對于web應(yīng)用來說,用戶消費的數(shù)據(jù)遠遠大于生產(chǎn)的數(shù)據(jù),大多人使用都只是進行瀏覽,少數(shù)的人才會進行評論。對于web服務(wù)來說,某些熱門的內(nèi)容,讀請求的量級可能...
什么是協(xié)程? 進程和線程 一個應(yīng)用程序時運行在操作系統(tǒng)上的一個進程。進程是一個運行在自己獨立內(nèi)存空間的獨立執(zhí)行體,是操作系統(tǒng)進行資源分配的最小單位。一個進程則有一個或多個線程...
全局唯一ID要求 分布式系統(tǒng)中,我們會對一些數(shù)據(jù)量大的業(yè)務(wù)進行拆分,如用戶表、訂單表,當(dāng)數(shù)據(jù)量巨大導(dǎo)致數(shù)據(jù)庫性能下降時,通常會進行分庫分表,無法利用MySQL的自增ID,那么...
基本概念說明 理解Linux的IO模型之前,首先要了解一些基本概念,才能理解這些IO模型設(shè)計的依據(jù) 用戶空間和內(nèi)核空間 操作系統(tǒng)使用虛擬內(nèi)存來映射物理內(nèi)存,對于32位的操作系...
MySQL是如何進行排序的? 假設(shè)有一個表t結(jié)構(gòu)如下圖所示: id為主鍵,type上建有索引,那么如果要查類型為1,val最小的1000行,那么SQL語句如下:SELECT ...
我們知道HTTP協(xié)議是無狀態(tài)的,那么在Web開發(fā)中如何做好用戶的整個瀏覽過程的控制,最經(jīng)典的解決方案就是使用Cookie和Session。Cookie是客戶端的機制,把用戶數(shù)...
基本概念 WebSocket是一種網(wǎng)絡(luò)通信協(xié)議,是HTML5新增的特性,實現(xiàn)了基于瀏覽器的遠程socket,使瀏覽器和服務(wù)器可以進行全雙工通信,大部分瀏覽器都對此做了支持。W...
什么是臟頁? InnoDB在處理更新語句時,先寫內(nèi)存再寫redo log,并不會立即將數(shù)據(jù)頁的更新落地到磁盤(WAL機制),這就會產(chǎn)生升內(nèi)存數(shù)據(jù)頁和磁盤數(shù)據(jù)頁的數(shù)據(jù)不一致的情...
Socket如何通信 在網(wǎng)絡(luò)中要唯一確定一個進程需要用一個三元組(Protocol,IP,Port),IP地址唯一確定一臺主機,再通過協(xié)議和端口唯一確定一個進程,這里也可以看...
Thrift架構(gòu)簡介 Thrift自頂向下可分為四層 Server(single-threaded, event-driven)服務(wù)器進程調(diào)度 Processor(compi...
nginx是一個開源的高性能web服務(wù)器或反向代理服務(wù)器。 基本架構(gòu) 多進程模型 nginx啟動后會產(chǎn)生一個master進程和多個worker進程。master進程主要來管理...