我是怎么把一個項目帶崩的
我(wo)(wo)是(shi)一名項目(mu)經理,在過去的(de)四個(ge)月(yue)里(li),我(wo)(wo)把一個(ge)項目(mu)帶(dai)崩了(le)(上(shang)(shang)線后頻出問(wen)(wen)(wen)(wen)題(ti),用(yong)戶無法(fa)使用(yong))。在最近的(de)幾天,我(wo)(wo)每天都在反思(si)自己,我(wo)(wo)都在問(wen)(wen)(wen)(wen)自己以下(xia)幾個(ge)問(wen)(wen)(wen)(wen)題(ti): 1.我(wo)(wo)做錯了(le)什(shen)么(me)? 2.我(wo)(wo)在其中占有多重的(de)因素(su)? 以下(xia)內(nei)容,我(wo)(wo)將回答以上(shang)(shang)問(wen)(wen)(wen)(wen)題(ti),并(bing)在最后說一下(xia)我(wo)(wo)的(de)補(bu)救措(cuo)施。 項目(mu)和團隊背(bei)景 首先給大家(jia)說明一下(xia)項目(mu)背(bei)景 ...
使用Istio治理微服務入門
近兩年微(wei)服(fu)務(wu)(wu)(wu)架(jia)構流行,主流互聯網(wang)廠商內部都已(yi)(yi)經(jing)微(wei)服(fu)務(wu)(wu)(wu)化(hua),初創企業(ye)雖然(ran)技(ji)(ji)術(shu)積淀(dian)不行,但也(ye)通過(guo)各種開源工具擁(yong)抱微(wei)服(fu)務(wu)(wu)(wu)。再加上容器技(ji)(ji)術(shu)賦(fu)能,Kubernetes又添了一把火,微(wei)服(fu)務(wu)(wu)(wu)架(jia)構已(yi)(yi)然(ran)成為當(dang)前軟件架(jia)構設計的(de)首選(xuan)。但微(wei)服(fu)務(wu)(wu)(wu)化(hua)易弄(nong),服(fu)務(wu)(wu)(wu)治理難搞! 一、微(wei)服(fu)務(wu)(wu)(wu)的(de)“痛點” 微(wei)服(fu)務(wu)(wu)(wu)化(hua)沒有統一標(biao)準(zhun),多數是進行業(ye)務(wu)(wu)(wu) ...
彼之蜜糖,吾之砒霜——聊聊軟件開發中的最佳實踐
“描述(shu)一(yi)(yi)個(ge)(ge)事物,唯(wei)有一(yi)(yi)個(ge)(ge)名詞(ci)(ci)定義它的(de)概念,唯(wei)有一(yi)(yi)個(ge)(ge)動詞(ci)(ci)揭露(lu)它的(de)行(xing)為,唯(wei)有一(yi)(yi)個(ge)(ge)形容詞(ci)(ci)表現它的(de)特征。要做的(de),就是用心去尋找那個(ge)(ge)名詞(ci)(ci)、那個(ge)(ge)動詞(ci)(ci)、那個(ge)(ge)形容詞(ci)(ci)……” —— 福樓拜(bai) (Gustave Flaubert) 我想講個(ge)(ge)故事。 很久(jiu)很久(jiu)以前(一(yi)(yi)般講故事都是這(zhe)樣開頭(tou)吧), 兩個(ge)(ge)老工程師在(zai)一(yi)(yi)起(qi)聊(liao)天,談各(ge)自生 ...
Linux的內存分頁管理
作者:Vamei 出(chu)(chu)處://www.lnzwny.com/vamei 嚴禁轉載 內存(cun)(cun)是計算機(ji)的主存(cun)(cun)儲(chu)器。內存(cun)(cun)為進程開(kai)辟出(chu)(chu)進程空間,讓(rang)進程在其中(zhong)保存(cun)(cun)數據。我將(jiang)從內存(cun)(cun)的物理特性出(chu)(chu)發,深入到內存(cun)(cun)管理的細節,特別是了解虛擬內存(cun)(cun)和內存(cun)(cun)分(fen)頁的概(gai)念。 內存(cun)(cun) 簡單地說(shuo),內存(cun)(cun)就(jiu)是一個數據貨(huo)架。內存(cun)(cun)有一個最 ...
Identity Server 4 - Hybrid Flow - MVC客戶端身份驗證
預備知(zhi)識(shi) 可能需要看一點(dian)點(dian)預備知(zhi)識(shi) OAuth 2.0 不完全簡介: //www.lnzwny.com/cgzl/p/9221488.html OpenID Connect 不完全簡介: //www.lnzwny.com/cgzl/p/9231219.html 回顧一下O ...
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
什么是.NET?什么是.NET Framework?本(ben)文將從(cong)上往下,循序(xu)漸進的(de)介(jie)紹一(yi)系列(lie)相(xiang)關(guan).NET的(de)概念,先從(cong)類型(xing)系統開始講起,我將通過跨語言操(cao)作這(zhe)個例子來逐(zhu)漸引(yin)入一(yi)系列(lie).NET的(de)相(xiang)關(guan)概念,這(zhe)主要(yao)包括:CLS、CTS(CLI)、FCL、Windows下CLR的(de)相(xiang)關(guan)核心組成、Windows下托管程序(xu) ...
藏在正則表達式里的陷阱
博(bo)主個人獨立(li)站點(dian)開通啦(la)!歡(huan)迎點(dian)擊訪問://shuyi.tech 文章(zhang)首(shou)發(fa)于【博(bo)客園-陳樹義】,點(dian)擊跳轉到原文《藏在正(zheng)則(ze)表達式(shi)里的(de)陷(xian)阱》 前幾天線上一個項(xiang)目監控信息(xi)突然報告(gao)異(yi)常(chang),上到機器上后查看相關資源的(de)使用情(qing)況,發(fa)現 CPU 利(li)用率將近 100%。通過 Java 自帶的(de)線程 Dump 工 ...
你所不知道的日志異步落庫
在(zai)互聯網設(she)計架構過程中(zhong)(zhong),日(ri)志異(yi)步落(luo)庫,儼然(ran)已經是(shi)(shi)(shi)高(gao)并發環節中(zhong)(zhong)不(bu)可缺(que)少(shao)的一環。為什(shen)么說(shuo)是(shi)(shi)(shi)高(gao)并發環節中(zhong)(zhong)不(bu)可缺(que)少(shao)的呢? 原因在(zai)于,如果直(zhi)接用mq進(jin)行日(ri)志落(luo)庫的時候,低并發下,生產端(duan)生產數據,然(ran)后由消費端(duan)異(yi)步落(luo)庫,是(shi)(shi)(shi)沒(mei)有(you)什(shen)么問(wen)題的,而且性(xing)能也都是(shi)(shi)(shi)異(yi)常的好,估計tp99應該都在(zai)1ms以(yi)內。但是(shi)(shi)(shi)一旦并發增長起來 ...
為什么說 Java 程序員到了必須掌握 Spring Boot 的時候?
Spring Boot 2.0 的(de)推出又激起了(le)一陣學(xue)(xue)習(xi) Spring Boot 熱(re)(re),就(jiu)單從我個人(ren)的(de)博客的(de)訪問(wen)量(liang)大幅增加就(jiu)可以感受到大家對學(xue)(xue)習(xi) Spring Boot 的(de)熱(re)(re)情,那么在這么多人(ren)熱(re)(re)衷于學(xue)(xue)習(xi) Spring Boot 之時,我自己也(ye)在思考: Spring Boot 誕生的(de)背景是什么?Sprin ...
從 docker 到 runC
筆者(zhe)在前文《RunC 簡(jian)介(jie)》和《Containerd 簡(jian)介(jie)》中分別介(jie)紹了 runC 和 containerd。本文我(wo)們將(jiang)結合 docker 中的其它組(zu)件(jian)探索 docker 是如何把這些組(zu)件(jian)組(zu)織(zhi)起來協調工作的。 Docker 的主(zhu)要組(zu)件(jian) 安裝(zhuang) docker ,其實是安裝(zhuang)了 docker 客戶(hu)端(duan)、doc ...
從架構特點到功能缺陷,重新認識分析型分布式數據庫
本文是(shi)分(fen)布式(shi)數(shu)(shu)據庫(ku)的(de)(de)(de)總綱(gang)文章的(de)(de)(de)第一(yi)部分(fen),列舉了三(san)類不同技術方案(MPP/Hadoop/Mesa),主要(yao)探討分(fen)析性(xing)(xing)(xing)分(fen)布式(shi)數(shu)(shu)據庫(ku)的(de)(de)(de)發展和技術差異;后續(xu)的(de)(de)(de)第二部分(fen)則是(shi)交易(yi)性(xing)(xing)(xing)數(shu)(shu)據庫(ku)的(de)(de)(de)一(yi)些關(guan)鍵特性(xing)(xing)(xing)分(fen)析。Ivan開始計劃(hua)的(de)(de)(de)分(fen)布式(shi)數(shu)(shu)據庫(ku)是(shi)不含分(fen)析場景的(de)(de)(de),所(suo)以(yi)嚴格來(lai)說(shuo)本篇(pian)算是(shi)番外篇(pian),后續(xu)待(dai)條件具備將以(yi)獨立主題的(de)(de)(de)方式(shi)... ...
【原創】分布式之數據庫和緩存雙寫一致性方案解析
引言 為(wei)什(shen)么寫這篇(pian)文章(zhang)? 首先,緩(huan)存(cun)(cun)由于其高并發和高性能的(de)特(te)性,已經在(zai)項目中(zhong)被廣泛(fan)使(shi)用。在(zai)讀取緩(huan)存(cun)(cun)方(fang)(fang)面,大家沒(mei)啥(sha)疑問,都是(shi)按照下圖的(de)流程來進行業務操(cao)作。 但(dan)是(shi)在(zai)更新緩(huan)存(cun)(cun)方(fang)(fang)面,對于更新完數據庫,是(shi)更新緩(huan)存(cun)(cun)呢,還是(shi)刪(shan)除(chu)緩(huan)存(cun)(cun)。又或者是(shi)先刪(shan)除(chu)緩(huan)存(cun)(cun),再更新數據庫,其實大家存(cun)(cun)在(zai)很大的(de)爭議。目前沒(mei)有(you)一篇(pian)全(quan)面的(de)博客(ke) ...
【原創】分布式之消息隊列復習精講
引言 為什么(me)寫這篇文(wen)章? 博主有兩位朋(peng)友(you)分別是(shi)小A和小B: 1. 小A,工(gong)作(zuo)于傳統軟(ruan)件行業(某(mou)社保局(ju)的(de)軟(ruan)件外包公司),每(mei)天工(gong)作(zuo)內(nei)容就(jiu)是(shi)和產品聊聊需求(qiu),改改業務邏輯(ji)。再(zai)不然就(jiu)是(shi)和運營聊聊天,寫幾個SQL,生成下報表。又或者(zhe)接到客服的(de)通知,某(mou)某(mou)功能(neng)故障了,改改數據,然后下班(ban)部(bu)署上線。每(mei)天過的(de)都是(shi)這種生活 ...
.net環境下跨進程、高頻率讀寫數據
一(yi)、需求背景 1、最近項目(mu)要求高頻次(ci)地讀寫數(shu)據,數(shu)據量也(ye)不(bu)是很大(da),多表總共(gong)加(jia)起來在(zai)百(bai)萬條(tiao)上下。 單表最大(da)的也(ye)在(zai)25萬左(zuo)右(you),歷史數(shu)據表因為不(bu)涉及所以不(bu)用考慮, 難點在(zai)于(yu)這個規模的熱點數(shu)據,變化非常頻繁。 數(shu)據來源于(yu)一(yi)些檢測設備的采(cai)集數(shu)據,一(yi)些大(da)表,有可能(neng)在(zai)極短時間內(如幾(ji)秒(miao)鐘)可能(neng)大(da)部分都會變化, 而 ...
微服務化的基石——持續集成
本文(wen)由 網易云 發布。 作者:劉超,網易云解決方案架(jia)構(gou)師 一、持續集(ji)成(cheng)(cheng)對(dui)于(yu)微服(fu)務的(de)(de)(de)意義:拆之(zhi)前要先解決合的(de)(de)(de)問(wen)題 在很(hen)多微服(fu)務化的(de)(de)(de)文(wen)章中,很(hen)少(shao)會把持續集(ji)成(cheng)(cheng)放在第(di)一篇,因為大多數的(de)(de)(de)文(wen)章都會將(jiang)如何拆的(de)(de)(de)問(wen)題,例(li)如拆的(de)(de)(de)粒度,拆的(de)(de)(de)時機,拆的(de)(de)(de)方式(shi)。 為什么需(xu)要拆呢(ni)?因為這(zhe)是(shi)人類處理問(wen)題的(de)(de)(de)本質方式(shi):將(jiang)一個大的(de)(de)(de)復(fu)雜問(wen) ...
在 .NET Core 中使用 DiagnosticSource 記錄跟蹤信息
前言 最新(xin)一(yi)直在(zai)(zai)(zai)忙(mang)著項(xiang)目上的(de)(de)(de)事情(qing),很久沒有寫(xie)博客了,在(zai)(zai)(zai)這里對關注我(wo)的(de)(de)(de)粉絲(si)們說(shuo)(shuo)聲抱歉(qian),后面(mian)我(wo)可能更(geng)多的(de)(de)(de)分(fen)享我(wo)們在(zai)(zai)(zai)微服務落地的(de)(de)(de)過程(cheng)中(zhong)(zhong)的(de)(de)(de)一(yi)些經驗。那么今天給(gei)大家講一(yi)下(xia)在(zai)(zai)(zai) .NET Core 2 中(zhong)(zhong)引入的(de)(de)(de)全(quan)新(xin) DiagnosticSource 事件(jian)機(ji)制,為什么說(shuo)(shuo)是(shi)全(quan)新(xin)呢? 在(zai)(zai)(zai)以前的(de)(de)(de) .NET Framewo ...
阿里云ECS的CPU100%排查
一(yi)、背景和現象 初創公司(si),架構lanmp,web前端和后端分開服務器,業(ye)務驅動主要是nginx和apache,nginx主要是處(chu)理(li)靜態(tai)文件和反向代理(li),前后端、搜索引(yin)擎、緩存、隊列等(deng)附加的服務都(dou)是用docker容器部署。因為比(bi)較初級,上傳(chuan)文件和采集文件都(dou)是直接寫在硬(ying)盤上,涉(she)及到的目錄共享(xiang),就(jiu)在其(qi)中一(yi)臺 ...
深入學習Redis(1):Redis內存模型
前(qian)言 Redis是目(mu)前(qian)最火(huo)爆的(de)內(nei)存(cun)數據庫之一(yi),通過在內(nei)存(cun)中讀(du)寫數據,大大提高(gao)了讀(du)寫速度,可以說Redis是實現網站高(gao)并發不(bu)可或缺的(de)一(yi)部分。 我(wo)們使用(yong)Redis時,會接觸Redis的(de)5種對象類(lei)型(xing)(字符串、哈希、列表(biao)、集(ji)合(he)、有序集(ji)合(he)),豐富(fu)的(de)類(lei)型(xing)是Redis相對于Memcached等的(de)一(yi)大優勢。在了解R ...
十倍效能提升——Web 基礎研發體系的建立
1 導(dao)讀 web 基(ji)(ji)(ji)礎(chu)研(yan)發(fa)(fa)體系指(zhi)的(de)是, web 研(yan)發(fa)(fa)中(zhong)一(yi)線工程(cheng)師所(suo)直接操作的(de)技(ji)術(shu)、工具,以及所(suo)屬組織架構的(de)總(zong)和。在過去提升(sheng)企業(ye)研(yan)發(fa)(fa)效能(neng)的(de)討論中(zhong),圍繞的(de)主題基(ji)(ji)(ji)本都(dou)是——”通過云計算(suan)、云存儲等方式將底層核心技(ji)術(shu)封(feng)裝成基(ji)(ji)(ji)礎(chu)設施“。而我(wo)們(men)在實踐中(zhong)發(fa)(fa)現,在 互聯網(wang)滲入到各行各業(ye),業(ye)務爆發(fa)(fa) 企業(ye)競(jing)爭白熱化,對速 ...
Golang的CSP很酷?其實.NET也可以輕松完成
說起Golang(后面統稱(cheng)為Go),就(jiu)想到他的(de)(de)(de)高并發(fa)特性,在深入一(yi)些就(jiu)是 Goroutine。在大家被它優雅的(de)(de)(de)語法和簡(jian)潔(jie)的(de)(de)(de)代碼實(shi)現(xian)的(de)(de)(de)高并發(fa)程序所折服時,其實(shi)C#/.NET也(ye)可以很(hen)容(rong)易的(de)(de)(de)做到。今天我們來參照Go,來用C#實(shi)現(xian)它所采(cai)用的(de)(de)(de)的(de)(de)(de)CSP并發(fa)模型。CSP(Communicating sequent... ...
