1. 程式人生 > >雲計算技術了解

雲計算技術了解

關註 程序 本科畢業 架構設計 時間 程序打包 root 左右 打包

焦慮使人進步。

本科畢業設計時接觸過Hadoop,Hbase,後來從事嵌入式行業,淺嘗輒止。

後來炒的非常火的物聯網也好,人工智能也好,雲計算都是關鍵的技術支撐之一。

技術分享圖片

軟件行業,沒有“穩定的工作”這個說法,所以對這種通用的技術和框架還是要保持關註。

跟進一門技術,最好的方法是看下當前市面上的需求是哪些。

隨後從一些招聘帖收集部分信息如下:

大規模高性能並發系統設計、開發、運維經驗。熟悉消息隊列(Kafka/RabbitMQ等)、緩存(Memcache/Redis等)、關系性數據庫(Oracle/MySQL等),能夠設計復雜業務、高並發、大數據量的系統;

有實時大數據處理經驗,熟悉Hadoop/Map-Reduce/Storm/Spark/Flink等分布式計算框架優先考慮

spring相關框架體系,熟悉spring boot快速開發機制,熟悉spring cloud體系並且對spring源碼有研究者優先;

分布式軟件的設計和運行原理,熟悉ZooKeeper、Redis、Kafka、 NoSQL等相關開源軟件的使用和開發。

分布式軟件架構設計,如:微服務架構、分布式事務和數據一致性設計等

熟悉RestFul、微服務等軟件架構風格和理論,有海量節點管理/調度系統設計、開發經驗者優先;

了解虛擬化和容器技術,熟悉k8s/mesos/docker/OpenStack等系統;

了解數據中心規劃、網絡架構、服務器部署等基礎設施架構,熟悉離線計算、實時計算、流計算模型;

精通Python/Java/Go/C其中之一,編碼風格良好

結合雲計算的三個層次, 再加上如上列舉的各種技術點,做一個整理如下。

IaaS,PaaS,SaaS簡介

技術分享圖片

IaaS層相關技術和概念

1.虛擬化

通過某種方式,隱藏底層物理硬件的過程,使得多個操作系統能透明的共享和使用這部分資源。

服務器絕大部分時間,都是處於“休眠”,只有5%的左右的時間工作,虛擬化的優點在於可以減少服務器的數量,對企業來將,其實就是開發減少不動資產,能耗,冷卻和管理成本;

舉例來講就是:

a公司服務器設施必須要滿足自身業務量的峰值,b公司也一樣,峰值不是經常有的,並且大家的峰值可以錯開,那就可以維護一套硬件設施來滿足多個用戶的使用,對於a,b公司來講,本身的成本是降低的,他們再滿足自身業務的同時,無需擔心為那些大多數時間上閑置的資產去開銷成本。

2.hypervisor(虛擬管理程序或VMM)

架構上提供虛擬化的層,具體分為兩類:

  a. 直接運行在物理硬件上,基於內核實現的虛擬機,比如KVM

  b. 運行在一個操作系統內的,比如QMEU,WINE

具體的實現有:Xen,Oracle VM,VirtualBox,KVM,VMware ESX/ESXi等

3. 相關技術點

通過Open Stack,Open Nebula,Apache Cloudstack等軟件平臺,利用現有的KVM等hypervisor實現虛擬化,同時支持對計算資源,網絡資源,存儲資源的抽象和管理,也支持對安全相關的API接口,提供命令行等服務。

PaaS層相關技術和概念

1. 概念

摘自wiki上對PaaS的解釋:

PaaS屬於雲計算服務的一類,它提供一種平臺,使得用戶可以在其上實現對應用的開發,運行和管理,同時不需要考慮復雜的構建,配置和維護相關配套的開發環境。
主要分為兩類:

以虛擬機為基礎的,代表為AWS的Beanstalk;

以容器為基礎的,代表為GAE,CloudFoundry,Heroku;

經濟性上容器比虛擬機占絕對優勢,性能上容器技術也會好一些;但是在安全和隔離方面,虛擬機遠遠好於容器。

