<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:56215|
      • 收錄網站:181187|

      IT精英團

      服務器端高并發分布式架構的演進之路

      服務器端高并發分布式架構的演進之路

      瀏覽次數:
      評論次數:
      編輯: 樂詠
      信息來源: ITPUB
      更新日期: 2022-05-07 18:32:43
      摘要

      1.概述本文以淘寶作為例子,介紹從一百個到千萬級并發情況下服務端的架構的演進過程。同時列舉出每個演進階段會遇到的相關技術,讓大家對架構的演進有一個整體的認知。文章最后匯總了一些架構設計的原則。特別說

      • 正文開始
      • 相關閱讀
      • 推薦作品

      1. 概述

      本文以淘寶為例,介紹了一百到千萬級并發情況下服務器架構的演進過程。同時列舉了每個演進階段會遇到的相關技術,讓大家對架構的演進有一個整體的了解。最后,總結了建筑設計的一些原則。

      特別說明:本文以淘寶為例,僅說明演進過程中可能遇到的問題,并非淘寶真實的技術演進路徑。

      2. 基本概念

      在介紹架構之前,為了避免一些讀者不了解架構設計中的一些概念,下面是一些基本概念:

      分布式:系統中的多個模塊部署在不同的服務器上,可以稱為分布式系統。比如Tomcat和數據庫部署在不同的服務器上,或者兩個功能相同的Tomcat部署在不同的服務器上;

      高可用:當系統中的某些節點出現故障時,其他節點可以代替它繼續提供服務,因此可以認為系統具有高可用性;

      特定領域的集群:軟件部署在多個服務器上,整體提供一類服務,稱為集群。比如ZooKeeper中的主從部署在多臺服務器上,形成一個整體,提供集中配置服務。在普通集群中,客戶端總是可以連接到任何節點來獲得服務,當集群中的一個節點掉線時,其他節點可以自動接替它繼續提供服務。這說明集群具有高可用性;

      負載均衡:當一個請求被發送到系統時,可以認為系統是負載均衡的,通過某種方式將請求均勻地分配到多個節點上,使系統中的每個節點都能均勻地處理請求負載;

      正向代理和反向代理:當內部系統需要訪問外部網絡時,它會通過代理服務器轉發請求。在外網,好像是代理服務器發起的訪問。此時,代理服務器實現前轉代理。當外部請求進入系統時,代理服務器將請求轉發給系統中的服務器。對于外部請求,只有代理服務器與它們進行交互。此時代理服務器實現反向代理。簡單來說,正向代理就是代理服務器訪問外部網絡而不是內部系統的過程,反向代理就是外部訪問系統的請求通過代理服務器轉發到內部服務器的過程。

      3. 架構演進

      3.1 單機架構

      以淘寶為例。網站初期,應用程序和用戶數量都很少,所以Tomcat和數據庫可以部署在同一個服務器上。當瀏覽器向www.taobao.com發出請求時,首先通過DNS服務器(域名系統)將域名轉換成實際的IP地址10.102.4.1,然后瀏覽器訪問該IP對應的Tomcat。

      隨著用戶的增加,Tomcat和數據庫爭奪資源,單機性能不足以支撐業務。

      3.2 第一次演進:Tomcat 與數據庫分開部署

      Tomcat和database分別獨占服務器資源,顯著提升了各自的性能。

      隨著用戶數量的增加,并發讀寫數據庫成為瓶頸。

      3.3 第二次演進:引入本地緩存和分布式緩存

      g" width="581" title="clipboard.png" src="https://image.z.itpub.net/zitpub.net/JPG/2022-05-07/EE3D62C507CA6169EE977F9411A51CDE.jpg">


      在 Tomcat 同服務器上或同 JVM 中增加本地緩存,并在外部增加分布式緩存,緩存熱門商品信息或熱門商品的 HTML 頁面等。通過緩存能把絕大多數請求在讀寫數據庫前攔截掉,大大降低數據庫壓力。其中涉及的技術包括:使用 Memcached 作為本地緩存,使用 Redis 作為分布式緩存,還會涉及緩存一致性、緩存穿透/擊穿、緩存雪崩、熱點數據集中失效等問題。


      緩存抗住了大部分的訪問請求。隨著用戶數的增長,并發壓力主要落在單機的 Tomcat 上,響應逐漸變慢。


      3.4 第三次演進:引入反向代理實現負載均衡



      在多臺服務器上分別部署 Tomcat,使用反向代理軟件(Nginx)把請求均勻分發到每個 Tomcat 中。此處假設 Tomcat 最多支持 100 個并發,Nginx 最多支持 50000 個并發。那么,理論上 Nginx 把請求分發到 500 個 Tomcat 上,就能抗住 50000 個并發。其中涉及的技術包括:Nginx、HAProxy,兩者都是工作在網絡第七層的反向代理軟件,主要支持 HTTP 協議,還會涉及 Session 共享、文件上傳下載的問題。


      反向代理使應用服務器可支持的并發量大大增加,但并發量的增長也意味著更多請求穿透到數據庫,單機的數據庫最終成為瓶頸。


      3.5 第四次演進:數據庫讀寫分離



      把數據庫劃分為讀庫和寫庫,讀庫可以有多個,通過同步機制把寫庫的數據同步到讀庫,對于需要查詢最新寫入數據場景,可通過在緩存中多寫一份,通過緩存獲得最新數據。其中涉及的技術包括 Mycat。它是數據庫中間件,可通過它來組織數據庫的分離讀寫和分庫分表??蛻舳送ㄟ^它來訪問下層數據庫,還會涉及數據同步,數據一致性的問題。


      業務逐漸變多,不同業務之間的訪問量差距較大。不同業務直接競爭數據庫,相互影響性能。


      3.6 第五次演進:數據庫按業務分庫



      把不同業務的數據保存到不同的數據庫中,使業務之間的資源競爭降低。對于訪問量大的業務,可以部署更多的服務器來支撐。這樣同時導致跨業務的表無法直接做關聯分析,需要通過其他途徑來解決。但這不是本文討論的重點,有興趣的可以自行搜索解決方案。


      隨著用戶數的增長,單機的寫庫會逐漸會達到性能瓶頸。


      3.7 第六次演進:把大表拆分為小表



      比如,


      • 針對評論數據,可按照商品 ID 進行 Hash,路由到對應的表中存儲;

      • 針對支付記錄,可按照小時創建表,每個小時表繼續拆分為小表,使用用戶 ID 或記錄編號來路由數據。


      只要實時操作的表數據量足夠小,請求能夠足夠均勻的分發到多臺服務器上的小表,那數據庫就能通過水平擴展的方式來提高性能。其中,前面提到的 Mycat 也支持在大表拆分為小表情況下的訪問控制。


      這種做法顯著增加了數據庫運維的難度,對 DBA的 要求較高。數據庫設計到這種結構時,已經可以稱為分布式數據庫。


      但是這只是一個邏輯的數據庫整體,數據庫里不同的組成部分是由不同的組件單獨來實現的。例如,


      • 分庫分表的管理和請求分發由 Mycat 實現;

      • SQL 解析由單機的數據庫實現;

      • 讀寫分離可能由網關和消息隊列來實現;

      • 查詢結果的匯總可能由數據庫接口層來實現等等。


      這種架構其實是 MPP(大規模并行處理)架構的一類實現。


      目前開源和商用都已經有不少 MPP 數據庫。開源中比較流行的有 Greenplum、TiDB、Postgresql XC、HAWQ 等。商用的如南大通用的 GBase、睿帆科技的雪球 DB、華為的 LibrA 等等。不同的 MPP 數據庫的側重點也不一樣。如 TiDB 更側重于分布式 OLTP 場景,Greenplum 更側重于分布式 OLAP 場景。


      這些 MPP 數據庫基本都提供了類似 Postgresql、Oracle、MySQL 那樣的 SQL 標準支持能力,能把一個查詢解析為分布式的執行計劃分發到每臺機器上并行執行,最終由數據庫本身匯總數據進行返回。也提供了諸如權限管理、分庫分表、事務、數據副本等能力,并且大多能夠支持 100 個節點以上的集群。大大降低了數據庫運維的成本,并且使數據庫也能夠實現水平擴展。


      數據庫和 Tomcat 都能夠水平擴展,可支撐的并發大幅提高。隨著用戶數的增長,最終單機的 Nginx 會成為瓶頸。


      3.8 第七次演進:使用 LVS 或 F5 來使多個 Nginx 負載均衡



      由于瓶頸在 Nginx,因此無法通過兩層的 Nginx 來實現多個 Nginx 的負載均衡。圖中的 LVS 和 F5 是工作在網絡第四層的負載均衡解決方案。


      其中 LVS 是軟件,運行在操作系統內核態,可對 TCP 請求或更高層級的網絡協議進行轉發,因此支持的協議更豐富,并且性能也遠高于 Nginx??杉僭O單機的 LVS 可支持幾十萬個并發的請求轉發;F5 是一種負載均衡硬件,與 LVS 提供的能力類似。性能比 LVS 更高,但價格昂貴。


      由于 LVS 是單機版的軟件,若 LVS 所在服務器宕機則會導致整個后端系統都無法訪問,因此需要有備用節點。


      可使用 Keepalived 軟件模擬出虛擬 IP,然后把虛擬 IP 綁定到多臺 LVS 服務器上。瀏覽器訪問虛擬 IP 時,會被路由器重定向到真實的 LVS 服務器。當主 LVS 服務器宕機時,Keepalived 軟件會自動更新路由器中的路由表,把虛擬 IP 重定向到另外一臺正常的 LVS 服務器,從而達到 LVS 服務器高可用的效果。


      此處需要注意的是,上圖中從 Nginx 層到 Tomcat 層這樣畫并不代表全部 Nginx 都轉發請求到全部的 Tomcat。在實際使用時,可能會是幾個 Nginx 下面接一部分的 Tomcat。這些 Nginx 之間通過 Keepalived 實現高可用,其他的 Nginx 接另外的 Tomcat。這樣可接入的 Tomcat 數量就能成倍增加。


      由于 LVS 也是單機的,隨著并發數增長到幾十萬時,LVS 服務器最終會達到瓶頸。此時用戶數達到千萬甚至上億級別。用戶分布在不同的地區,與服務器機房距離不同,導致了訪問的延遲會明顯不同。


      3.9 第八次演進:通過 DNS 輪詢實現機房間的負載均衡



      在 DNS 服務器中可配置一個域名對應多個 IP 地址,每個 IP 地址對應到不同的機房里的虛擬 IP。當用戶訪問 www.taobao.com 時,DNS 服務器會使用輪詢策略或其他策略,來選擇某個 IP 供用戶訪問。此方式能實現機房間的負載均衡。


      至此,系統可做到機房級別的水平擴展。千萬級到億級的并發量都可通過增加機房來解決,系統入口處的請求并發量不再是問題。


      隨著數據的豐富程度和業務的發展,檢索、分析等需求越來越豐富,單單依靠數據庫無法解決如此豐富的需求。


      3.10 第九次演進:引入 NoSQL 數據庫和搜索引擎等技術



      當數據庫中的數據多到一定規模時,數據庫就不適用于復雜的查詢了,往往只能滿足普通查詢的場景。


      對于統計報表場景,在數據量大時不一定能跑出結果。而且在跑復雜查詢時會導致其他查詢變慢,對于全文檢索、可變數據結構等場景,數據庫天生不適用。


      因此,需要針對特定場景引入合適的解決方案。例如,


      • 對于海量文件存儲,可通過分布式文件系統 HDFS 解決;

      • 對于 key-value 類型的數據,可通過 HBase 和 Redis 等方案解決。

      • 對于全文檢索場景,可通過搜索引擎如 ElasticSearch 解決;

      • 對于多維分析場景,可通過 Kylin 或 Druid 等方案解決。


      當然,引入更多組件同時會提高系統的復雜度。不同的組件保存的數據需要同步,需要考慮一致性的問題。需要有更多的運維手段來管理這些組件等。


      引入更多組件解決了豐富的需求,業務維度能夠極大擴充。隨之而來的是一個應用中包含了太多的業務代碼,業務的升級迭代變得困難。


      3.11 第十次演進:大應用拆分為小應用



      按照業務板塊來劃分應用代碼,使單個應用的職責更清晰,相互之間可以做到獨立升級迭代。這時候應用之間可能會涉及到一些公共配置,可以通過分布式配置中心 ZooKeeper 來解決。

      不同應用之間存在共用的模塊,由應用單獨管理會導致相同代碼存在許多份,導致公共功能升級時全部應用代碼都要跟著升級。


      3.12 第十一次演進:復用的功能抽離成微服務



      例如,用戶管理、訂單、支付、鑒權等功能在多個應用中都存在,那么可以把這些功能的代碼單獨抽取出來形成一個單獨的服務來管理。


      這樣的服務就是所謂的微服務,應用和服務之間通過 HTTP、TCP 或 RPC 請求等多種方式來訪問公共服務,每個單獨的服務都可以由單獨的團隊來管理。


      此外,可以通過 Dubbo、SpringCloud 等框架實現服務治理、限流、熔斷、降級等功能,提高服務的穩定性和可用性。


      不同服務的接口訪問方式不同,應用代碼需要適配多種訪問方式才能使用服務。此外,應用訪問服務,服務之間也可能相互訪問。調用鏈將會變得非常復雜,邏輯變得混亂。


      3.13 第十二次演進:引入企業服務總線 ESB 屏蔽服務接口的訪問差異



      通過 ESB 統一進行訪問協議轉換。應用統一通過 ESB 來訪問后端服務,服務與服務之間也通過 ESB 來相互調用,以此降低系統的耦合程度。


      這種單個應用拆分為多個應用,公共服務單獨抽取出來來管理,并使用企業消息總線來解除服務之間耦合問題的架構,就是所謂的 SOA(面向服務)架構。這種架構與微服務架構容易混淆,因為表現形式十分相似。


      個人理解,微服務架構更多是指把系統里的公共服務抽取出來單獨運維管理的思想,而 SOA 架構則是指一種拆分服務并使服務接口訪問變得統一的架構思想。SOA 架構中包含了微服務的思想。


      業務不斷發展,應用和服務都會不斷變多,應用和服務的部署變得復雜。同一臺服務器上部署多個服務還要解決運行環境沖突的問題。


      此外,對于如大促這類需要動態擴縮容的場景,需要水平擴展服務的性能。就需要在新增的服務上準備運行環境,部署服務等,運維將變得十分困難。


      3.14 第十三次演進:引入容器化技術實現運行環境隔離與動態服務管理



      目前最流行的容器化技術是 Docker,最流行的容器管理服務是 Kubernetes(K8S)。應用/服務可以打包為 Docker 鏡像,通過 K8S 來動態分發和部署鏡像。


      Docker 鏡像可理解為一個能運行你的應用/服務的最小的操作系統。里面放著應用/服務的運行代碼,運行環境根據實際的需要設置好。把整個“操作系統”打包為一個鏡像后,就可以分發到需要部署相關服務的機器上,直接啟動 Docker 鏡像就可以把服務起起來。使服務的部署和運維變得簡單。


      在大促的之前,可以在現有的機器集群上劃分出服務器來啟動 Docker 鏡像,增強服務的性能。大促過后就可以關閉鏡像,對機器上的其他服務不造成影響(在 3.14 節之前,服務運行在新增機器上需要修改系統配置來適配服務。這會導致機器上其他服務需要的運行環境被破壞)。


      使用容器化技術后服務動態擴縮容問題得以解決,但是機器還是需要公司自身來管理。在非大促的時候,還是需要閑置著大量的機器資源來應對大促。機器自身成本和運維成本都極高,資源利用率低。


      3.15 第十四次演進:以云平臺承載系統



      系統可部署到公有云上,利用公有云的海量機器資源,解決動態硬件資源的問題。在大促的時間段里,在云平臺中臨時申請更多的資源,結合 Docker 和 K8S 來快速部署服務。在大促結束后釋放資源。真正做到按需付費,資源利用率大大提高,同時大大降低了運維成本。


      所謂的云平臺,就是把海量機器資源通過統一的資源管理,抽象為一個資源整體。在之上可按需動態申請硬件資源(如 CPU、內存、網絡等)。并且之上提供通用的操作系統,提供常用的技術組件(如 Hadoop 技術棧,MPP 數據庫等)供用戶使用,甚至提供開發好的應用。用戶不需要關系應用內部使用了什么技術,就能夠解決需求(如音視頻轉碼服務、郵件服務、個人博客等)。


      在云平臺中會涉及如下幾個概念:


      • IaaS:基礎設施即服務。對應于上面所說的機器資源統一為資源整體,可動態申請硬件資源的層面;

      • PaaS:平臺即服務。對應于上面所說的提供常用的技術組件方便系統的開發和維護;

      • SaaS:軟件即服務。對應于上面所說的提供開發好的應用或服務,按功能或性能要求付費。


      至此,以上所提到的從高并發訪問問題,到服務的架構和系統實施的層面都有了各自的解決方案。但同時也應該意識到,在上面的介紹中,其實是有意忽略了諸如跨機房數據同步、分布式事務實現等等的實際問題。這些問題以后有機會再拿出來單獨討論。


      4. 架構設計總結


      架構的調整是否必須按照上述演變路徑進行?


      不是的。


      以上所說的架構演變順序只是針對某個側面進行單獨的改進。在實際場景中,可能同一時間會有幾個問題需要解決,或者可能先達到瓶頸的是另外的方面。這時候就應該按照實際問題實際解決。如在政府類的并發量可能不大,但業務可能很豐富的場景,高并發就不是重點解決的問題。此時優先需要的可能會是豐富需求的解決方案。


      對于將要實施的系統,架構應該設計到什么程度?


      對于單次實施并且性能指標明確的系統,架構設計到能夠支持系統的性能指標要求就足夠了,但要留有擴展架構的接口以便不備之需。對于不斷發展的系統,如電商平臺,應設計到能滿足下一階段用戶量和性能指標要求的程度。并根據業務的增長不斷的迭代升級架構,以支持更高的并發和更豐富的業務。


      服務端架構和大數據架構有什么區別?


      所謂的“大數據”其實是海量數據采集清洗轉換、數據存儲、數據分析、數據服務等場景解決方案的一個統稱。在每一個場景都包含了多種可選的技術,例如


      • 數據采集有 Flume、Sqoop、Kettle 等;

      • 數據存儲有分布式文件系統 HDFS、FastDFS,NoSQL 數據庫 HBase、MongoDB 等;

      • 數據分析有 Spark 技術棧、機器學習算法等。


      總的來說,大數據架構就是根據業務的需求整合各種大數據組件組合而成的架構。一般會提供分布式存儲、分布式計算、多維分析、數據倉庫、機器學習算法等能力。而服務端架構更多指的是應用組織層面的架構,底層能力往往是由大數據架構來提供。


      有沒有一些架構設計的原則?


      • N+1設計:系統中的每個組件都應做到沒有單點故障;

      • 回滾設計:確保系統可以向前兼容,在系統升級時應能有辦法回滾版本;

      • 禁用設計:應該提供控制具體功能是否可用的配置,在系統出現故障時能夠快速下線功能;

      • 監控設計:在設計階段就要考慮監控的手段;

      • 多活數據中心設計:若系統需要極高的高可用,應考慮在多地實施數據中心進行多活,至少在一個機房斷電的情況下系統依然可用;

      • 采用成熟的技術:剛開發的或開源的技術往往存在很多隱藏的bug,出了問題沒有商業支持可能會是一個災難;

      • 資源隔離設計:應避免單一業務占用全部資源;

      • 架構應能水平擴展:系統只有做到能水平擴展,才能有效避免瓶頸問題;

      • 非核心則購買:非核心功能若需要占用大量的研發資源才能解決,則考慮購買成熟的產品;

      • 使用商用硬件:商用硬件能有效降低硬件故障的機率;

      • 快速迭代:系統應該快速開發小功能模塊,盡快上線進行驗證,早日發現問題大大降低系統交付的風險;

      • 無狀態設計:服務接口應該做成無狀態的,當前接口的訪問不依賴于接口上次訪問的狀態。

      轉自:huashiou,

      緊急情況下數據庫表被鎖 抓瞎?
      ? 上一篇 2022-05-07
      一萬字長文講解HBase讀寫性能優化
      下一篇 ? 2022-05-07
      • 胡迪核心知識點詳解(好文章合集)
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
      • 前端面試必須解決網絡中的跨域問題
        0閱讀 0條評論 個贊
        什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
      • 如何在Bash腳本中使用強大的Linux測試命令
        0閱讀 0條評論 個贊
        Linuxtest命令是Shell內置命令,用來檢測某個條件是否成立。test通常和if語句一起使用,并且大部分if語句都依賴test??梢詫⒁粋€元素與另一個元素進行比較,但它更?!?/div>
      • 真正的建筑設計是什么樣子的?
        1閱讀 0條評論 個贊
        什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
      • 10分鐘了解云原生 值得收藏~
        0閱讀 0條評論 個贊
        文章轉載:奇妙的Linux世界我們已經進入云計算下半場,不再像上半場在糾結要不要上云,而是討論怎么上云?才能把云計算的價值發揮到淋漓盡致。如何把云計算與不同的業務場景深度結合?如何讓技術真正作用于企業……
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • 如何讓Kubernetes集群優雅地使用GPU節點
        2閱讀 0條評論 個贊
        如何讓你的Kubernetes集群使用GPU節點CUDA驅動程序如果您還沒有這樣做,請確保您已在GPU節點上安裝了NVIDIACUDA驅動程序。CUDA是來自nvidia的并行計算平臺。ht……
      • 前端面試必須解決網絡中的跨域問題
        0閱讀 0條評論 個贊
        什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
      • 教你如何在Linux中生成復雜的密碼 并檢查密碼強度
        0閱讀 0條評論 個贊
        在本教程中,我們將討論如何生成復雜密碼并且檢查密碼強度。生成復雜的密碼強密碼應由字母、數字和符號的混合組成。第二個要求是不要使用已知單詞、出生日期或姓名,因為很容易受到字典攻擊。密碼應該包含多少個字符……
      • 胡迪核心知識點詳解(好文章合集)
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
      • Java處理異常的9個最佳實踐 你做得對嗎?
        1閱讀 0條評論 個贊
        原文:https://dzone.com/articles/9-best-practices-to-handle-exceptions-in-java譯者:颯然Hang譯文:http://www.r……
      • 7 種提升Spring Boot吞吐量神技!
        0閱讀 0條評論 個贊
        一、異步執行實現方式二種:1.使用異步注解@aysnc、啟動類:添加@EnableAsync注解2.JDK8本身有一個非常好用的Future類——CompletableFuture@AllArg……
      • 3種方式!轉到錯誤處理最佳實踐
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-云加社區,作者李森林導語|錯誤處理一直以一是編程必需要面對的問題,錯誤處理如果做的好的話,代碼的穩定性會很好。不同的語言有不同的出現處理的方式。Go語言也一樣,在本篇文章中,我們……
      • Docker 從入門到實戰 未雨綢繆收藏~
        1閱讀 0條評論 個贊
        一、概述1.1基本概念Docker是一個開源的應用容器引擎,基于Go語言并遵從Apache2.0協議開源。Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中……
      • 談如何設計未來的倉庫建筑
        4閱讀 0條評論 個贊
        編輯:數據社全文共3758個字,建議10分鐘閱讀大家好,我是峰哥,夏天已經來了,小麥馬上要豐收了,今天分析一篇關于未來數倉架構發展方向的文章。Linked大佬JayKreps曾發表過一篇博客,簡單闡……
      • 真正的建筑設計是什么樣子的?
        1閱讀 0條評論 個贊
        什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
      • 一萬字長文講解HBase讀寫性能優化
        2閱讀 0條評論 個贊
        一、HBase讀優化1.HBase客戶端優化和大多數系統一樣,客戶端作為業務讀寫的入口,姿勢使用不正確通常會導致本業務讀延遲較高實際上存在一些使用姿勢的推薦用法,這里一般需要關注四個問題:1)s……
      • MySQL查詢語句的準備階段是什么?
        1閱讀 0條評論 個贊
        以下文章來源于公眾號--一樹一溪,作者一樹一溪這一篇主要講的內容是一條簡單查詢語句,在查詢準備階段會干哪些事情?分3個部分:打開表select*替換為表字段填充where條件示例表及SQ……
      • 系統數據治理的思考與實踐
        2閱讀 0條評論 個贊
        美團住宿數據治理團隊從事數據治理工作多年,從最初的被動、單點治理,發展到后來的主動、專項治理,再發展到現在的體系化、自動化治理。一路走來,他們不斷進行積累和沉淀,也在持續思考與實踐。目前該團隊取得了一……
      • Linux的10個最危險的命令
        0閱讀 0條評論 個贊
        rm-rf命令該命令可能導致不可恢復的系統崩壞。>rm-rf/#強制刪除根目錄下所有東西。>rm-rf*#強制刪除當前目錄的所有文件。>rm-rf.#強制刪除當前文件夾及其子文件夾。執行rm-r……
      • 可以解決80%問題的故障排除思路
        0閱讀 0條評論 個贊
        在講解事件、故障處理思路前,先講一個故障場景(以呼叫中心系統作為一例子):業務人員反映呼叫中心系統運行緩慢,部份電話在自助語言環節系統處理超時,話務轉人工座席,人工座席出現爆線情況。運維人員開始忙活了……
      • 如何在Linux下擴展XFS根分區
        2閱讀 0條評論 個贊
        在某些情況下,/分區在Linux中磁盤空間不足。即使壓縮和刪除舊的日志文件也無濟于事,因此在這種情況下,我們別無選擇,只能擴展/文件系統。在本文中,我們將演示如何在Linux系統中擴展不……
      • 做SQL性能優化真的是干瞪眼
        1閱讀 0條評論 個贊
        很多大數據計算都是用SQL實現的,跑得慢時就要去優化SQL,但常常碰到讓人干瞪眼的情況。比如,存儲過程中有三條大概形如這樣的語句執行得很慢:selecta,b,sum(x)fromTgr……
      • Spring Boot的表現太差了 我教你幾招輕松搞定
        0閱讀 0條評論 個贊
        文章……
      • 如何用10行bash shell腳本監控Linux?
        1閱讀 0條評論 個贊
        http://985.so/xbtd子沐愛掃地(譯)監控我們的環境對于服務器運維來說至關重要,尤其是在部署新的應用程序時。如今,公司每天都使用開源解決方案來監控系統資源。但是,當出于測試的目的來監控……
      • Redis過期的數據會被立即刪除嗎?
        1閱讀 0條評論 個贊
        本文來源碼哥字節(ID:MageByte)?碼哥,當key達到過期時間,Redis就會馬上刪除么?先說結論:并不會立馬刪除。Redis有兩種刪除過期數據的策略:定期選取部分數據刪除;惰性刪除;……
      最近發布資訊
      更多
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>