摘要:在本次上,京東云將在大會上為對云原生感興趣的研發(fā)和運(yùn)維人員帶來利用延遲加載快速啟動容器的話題分享。今天聊的主角云原生也是一樣。
2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主辦的云原生技術(shù)大會 KubeCon + CloudNativeCon + Open Source Summit(上海)即將在中國上海盛裝啟幕。本屆 KubeCon 將吸引來自全世界數(shù)千名技術(shù)人員參加此次盛會,參與CNCF全部項目和話題的深度探討,以及案例分析,聆聽 CNCF 項目的運(yùn)維者和用戶的分享。
在本次KubeCon上,京東云將在大會上為對云原生感興趣的研發(fā)和運(yùn)維人員帶來《利用延遲加載快速啟動 Docker 容器》的話題分享。
看完這些,是不是有點暈了?怎么那么多東西啊!
為了讓大家更好地了解云原生,我們特別開設(shè)了“云原生系列內(nèi)容”,今天將是該系列內(nèi)容的最后一篇。不論你之前了不了解云原生或者CNCF,看完這篇內(nèi)容,希望都能讓大家對于云原生有著從0到1的全方位深入了解。
什么是云原生?計算機(jī)領(lǐng)域每過幾年都會產(chǎn)生一些新的概念出來,網(wǎng)格計算、云計算、物聯(lián)網(wǎng)、微服務(wù)、區(qū)塊鏈、邊緣計算…… 每一個新概念都很難從名稱直接看出來它的含義,所以一開始大家都會問到底什么是X計算,幾年后再說起X計算大家卻似乎都知道了,但是如果讓他們解釋一下,大多數(shù)人還是會解釋不清楚。今天聊的主角“云原生”(Cloud Native)也是一樣。
(關(guān)于云原生的定義眾說紛紜,本文的介紹僅代表個人理解,歡迎指正。)
?
01
/ 云原生是利用云 /
/ 快速交付應(yīng)用的一種方式 /
Pivotal公司是云原生概念的早期推廣者,同時也是Spring框架和Spring Cloud的主要貢獻(xiàn)者,它對云原生的定義是:
“Cloud-native is an approach to building and running applications that
exploits the advantages of the cloud computing delivery
model.”——云原生是利用云交付效率的優(yōu)勢來構(gòu)建和運(yùn)行應(yīng)用的方式。
同時,他還補(bǔ)充道:
“Organizations require a platform for building and operating
cloud-native applications and services that automates and integrates
the concepts of DevOps, continuous delivery, microservices, and
containers.”——組織需要一個平臺來構(gòu)建和運(yùn)行云原生應(yīng)用,這個平臺要包含DevOps,持續(xù)交付,微服務(wù)和容器。
簡單總結(jié)一下,也就會說云原生的目的是為了充分利用云的能力使應(yīng)用交付更快。為了達(dá)到這個目的,將用到DevOps、持續(xù)交付、微服務(wù)和容器等理念和技術(shù)。
此外,提起云原生,業(yè)內(nèi)人士還會提到另一個詞:云原生基金會。那么云原生和云原生基金會(Cloud Native Computing Foundation,簡稱CNCF)又是什么關(guān)系呢?
云原生基金會致力于推廣云原生計算模式,并維護(hù)一個廠商中立的開源生態(tài)系統(tǒng)來普惠大眾。云原生計算使用開源軟件棧來構(gòu)建微服務(wù),打包為容器,并且動態(tài)編排容器來最大化資源利用。CNCF孵化了軟件容器領(lǐng)域的一個值得關(guān)注的Kubernetes項目以及圍繞它的很多其他項目,而Kubernetes目前已經(jīng)成為云原生應(yīng)用的重要基石。
所以,云原生是一種理念和應(yīng)用交付模式,云原生基金會是以推廣這種理念和模式,孵化支撐這種模式的開源項目。注意,這里的“云”并不特指公有云,而是泛指可動態(tài)提供資源的各種平臺。要應(yīng)用云原生,會涉及到一些核心的技術(shù):微服務(wù)、容器、交付。下面看一下為什么云原生會強(qiáng)依賴這些技術(shù)。
?
02
/ 微服務(wù)、容器、交付 /
微服務(wù)簡單來說就是將應(yīng)用所需要的功能拆分成一個個小型獨(dú)立的軟件服務(wù),即“微服務(wù)”。每個微服務(wù)專注于自己的任務(wù),可被獨(dú)立部署、更新、伸縮和重啟,同時基于API彼此通訊來進(jìn)行協(xié)同工作,以形成大型可伸縮應(yīng)用程序。微服務(wù)最重要的點不是把服務(wù)拆的有多小,而是把除了應(yīng)用本身關(guān)注的業(yè)務(wù)以外的其他邏輯都拆除出去。應(yīng)用開發(fā)者不用去關(guān)心其他應(yīng)用在哪里,不用去實現(xiàn)其他應(yīng)用失效了怎么去重試怎么容錯的邏輯,不用去為灰度和AB測試等需求開發(fā)代碼,也不需要去實現(xiàn)邏輯來監(jiān)控應(yīng)用運(yùn)行狀態(tài)… …應(yīng)用開發(fā)者就只專注于實現(xiàn)業(yè)務(wù)邏輯。同時,每個服務(wù)要實現(xiàn)的業(yè)務(wù)邏輯盡可能清晰,盡可能是高內(nèi)聚的一組功能。
容器是應(yīng)用的運(yùn)行環(huán)境,是微服務(wù)的最佳載體。運(yùn)行在容器而不是虛擬機(jī),性能上的優(yōu)勢是一方面,更重要的是關(guān)注主體發(fā)生了變化。當(dāng)運(yùn)行一個虛擬機(jī)時,值得關(guān)注的主體是這臺虛擬機(jī),里邊到底有多少種應(yīng)用、具體是什么應(yīng)用這并不是重點。而當(dāng)運(yùn)行一個容器時,關(guān)注點是放在容器中打包的那個應(yīng)用,應(yīng)用是整個動作的中心。但是也不能說用了虛擬機(jī)就一定不是云原生,利用虛擬機(jī)實現(xiàn)基于云的快速交付,也是云原生的另一種最佳實踐。
交付是將容器中的服務(wù)真正用起來的過程。傳統(tǒng)運(yùn)維關(guān)注點在于一個一個的運(yùn)維動作,而面向交付的運(yùn)維重點在應(yīng)用本身。關(guān)注的是應(yīng)用最終需要提供多少個實例或者支持多少并發(fā)調(diào)用,這些運(yùn)維的動作不應(yīng)該是應(yīng)用的關(guān)注點,應(yīng)該全由底層平臺解決。因此,有了聲明式模型,應(yīng)用只說需要幾個實例,平臺自己想著怎么啟動,當(dāng)有設(shè)備故障時怎么恢復(fù);有了無服務(wù)器架構(gòu),應(yīng)用根本不關(guān)注實例個數(shù)和啟停邏輯,平臺根據(jù)調(diào)用壓力動態(tài)分配計算資源。
之所以很多人一提到云原生就想到Kubernetes,一方面因為Kubernetes是云原生基金會孵化的代表作,另外一方面也和它的能力有很大關(guān)系。作為市場領(lǐng)先的編排解決方案,Kubernetes正是實現(xiàn)了將應(yīng)用以容器的方式快速交付,讓應(yīng)用不用再關(guān)注系統(tǒng)和網(wǎng)絡(luò)差別,不用再關(guān)注部署和伸縮細(xì)節(jié),并且具備豐富的生態(tài)(如Istio,Envoy,Prometheus,Jaeger等),提供應(yīng)用的微服務(wù)治理能力,解決應(yīng)用上云這個難題。
?
03
/ 構(gòu)建云原生的應(yīng)用 /
知道了什么是云原生,那要如何讓應(yīng)用更好地符合云原生的交付模式呢?
首先,你需要有一個云。這個云不一定是公有云,也可以是私有云,混合云,甚至是區(qū)塊鏈服務(wù),也可以是任何其他形式動態(tài)提供資源的平臺。這個云需要具體如下基本能力:管理程序包/容器鏡像/虛機(jī)鏡像的能力;彈性將應(yīng)用通過容器/虛擬機(jī)等方式交付的能力;對應(yīng)用進(jìn)行靈活的服務(wù)治理的能力;對應(yīng)用的各種狀態(tài)進(jìn)行臨時/永久存儲的能力,以及對應(yīng)用的安全性提供保障的能力。
其次,你要有用云的能力,不要在應(yīng)用里去實現(xiàn)應(yīng)該云平臺提供的功能。有些團(tuán)隊用云服務(wù)只敢用云主機(jī)和存儲,擔(dān)心使用云的其他能力會被這個云服務(wù)綁定。有這個擔(dān)心是對的,但是更好的方式應(yīng)該是選擇更開放、更兼容的云產(chǎn)品來使用。例如京東云的Kubernetes集群、微服務(wù)平臺都是與開源項目完全兼容的,可以放心使用,不喜歡了也可隨時切換到自己運(yùn)維的開源項目上。
同時,你還需要改造你的應(yīng)用,使之能更好的適用于在各種云平臺上快速交付。關(guān)于云原生應(yīng)用該如何設(shè)計,Heroku團(tuán)隊提出的十二要素(Twelve-Factor)提供了很多非常有價值的建議。十二要素包含:
按照十二要素的要求,編碼、開發(fā)、構(gòu)建、運(yùn)維等操作都需要被清晰界定和規(guī)范,應(yīng)用需要專注在業(yè)務(wù)邏輯,將部署環(huán)境、運(yùn)行依賴,狀態(tài)保存、并發(fā)、日志等問題都交給云平臺來處理。云原生應(yīng)用的開發(fā)過程變成:快速響應(yīng)業(yè)務(wù)需求開發(fā)精簡的應(yīng)用構(gòu)建標(biāo)準(zhǔn)包,然后在不同的環(huán)境以不同配置動態(tài)部署,運(yùn)行的各種依賴?yán)迷破脚_解決。按照這些原則去設(shè)計自己的應(yīng)用,應(yīng)用會更易于使用云服務(wù)提供的標(biāo)準(zhǔn)能力,會更易于實現(xiàn)快速交付,更易于進(jìn)行靈活擴(kuò)展。
在十二要素發(fā)布后,Pivotal公司的Kevin Hoffman編寫的Beyond the Twelve-Factor App一書中,又增加了三個新要素作為補(bǔ)充:
最后,要構(gòu)建云原生的應(yīng)用,下面是在應(yīng)用研發(fā)上線過程中的一些建議:
代碼里應(yīng)該重點關(guān)注業(yè)務(wù)邏輯而不是其他
代碼盡量不要有任何狀態(tài),狀態(tài)都存到云服務(wù)里
代碼里不要有和本應(yīng)用無關(guān)的業(yè)務(wù)邏輯,它應(yīng)該在其他應(yīng)用里通過API調(diào)用
不要實現(xiàn)用于運(yùn)維和服務(wù)治理和觀測的具體邏輯,要依賴第三方庫和云服務(wù)
不要硬編碼地址等任何配置,這段代碼要運(yùn)行在很多環(huán)境
不要假定這段代碼會部署在什么地址,會部署幾個實例
不要假定程序永遠(yuǎn)不死,要保證單個實例的死去不要影響其他實例
構(gòu)建結(jié)果是一個整體,不能把構(gòu)建的代碼部署后再去改動代碼包里的內(nèi)容
?
關(guān)于云原生, 我們在做什么?云原生聚焦的是如何在IaaS基礎(chǔ)構(gòu)建之上創(chuàng)建有效的應(yīng)用平臺,而為企業(yè)級信息應(yīng)用提供更好的技術(shù)環(huán)境也正是京東云的使命。
京東云,作為具有強(qiáng)產(chǎn)業(yè)屬性的云智能廠商,在云原生技術(shù)的大量投入來自于自身業(yè)務(wù)的需求,從電商的前端網(wǎng)站、訂單、結(jié) 算、支付、搜索、推薦,到后端的倉儲、配送、客服、售后,以及采銷人員使用的各種業(yè)務(wù) 系統(tǒng)都面臨前所未有的挑戰(zhàn)。京東幾千個系統(tǒng),幾萬個應(yīng)用,每一個環(huán)節(jié)正常工作才能保證 整體業(yè)務(wù)順利運(yùn)行。云原生技術(shù)正是承載京東零售科技的技術(shù)基石。
經(jīng)過多年的實踐,京東構(gòu)建了全球最大的Kubernetes集群,積累了大量的云原生開發(fā)和運(yùn)維經(jīng)驗,并且加入云原生計算基金會成為最高等級的白金會員。
作為社區(qū)一員,京東云也會積極采用CNCF的項目、參與開發(fā)貢獻(xiàn)并與其他成員一同合作共建社區(qū)。在即將開始的KubeCon+CloudNativeCon和Open Source Summit(China,2019)活動中,我們的技術(shù)專家在現(xiàn)場將為大家?guī)怼独醚舆t加載快速啟動 Docker 容器》話題分享,通過京東云研發(fā)的容器鏡像延遲加載技術(shù),優(yōu)化 Docker 鏡像的加載過程,顯著提高容器的啟動速度。同時,還有京東商城技術(shù)專家們帶來的《Kubernetes 中 MySQL 容器的正確大小和自動擴(kuò)展》、《使用 Vitess 的兩年:京東如何運(yùn)行全球最大的 Vitess》、《在 Kubernetes 中經(jīng)濟(jì)高效地調(diào)度大量容器》 主題演講。
京東云2016年開始對集團(tuán)外部提供服務(wù)以來,逐漸將集團(tuán)內(nèi)部多年積累的云原生開發(fā)和運(yùn)維能力標(biāo)準(zhǔn)化為Kubernetes集群、微服務(wù)平臺、Devops、函數(shù)服務(wù)、云安全、API網(wǎng)關(guān)等上百種標(biāo)準(zhǔn)的云服務(wù),方便客戶利用京東云服務(wù)的強(qiáng)大能力,快速、安全、高可靠地交付產(chǎn)品。
?
Notice
此次大會京東云展區(qū)將繞著“云原生”和“助力產(chǎn)業(yè)互聯(lián)網(wǎng)“的主題,展示京東云在助力企業(yè)級信息應(yīng)用技術(shù)環(huán)境上的成果。
歡迎大家屆時光臨京東云展區(qū),在深入了解京東云云原生的同時,還可以通過參加我們的互動,獲得京東云神秘禮包哦~
2019年 6月24日~26日,2019 KubeCon + CloudNativeCon + Open Source Summit 上海世博中心,京東云期待與您相見!
點擊“云原生”了解更多信息
關(guān)注微信公眾號"京東云開發(fā)者社區(qū)"
還有大量實操文檔可免費(fèi)與領(lǐng)取
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/25542.html
摘要:在本次上,京東云將在大會上為對云原生感興趣的研發(fā)和運(yùn)維人員帶來利用延遲加載快速啟動容器的話題分享。今天聊的主角云原生也是一樣。 showImg(https://segmentfault.com/img/bVbtNqp?w=688&h=113); showImg(https://segmentfault.com/img/bVbtQaR?w=684&h=327); showImg(http...
摘要:月日,第六屆大會在深圳召開。這是這次大會的第二站活動,第一站已在上海成功舉辦。深圳站視頻及,請在公眾號后臺回復(fù),獲取分享鏈接。據(jù)介紹,目前支持多種開發(fā)庫,如內(nèi)置和等。該協(xié)議的推出,是為了統(tǒng)一標(biāo)準(zhǔn),提高效率。 本文為 PyChina 和「編程派」聯(lián)合首發(fā),作者為 EarlGrey。「編程派」是一個專注 Python 學(xué)習(xí)交流的微信公眾號。 9 月 25 日,第六屆 PyCon China...
摘要:前端的工作更具有挑戰(zhàn)性,方向更多樣化假設(shè)我今年要入前端開發(fā)的坑這里強(qiáng)調(diào)前端是因為,現(xiàn)在很多,安卓開發(fā)加入大前端的這個稱呼。安卓版微信在截稿之前是大概的版本最新是并且持續(xù)了年不變,據(jù)說是為了穩(wěn)定。 作者:Jay(滬江開發(fā)工程師)本文為原創(chuàng)文章,轉(zhuǎn)載請注明作者及出處 不好意思,沒有像其他公眾號一樣趕著發(fā)文章,每年到這個時候總有一大波什么今年前端預(yù)測,技術(shù)框架預(yù)測什么的。我這次寫這篇文針對的...
摘要:前端的工作更具有挑戰(zhàn)性,方向更多樣化假設(shè)我今年要入前端開發(fā)的坑這里強(qiáng)調(diào)前端是因為,現(xiàn)在很多,安卓開發(fā)加入大前端的這個稱呼。安卓版微信在截稿之前是大概的版本最新是并且持續(xù)了年不變,據(jù)說是為了穩(wěn)定。 作者:Jay(滬江開發(fā)工程師)本文為原創(chuàng)文章,轉(zhuǎn)載請注明作者及出處 不好意思,沒有像其他公眾號一樣趕著發(fā)文章,每年到這個時候總有一大波什么今年前端預(yù)測,技術(shù)框架預(yù)測什么的。我這次寫這篇文針對的...
摘要:前端的工作更具有挑戰(zhàn)性,方向更多樣化假設(shè)我今年要入前端開發(fā)的坑這里強(qiáng)調(diào)前端是因為,現(xiàn)在很多,安卓開發(fā)加入大前端的這個稱呼。安卓版微信在截稿之前是大概的版本最新是并且持續(xù)了年不變,據(jù)說是為了穩(wěn)定。 作者:Jay(滬江開發(fā)工程師)本文為原創(chuàng)文章,轉(zhuǎn)載請注明作者及出處 不好意思,沒有像其他公眾號一樣趕著發(fā)文章,每年到這個時候總有一大波什么今年前端預(yù)測,技術(shù)框架預(yù)測什么的。我這次寫這篇文針對的...
閱讀 1633·2021-09-02 15:11
閱讀 1971·2019-08-30 14:04
閱讀 2558·2019-08-27 10:52
閱讀 1574·2019-08-26 11:52
閱讀 1195·2019-08-23 15:26
閱讀 2613·2019-08-23 15:09
閱讀 2603·2019-08-23 12:07
閱讀 2231·2019-08-22 18:41