1. 程式人生 > >物件儲存的發展歷程(下)——從軟體到服務的“升級”

物件儲存的發展歷程(下)——從軟體到服務的“升級”

導語

在《從“軟體”到“服務”——【物件儲存】的發展歷程(上)》中,我們和大家在物件儲存大規模普及之前,大量的資料儲存和處理是怎麼實現的。但這些方案大都專注於解決其中一類問題,缺少足夠的普適性。那麼物件儲存出現後,究竟解決了什麼問題?優勢又為何呢?

1.軟體 V.S 服務

跟上一篇提到的各個軟體相比,物件儲存與之最大的區別不在於實現的機制,而在於形態從軟體到服務的一個大飛躍。在這兒我想用一個可能不太恰當的比喻來說這事——傳統的體重計。

不管是電子的還是機械的,他只是一個工具,我們評價的標準更多是價格、準確度、易用性、量程。而網際網路的體重計,能幫你記錄你的體重變化曲線,你關心的可能更多是資料聯動、視覺化、以及根據你的體重給出的建議。當然,如果你真的對減肥有強烈的需求,那麼找一個合適的教練,由教練來指導你的減肥流程才合適,而網際網路體重計只是教練手中的一個工具而已。

服務跟軟體相比,有幾個大的不同點:

  • 首先是自由演化——物件儲存的客戶可以只關心SLA,並不關心你實現SLA的手段,所以演化更自由;
  • 其次是使用服務完全不用關心運維問題——運維問題完全交給服務提供商來解決;
  • 最後是採用服務形態後,業務的架構方式更靈活——比如控制面和資料面分離更輕鬆等。

作為一個部署在雲端的服務,它的介面和實現是分離的,也就是說我可以在保持介面不變的情況下持續演化實現。我們可以想象一下第一次在 AWS S3 上傳的資料還有一些直到今天也沒有刪除,但這些資料可能已經經歷了很多代的硬碟(畢竟硬碟的壽命一般也就3-5年),以及很多代的儲存引擎了。這也是與傳統儲存軟體不同的地方,傳統儲存軟體如果大幅度更改了架構,那麼通常是以一個新的儲存軟體的形式來出現。

背後的原因至少有兩點:

  • 不同儲存引擎之間的平滑過渡和資料遷移難度很高,耗時很長,風險也很大,對於軟體的使用者來講根本不願承受這些風險;
  • 每個儲存引擎都有自己的優缺點,如果是服務的提供方,還能接受新引擎的缺點,也能通過硬體或者使用其他方式來彌補,但作為軟體來使用的話,部分喜歡老版本優點的使用者會長期停留在老版本,這經常會導致社群的分裂。

2.傳統儲存 V.S 物件儲存

儲存類的軟體運維永遠是一個問題,磁碟的壽命一般是3~5年,在3副本的情況下,1PB儲存需要300塊10TB硬碟,5年總共260周,也就是說,平均每週都要進行一次以上的硬碟更換操作。而採用物件儲存,對應的麻煩一般交給服務供應商來解決。服務供應商一般會選擇將壞盤留在機架上,等伺服器到期後一次性銷燬,來降低運維成本。此外,為了避免單機架、單AZ(Available Zone,可用區,一般一個AZ對應一個機房,兩個AZ之間間距不低於20km,且不高於100km)故障導致資料不可用,一般還會採用一些反親和策略,比如同一資料的多個副本,放在3個機架上,並且至少兩個不同的AZ來儲存。

跟運維相關的採購負擔也是使用儲存軟體的一個大難題,在很多業務剛開始推廣時,並不知道需要多少儲存和上傳頻寬。如果按照上限準備,勢必造成大量的浪費。如果準備不足,一旦儲存用滿,客戶無法上傳,就是影響運營的超大事故。而使用物件儲存,這些問題都不再存在。

採用物件儲存後,我們可以更方便地引入控制流和資料流分離。以一個UGC(User-generated content,使用者生成內容,比如抖音、快手)型別的圖片或者短視訊網站為例,如果控制流和資料流不分離,那麼為了提供使用者訪問網站的體驗,我們需要租賃優質的多線BGP機房,這類機房的頻寬成本非常昂貴,而圖片和短視訊的頻寬需求巨大(主要是上傳所需的頻寬和CDN回源所需的頻寬),造成總成本過高。如果把圖片/短視訊相關的上傳和CDN都挪到物件儲存服務商,只把控制相關的部分保留在昂貴的多線BGP機房。首先是上傳基本免費,如果租賃同一個服務商的CDN,CDN回源費用也可以打折,而上傳、下載的質量保證則由服務商去做保證,在獲得足夠質量的同時能大幅度節省費用。由於物件儲存一般提供各類回撥功能和轉碼功能,所以你原有的功能需求一般也能通過架構微調來滿足。

