不卡av在线播放_欧美成人AU在线看_亚洲一区二区 视频_五月天亚洲无码伊人

Article / 文章中心

聊聊 Go 語(yǔ)言與云原生技術(shù)

發(fā)布時(shí)間:2022-06-22 點(diǎn)擊數(shù):700
云原生軟件是高度分布式的,必須在不斷變化的環(huán)境中運(yùn)行,并且本身也在不斷變化的應(yīng)用程序。

想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

何為云原生

云原生(Cloud Native)概念是由Pivotal的Matt Stine在2013年首次提出的。

初探云原生,總給人一種模棱兩可,不知所云的感覺(jué)。但實(shí)際上,云原生有著官方的定義:

根據(jù) 云原生計(jì)算基金會(huì) (CNCF,著名的 Linux 基金會(huì)的一個(gè)子基金會(huì))的說(shuō)法:

云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式 API。

這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。

這里我們精煉一下這個(gè)定義。

定義: 云原生軟件是高度分布式的,必須在不斷變化的環(huán)境中運(yùn)行,并且本身也在不斷變化的應(yīng)用程序。

也就是說(shuō),云原生技術(shù)在面對(duì)環(huán)境的不確定性、需求的不斷變化下,它們是可擴(kuò)展的。

云原生的起源

這一切的根本原因可能都是來(lái)自網(wǎng)絡(luò)發(fā)展帶給的壓力。

  1. 早期的時(shí)候,1950 年代后期大型機(jī)計(jì)算機(jī)的引入。當(dāng)時(shí),每個(gè)程序和數(shù)據(jù)塊都存儲(chǔ)在一臺(tái)巨型機(jī)器中,用戶可以通過(guò)愚蠢的終端訪問(wèn),而沒(méi)有自己的計(jì)算能力。所有的邏輯和所有數(shù)據(jù)都作為一個(gè)大的快樂(lè)整體生活在一起。
  2. 隨著廉價(jià)網(wǎng)絡(luò)連接的 PC 的到來(lái),一切都在 1980 年代發(fā)生了變化。與愚蠢的終端不同,PC 可以自己進(jìn)行一些計(jì)算,從而可以將某些應(yīng)用程序的邏輯卸載到它們上。這種新的多層體系結(jié)構(gòu)(分開(kāi)的演示邏輯,業(yè)務(wù)邏輯和數(shù)據(jù)(圖 1-1))首次可以將網(wǎng)絡(luò)應(yīng)用程序的組件進(jìn)行修改或替換為獨(dú)立于其他的網(wǎng)絡(luò)應(yīng)用程序的組件。
  3. 在 1990 年代,萬(wàn)維網(wǎng)的普及和隨后的“互聯(lián)網(wǎng)”淘金熱將世界介紹給軟件作為服務(wù)(SaaS)。整個(gè)行業(yè)都是建立在 SaaS 模型上的,推動(dòng)了更復(fù)雜和渴望資源的應(yīng)用程序的開(kāi)發(fā),這些應(yīng)用程序反過(guò)來(lái)又更加努力地開(kāi)發(fā),維護(hù)和部署。突然間,經(jīng)典的多層建筑已經(jīng)不夠了。作為回應(yīng),業(yè)務(wù)邏輯開(kāi)始分解為可以獨(dú)立開(kāi)發(fā),維護(hù)和部署的子組件,并迎來(lái)了微服務(wù)時(shí)代。
  4. 2006 年,亞馬遜推出了 Amazon Web Services(AWS),其中包括 Elastic Compute Cloud(EC2)服務(wù)。盡管 AWS 不是作為服務(wù)(IAAS)提供的第一個(gè)基礎(chǔ)架構(gòu),但它徹底改變了數(shù)據(jù)存儲(chǔ)和計(jì)算資源的按需可用性,從而使云計(jì)算以及快速擴(kuò)展的能力 - 促進(jìn)了群眾的大規(guī)模遷移資源進(jìn)入”云”。

云原生軟件的設(shè)計(jì)是為了預(yù)測(cè)故障并保持穩(wěn)定,即使它所運(yùn)行的基礎(chǔ)設(shè)施正在經(jīng)歷故障或正在發(fā)生其他變化。

云原生目前已經(jīng)包括了 DevOps(Development 和 Operations 的組合)、持續(xù)交付( Continuous Delivery,CD)、微服務(wù)( MicroServices )、敏捷基礎(chǔ)設(shè)施( Agile Infrastructure )和十二要素( The Twelve-Factor App )等幾大主題。

云原生特性

云原生應(yīng)用程序的設(shè)計(jì)和構(gòu)建是為了利用云提供的規(guī)模(scale),彈性(resiliency),適用性(resiliency)和靈活性(flexibility)。