2. 架構模式(摘自https://yq.aliyun.com/articles/68828)

技術分享圖片

  1. 路由模塊:該模塊的基本功能是將終端用戶請求路由到對應的服務器實例,並提供應用動態註冊等功能。目前絕大多數的實現是基於ngnix,同時也需要使用簡單的lua腳本完成應用註冊和路由查詢等基本功能;

  2. 服務管理模塊:該模塊會為開發人員和運維人員提供管理接口,其基本功能包括創建應用實例、配置應用運行參數、啟停應用、發布應用程序、擴容或縮容等。服務管理模塊也需要提供相應的客戶端被用戶使用,如命令行或是用戶界面等;

  3. 應用容器模塊:應用容器是PaaS平臺的核心,其主要功能是管理應用實例的生命周期,匯報應用的運行狀態等。目前來看,應用容器可以基於虛擬機來實現(如AWS),也可以使用Linux容器技術來實現,最早使用的是LXC,CloudFoundry使用的是自己的warden,同樣也是基於cgroup,現在最新的是docker;

  4. 應用部署模塊:應用部署模塊需要將應用程序打包成為可直接部署的發布包。該模塊是實現PaaS平臺開發性的關鍵。由於現有通用的PaaS平臺需要支持多種編程語言和框架,如Java, Python, Ruby和PHP等,當應用發布時,PaaS平臺需要根據不同的編程語言將應用打包成為通用的發布包,然後傳遞給容器模塊部署。應用部署模塊是實現這一過程的關鍵,目前來看起源於Heroku的buildpack已經被大家廣發接受;

  5. 塊存儲模塊:該模塊主要用於存儲應用的發布包,需要保證程序包的長久存儲和。目前AWS的Beanstalk直接使用S3,CF可以使用網絡文件系統NFS或是其他任何分布式文件存儲系統(如HBase);

  6. 數據存儲模塊:該模塊需要保存應用和服務的基本信息,可以基於任何現有的數據庫技術實現,如MYSQL或是MONGODB等;

  7. 監控模塊:該模塊的作用是持續監控應用的運行狀態,比如健康狀態(是否存活)、資源使用率(CPU、內存、硬盤、網絡等)和可用性等。這些指標會成為整個PaaS平臺運維的關鍵,也為自動彈性伸縮奠定基礎;

  8. 用戶認證模塊:該模塊需要保證應用程序的安全性和隔離性,通常而言,公有雲的提供商會使用OAuth等技術集成現有的用戶認證服務;

  9. 消息總線模塊:該模塊也是最重要的模塊,由於PaaS平臺所搭建的是一個大規模分布式環境,通常而言,規模在數百臺到上千臺的機器數量,所有模塊之間的通訊會變成一個核心的問題。所以消息總線會變成系統之間通訊的基礎,通常需要支持pub/sub模式。

基於該架構,應用實例的彈性伸縮也能夠非常容易的實現。首先需要監控服務來不斷獲取實時的應用狀態,當某些指標超出預先定義的閾值時,平臺會啟動伸縮服務,首先從應用容器模塊預留資源,然後調用應用部署模塊打包應用並部署,最後將應用節點註冊到路由模塊完成整個伸縮的過程

3. 相關技術點

AUFS技術:

一種union file system,UnionFS主要特點是,將不同的物理位置合並mount到同一個目錄中。比如將只讀的CD/DVD和硬盤目錄聯合掛載到一個目錄上,你就可以對CD/DVD上的文件進行修改,修改結果會存於硬盤上的目錄中。

這篇文章中有詳細的例子:https://www.open-open.com/lib/view/open1440483391763.html

Docker:

利用AUFS技術第一次將容器實例鏡像化,這一突破性的創新能夠讓容器實例可以復制,可遷移,可重用。徹底打破了以前只有使用虛擬機才能遷移實例的局限性。

粗淺的理解,docker將常用的依賴資源,比如OS,lib,基礎組件等打包作為一個整體鏡像,統一配置到容器的根目錄下,然後docker利用了layer的概念,形成了一種增量的rootfs,鏡像的每次都會生成一個layer,再通過UnionFS聯合掛載的方式,不同應用將通過各自所在容器,選擇性的對各個layer進行引用,就完成了實例的復用。

技術分享圖片

SaaS層相關技術和概念

1. 概念

軟件及服務,更像是一種商業模式,而非一種技術框架。

用戶不斷的付費,然後獲得持續性的軟件服務,客戶端非常輕量級,無需配置,管理和維護這些軟件資源;

依據“可配置,高性能,可伸縮”,可以將SaaS劃分為 四級成熟度模型。

技術分享圖片

2. 相關技術點

MDA(model driven architecture):

模型驅動架構,用來實現“可配置化”常用架構。架構模型圖如下:

技術分享圖片

技術分享圖片

其余技術點補充

RestFul(representational state transfer,表現層狀態轉化)軟件架構

網站也是一種軟件,是一種采用C/S模式,分布式部署,通過互聯網通信交互點一種互聯網軟件。

符合REST原則的互聯網軟件,就可以叫RestFul風格的軟件。

REST原則具體有以下幾點:

a. 每一個URI表示一種資源

b. 客戶端和服務器之間,傳遞資源的某種表現層

c. 客戶端通過POST,GET,PUT,DELETE四種方式來操作服務端資源,實現表現狀態轉化

這個框架裏面,核心的東西,在於界定和抽象“表現狀態”,資源的不同版本,不同展現形式等都可以抽象為表現狀態。

有一篇文章講的很好,可以參考:http://www.ruanyifeng.com/blog/2011/09/restful.html

Spring MVC

一個開源的java平臺,MVC即model,view,controller;用於開發靈活和松散耦合的web應用程序。

分布式消息隊列

分布式系統重要組件,主要應用在解決應用耦合,實現異步消息,處理流量削峰,實現消息通訊四個場景。

目前使用較多的有Kafka,RabbitMQ,ActiveMQ,ZeroMQ等。

雲計算技術了解