除此之外,物件儲存服務還能提供完全無縫的遷移方案,利用映象儲存等功能,可以做到在遷移時,終端使用者完全無感知。比如從原始儲存站點A遷移到物件儲存B,一般步驟如下:

當然實際情況可能會更復雜,比如還涉及到圖片轉碼等功能的遷移。

3.物件儲存在中國的特色擴充套件

圖片和音視訊處理算是很有中國特色的一個物件儲存的擴充套件了,這也跟中國的物件儲存發展跟富媒體網站的興起時間重疊有一定的關係。基於物件儲存的富媒體處理的好處不僅僅在於簡化了使用流程,免除了客戶自己維護圖片轉碼叢集負擔,還大幅度降低了圖片相關的安全風險。眾所周知,圖片相關的 libjpeg, libpng 等庫是安全漏洞的重災區,UGC類的業務很難避免黑客上傳惡意圖片來攻擊。物件儲存的供應商能使用的手段也不僅僅是緊盯CVE及時升級,還包括了使用容器來加固轉碼引擎,定期清理容器來避免APT攻擊等手段。

綜上所述,採用物件儲存,跟採用儲存軟體相比,最主要的收益來自於運維負擔、採購風險轉移給了物件儲存供應商,其次的收益還包括更靈活的架構於使用方式。其實物件儲存的功能還有很多,如果物件儲存相容常用的 S3 協議的話,對應的生態也很強大,不僅有大量的工具,常見的框架一般也有S3的支援。

推薦閱讀

從“軟體”到“服務”——【物件儲存】的發展歷程(上)

免費試用

*點選“免費試用”免費領取京東雲10GB物件儲存額度

相關推薦

物件儲存發展歷程——軟體服務的“升級

導語 在《從“軟體”到“服務”——【物件儲存】的發展歷程(上)》中,我們和大家在物件儲存大規模普及之前,大量的資料儲存和處理是怎

SRCNN到EDSR,總結深度學習端到端超解析度方法發展歷程