如今復(fù)雜應(yīng)用程序的特點(diǎn)(用戶期望連續(xù)創(chuàng)新以及無(wú)與倫比的響應(yīng)能力)使業(yè)務(wù)系統(tǒng)更具戰(zhàn)略性和越來(lái)越靈活。云原生就是要快速響應(yīng),同時(shí)還保持敏捷。

云原生應(yīng)用的好處

云原生應(yīng)用(Native cloud applications,NCAs)是為云計(jì)算體系結(jié)構(gòu)設(shè)計(jì)的程序。他們有很多好處:

  • 獨(dú)立性:他們的架構(gòu)使得可以彼此獨(dú)立地構(gòu)建云原生應(yīng)用。這意味著您還可以單獨(dú)管理和部署它們。
  • 彈性:精心設(shè)計(jì)的云原生應(yīng)用即使在基礎(chǔ)架構(gòu)中斷也能夠生存和在線。
  • 基于標(biāo)準(zhǔn)的:對(duì)于互操作性和工作負(fù)載可移植性,云原生應(yīng)用服務(wù)通?;陂_(kāi)源和標(biāo)準(zhǔn)技術(shù)。這有助于減少供應(yīng)商的鎖定,并增加可移植性。
  • 業(yè)務(wù)敏捷性:云原生應(yīng)用可在整個(gè)網(wǎng)絡(luò)上啟用靈活的部署選項(xiàng),并且比傳統(tǒng)應(yīng)用程序還小,這使得它們更易于開(kāi)發(fā),部署和迭代。
  • 自動(dòng)化:云原生應(yīng)用使用 DevOps 自動(dòng)化功能,并啟用定期發(fā)布的軟件更改的連續(xù)交付和部署。此外,開(kāi)發(fā)人員可以使用諸如 Blue-green deployment 和 Canary Deployment 之類的方法來(lái)改進(jìn)應(yīng)用程序,而不會(huì)破壞用戶體驗(yàn)。
  • 零停機(jī)時(shí)間:由于諸如 Kubernetes 之類的容器編排,您可以通過(guò)基本零停機(jī)時(shí)間部署軟件更新。

Go 在云原生時(shí)代的優(yōu)勢(shì)

Go 云原生開(kāi)發(fā)有著天然的優(yōu)勢(shì),云原生系統(tǒng)需要可擴(kuò)展、耦合、彈性可管理。Go 的設(shè)計(jì)就是為云原生時(shí)代構(gòu)建的語(yǔ)言,簡(jiǎn)單高效 、快速編譯、支持現(xiàn)代網(wǎng)絡(luò)和多核計(jì)算、支持高并發(fā)、內(nèi)存安全,幫助用戶專注于解決問(wèn)題而不是受限于語(yǔ)言的復(fù)雜性。

比如以下有名的應(yīng)用全都是用 Go 實(shí)現(xiàn):

#云原生征文# 聊聊 Go 語(yǔ)言與云原生技術(shù)-開(kāi)源基礎(chǔ)軟件社區(qū)

  • Docker 建立容器
  • Kubernetes 編排
  • Prometheus 事件監(jiān)控
  • Consul 服務(wù)發(fā)現(xiàn)
  • Jaeger 端到端分布式跟蹤

時(shí)至今日,Go 已經(jīng)成為云原生開(kāi)發(fā)的通用語(yǔ)言,從 Docker 到 Harbor,從 Kubernetes 到 Consul,從 InfluxDB 到 CockroachDB 等大部分是用 Go 編寫的。而且每天都有更多的項(xiàng)目出現(xiàn)。

總結(jié)

總而言之,在傳統(tǒng)的應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程中,軟件開(kāi)發(fā)商喜歡聚焦在業(yè)務(wù)系統(tǒng),專注于系統(tǒng)如何開(kāi)發(fā)、如何閉源成一個(gè)獨(dú)立的整體系統(tǒng)。

云原生技術(shù)的存在無(wú)非是為了能夠利用“云”(數(shù)量)的好處,同時(shí)彌補(bǔ)其缺點(diǎn)(缺乏可靠性)。Go 語(yǔ)言很好地兼顧了開(kāi)發(fā)效率和運(yùn)行速度,不僅提供了高性能的運(yùn)行時(shí),也降低了大型項(xiàng)目的開(kāi)發(fā)難度。

Go 語(yǔ)言發(fā)布至今已經(jīng)有十余年,與云原生共同發(fā)展,有著大量工具和技術(shù)支持,熟練掌握 Go 語(yǔ)言之后再學(xué)習(xí)這些云原生工具,可能會(huì)有別樣的體會(huì)。

最后,學(xué)習(xí)和了解 Go 與云原生技術(shù),提升知識(shí)面,幫助我們更加能抓住行業(yè)的機(jī)會(huì),時(shí)不我待。