從 docker 到 runC
筆者在前文《RunC 簡介》和《Containerd 簡介》中分別介紹了 runC 和 containerd。本文我們將結合 docker 中的其它組件探索 docker 是如何把這些組件組織起來協調工作的。 Docker 的主要組件 安裝 docker ,其實是安裝了 docker 客戶端、doc ...
從架構特點到功能缺陷,重新認識分析型分布式數據庫
本文是分布式數據庫的總綱文章的第一部分,列舉了三類不同技術方案(MPP/Hadoop/Mesa),主要探討分析性分布式數據庫的發展和技術差異;后續的第二部分則是交易性數據庫的一些關鍵特性分析。Ivan開始計劃的分布式數據庫是不含分析場景的,所以嚴格來說本篇算是番外篇,后續待條件具備將以獨立主題的方式... ...
【原創】分布式之數據庫和緩存雙寫一致性方案解析
引言 為什么寫這篇文章? 首先,緩存由于其高并發和高性能的特性,已經在項目中被廣泛使用。在讀取緩存方面,大家沒啥疑問,都是按照下圖的流程來進行業務操作。 但是在更新緩存方面,對于更新完數據庫,是更新緩存呢,還是刪除緩存。又或者是先刪除緩存,再更新數據庫,其實大家存在很大的爭議。目前沒有一篇全面的博客 ...
【原創】分布式之消息隊列復習精講
引言 為什么寫這篇文章? 博主有兩位朋友分別是小A和小B: 1. 小A,工作于傳統軟件行業(某社保局的軟件外包公司),每天工作內容就是和產品聊聊需求,改改業務邏輯。再不然就是和運營聊聊天,寫幾個SQL,生成下報表。又或者接到客服的通知,某某功能故障了,改改數據,然后下班部署上線。每天過的都是這種生活 ...
.net環境下跨進程、高頻率讀寫數據
一、需求背景 1、最近項目要求高頻次地讀寫數據,數據量也不是很大,多表總共加起來在百萬條上下。 單表最大的也在25萬左右,歷史數據表因為不涉及所以不用考慮, 難點在于這個規模的熱點數據,變化非常頻繁。 數據來源于一些檢測設備的采集數據,一些大表,有可能在極短時間內(如幾秒鐘)可能大部分都會變化, 而 ...
微服務化的基石——持續集成
本文由 網易云 發布。 作者:劉超,網易云解決方案架構師 一、持續集成對于微服務的意義:拆之前要先解決合的問題 在很多微服務化的文章中,很少會把持續集成放在第一篇,因為大多數的文章都會將如何拆的問題,例如拆的粒度,拆的時機,拆的方式。 為什么需要拆呢?因為這是人類處理問題的本質方式:將一個大的復雜問 ...
在 .NET Core 中使用 DiagnosticSource 記錄跟蹤信息
前言 最新一直在忙著項目上的事情,很久沒有寫博客了,在這里對關注我的粉絲們說聲抱歉,后面我可能更多的分享我們在微服務落地的過程中的一些經驗。那么今天給大家講一下在 .NET Core 2 中引入的全新 DiagnosticSource 事件機制,為什么說是全新呢? 在以前的 .NET Framewo ...
阿里云ECS的CPU100%排查
一、背景和現象 初創公司,架構lanmp,web前端和后端分開服務器,業務驅動主要是nginx和apache,nginx主要是處理靜態文件和反向代理,前后端、搜索引擎、緩存、隊列等附加的服務都是用docker容器部署。因為比較初級,上傳文件和采集文件都是直接寫在硬盤上,涉及到的目錄共享,就在其中一臺 ...
深入學習Redis(1):Redis內存模型
前言 Redis是目前最火爆的內存數據庫之一,通過在內存中讀寫數據,大大提高了讀寫速度,可以說Redis是實現網站高并發不可或缺的一部分。 我們使用Redis時,會接觸Redis的5種對象類型(字符串、哈希、列表、集合、有序集合),豐富的類型是Redis相對于Memcached等的一大優勢。在了解R ...
十倍效能提升——Web 基礎研發體系的建立
1 導讀 web 基礎研發體系指的是, web 研發中一線工程師所直接操作的技術、工具,以及所屬組織架構的總和。在過去提升企業研發效能的討論中,圍繞的主題基本都是——”通過云計算、云存儲等方式將底層核心技術封裝成基礎設施“。而我們在實踐中發現,在 互聯網滲入到各行各業,業務爆發 企業競爭白熱化,對速 ...
Golang的CSP很酷?其實.NET也可以輕松完成
說起Golang(后面統稱為Go),就想到他的高并發特性,在深入一些就是 Goroutine。在大家被它優雅的語法和簡潔的代碼實現的高并發程序所折服時,其實C#/.NET也可以很容易的做到。今天我們來參照Go,來用C#實現它所采用的的CSP并發模型。CSP(Communicating sequent... ...
不是技術也能看懂云計算,大數據,人工智能
我今天要講這三個話題,一個是云計算,一個大數據,一個人工智能,我為什么要講這三個東西呢?因為這三個東西現在非常非常的火,它們之間好像互相有關系,一般談云計算的時候也會提到大數據,談人工智能的時候也會提大數據,談人工智能的時候也會提云計算。所以說感覺他們又相輔相成不可分割,如果是非技術的人員來講可能比 ...
記一次內存溢出的分析經歷——thrift帶給我的痛orz
說在前面的話 朋友,你經歷過部署好的服務突然內存溢出嗎? 你經歷過沒有看過Java虛擬機,來解決內存溢出的痛苦嗎? 你經歷過一個BUG,百思不得其解,頭發一根一根脫落的煩惱嗎? 我知道,你有過! 但是我還是要來說說我的故事.................. 背景: 有一個項目做一個系統,分客戶端和 ...
機器學習漫游(1) 基本設定
最近的十幾年機器學習很是火熱,尤其是其中的一個分支深度學習在工業界取得很好應用,吸引了很多眼球。不過從其歷程來看,機器學習的歷史并不短暫~從早期的感知機到八十年代火熱的神經網絡,再到九十年代被提出的經典算法集成學習和支持向量機;而最近的十年算得上是機器學習發展的黃金年代,軟、硬件計算條件大幅提高,尤 ...
高可用Redis服務架構分析與搭建
基于內存的Redis應該是目前各種web開發業務中最為常用的key-value數據庫了,我們經常在業務中用其存儲用戶登陸態(Session存儲),加速一些熱數據的查詢(相比較mysql而言,速度有數量級的提升),做簡單的消息隊列(LPUSH和BRPOP)、訂閱發布(PUB/SUB)系統等等。規模比較 ...
Android組件化框架設計與實踐
在目前移動互聯網時代,每個 APP 就是流量入口,與過去 PC Web 瀏覽器時代不同的是,APP 的體驗與迭代速度影響著用戶的粘性,這同時也對從事移動開發人員提出更高要求,進而移動端框架也層出不窮。 上圖顯示的是傳統的服務端架構和客戶端 App 架構對比。傳統的服務端架構中最底下是一個 OS,一般 ...
科普:String hashCode 方法為什么選擇數字31作為乘子
1. 背景 某天,我在寫代碼的時候,無意中點開了 String hashCode 方法。然后大致看了一下 hashCode 的實現,發現并不是很復雜。但是我從源碼中發現了一個奇怪的數字,也就是本文的主角31。這個數字居然不是用常量聲明的,所以沒法從字面意思上推斷這個數字的用途。后來帶著疑問和好奇心, ...
漫話JavaScript與異步·第三話——Generator:化異步為同步
ES6新增的特性中,Generator無疑是最為強大者之一,它與Promise結合起來,為令前端頭疼的異步回調難題提供了終極解決方案! ...
超高性能管線式HTTP請求(實踐·原理·實現)
這里的高性能指的就是網卡有多快請求發送就能有多快,基本上一般的服務器在一臺客戶端的壓力下就會出現明顯延時。
該篇實際是介紹pipe管線的原理,下面主要通過其高性能的測試實踐,解析背后數據流量及原理。最后附帶一個簡單的實現
pipe之所以能比常規請求方式性能高出這么多,主要有以下幾點
1:管線式發送,... ...
深度工作:充分使用每一份腦力
浮躁已經成了普遍的社會現象。判斷一個人是否浮躁非常容易,看他一天主動拿起手機的次數就可以了。據TED的演講者說,這個值一般是50次,除了8小時的睡覺之外,基本上每20分鐘就要去翻翻手機。 你會去用手機做什么?看微信,票圈,微博,知乎,淘寶,或只是來回刷首頁。我們不是名人,沒人關心你在社交網絡上的行動 ...