超解析度技術(Super-Resolution, SR)是指從觀測到的低解析度影象重建出相應的高解析度影象,在監控裝置、衛星影象和醫學影像等領域都有重要的應用價值。本文針對端到端的基於深度學習的單張影象超解析度方法(Single Image Super-Resolutio

innodb儲存引擎筆記

mysql 5.6 optimizer_trace 檢視執行計劃選擇的過程   MVCC innodb的多版本使用undo&回滾段來構建 innodb是聚集索引組織表,每個行記錄有3個額外屬性:ROW_ID、TRX_ID、ROLL_PTR undo記錄了更改前的資料映

近幾年目標跟蹤演算法發展綜述

2016年 VOT2016【Index】今年演算法比賽結果沒什麼特別大的意外,CNN和結合深度特徵的演算法都排名靠前,沒毛病。今年你知道主辦方幹了一件大好事,就是把所能蒐集到的演算法程式碼都給公佈了,良心啊~~~【下載地址】 需要的自己去拿吧。 下面是今年

DQN(Deep Reiforcement Learning) 發展歷程

排序 一段 改進 每次 擬合 一個 class 解耦 通過 目錄 值函數的近似 DQN Nature DQN DDQN Prioritized Replay

DQN(Deep Reiforcement Learning) 發展歷程

avi 基於模型 不同 com html 模型 list 參考 www 目錄 不基於模型的控制 選取動作的方法 在策略上的學習(on-policy) 不在策略上的學習(of

DQN(Deep Reiforcement Learning) 發展歷程

只需要 便是 cas clas lis force ron 矩陣 .html 目錄 不基於模型(Model-free)的預測 蒙特卡羅方法 時序差分方法 多步的時序差分方法

跟著大彬讀原始碼 - Redis 6 - 物件和資料型別

繼續擼我們的物件和資料型別。 上節我們一起認識了字串和列表,接下來還有雜湊、集合和有序集合。 1 雜湊物件 雜湊物件的可選編碼分別是:ziplist 和 hashtable。 1.1 ziplist 編碼的雜湊物件 ziplist 編碼的雜湊物件使用壓縮列表作為底層實現。每當有新的鍵值對要加入到雜湊物件時,程

flume高併發優化——15中介軟體版本升級

在系統平穩執行一年的基礎上,為提供更好的服務,現針對java,kafka,flume,zk,統一進行版本升級,請各位小夥伴跟著走起來,不要掉隊啊! 名稱 老版本號 新版本號 jdk 1.7.0_25 1.8.0 ka

ECMAScript規範深度分析JavaScript:變數物件

本文譯自Dmitry Soshnikov的《ECMA-262-3 in detail》系列教程。其中會加入一些個人見解以及配圖舉例等等,來幫助讀者更好的理解JavaScript。 宣告:本文不涉及與ES6相關的知識。 前言 在本系列教程上一篇文章《從ECMAScript規範深度分

LINQ開始之LINQ to Objects

方法 current sel virtual start .com 代碼 命名空間 edt 前言 上一篇《從LINQ開始之LINQ to Objects(上)》主要介紹了LINQ的體系結構、基本語法以及LINQ to Objects中標準查詢操作符的使用方法。本篇則主要討

【轉載】掌握 HTTP 緩存——請求到響應過程的一切

nbsp ron ast str bit people ring tps pos 作者:Ulrich Kautz 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58bd4dd1204d50674934

關於C#數據的儲存

並且 不同 不同類 long 引用 style 通過 函數 一個數 概念補充: (1)從某個類型模板創建實際的對象,稱為實例化該類型。通過實例化類型而創建的對象被稱為類型的對象或類型的實例。C#程序中,每個數據項都是某種類型的實例。 (2)數據項是數據結構中討論的最小單

深度學習發展歷程2012年以前

機器學習 計算機利用已有的資料,得出了某種模型,並利用此模型預測未來的一種方法。它是人工智慧領域的一個小分支,如果說AI是一個合集,那麼ML就是AI的子集。任何通過資料訓練的學習演算法的相關研究都屬於機器學習,包括很多已經發展多年的技術,比如線性迴歸(Linear Regression)

實現將一維陣列A1開始中的元素迴圈右移k位,要求只用一個元素大小的輔助空間

#include<stdio.h>main(){ int n,arrary[50],k,temp; printf("請輸入陣列元素個數:\n"); scanf("%d",&n); for(int i=1;i<=n;i++) scanf

實現將一維數組A1開始中的元素循環右移k位,要求只用一個元素大小的輔助空間

維數 輔助 數組a emp 數組元素 移動 scan clu n) #include<stdio.h>main(){ int n,arrary[50],k,temp; printf("請輸入數組元素個數:\n"); scanf("%d",&n); for

學習JS的心路歷程-引數的傳遞

今天我們要來探討JS到底是透過何種引數傳遞方式呢?   廢話不多說,上示例!!   我們先宣告原始型別和物件型別來看看兩者是否會有不一樣的差異:   var myStr = 'Hola'; var myObj = {name:'Ann'}; 再來,宣告另一個變數去

學習JS的心路歷程-參數的傳遞

ole 自己 語言 什麽 開始 初學者 做的 console mas 今天我們要來探討JS到底是透過何種參數傳遞方式呢? 廢話不多說,上示例!! 我們先聲明原始型別和物件型別來看看兩者是否會有不一樣的差異: var myStr = ‘Hola‘; var myO

C++筆記 第十四課 進階面向物件---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十四課 進階面向物件(下) 1.面向物件基本概念 類之間的基本關係 繼承 從已存在類細分出來的類和原類之間具有繼承關係(is-a) 繼承的類(子類)擁有原類(父類)的所有屬

壹開始微服務 [ DDD ] 之六 ║聚合 與 聚合根

前言 哈嘍大家週二好,上次咱們說到了實體與值物件的簡單知識,相信大家也是稍微有些瞭解,其實實體咱們平時用的很多了,基本可以和資料庫表進行聯絡,只不過值物件可能不是很熟悉,值物件簡單來說就是在DDD領域驅動設計中,為了更好的展示領域模型之間的關係,制定的一個物件,它沒有狀態和標識,目的就是為了表示一個值。今天