得益于CTO、CEO和CDO們積極的推動,IT基礎(chǔ)設(shè)施正在向云環(huán)境遷移,免備案空間 香港服務(wù)器,底層架構(gòu)師則在熱烈討論圍繞著云原生應(yīng)用的SaaS、PaaS和微服務(wù)架構(gòu),而開發(fā)者們正在大顯身手,努力探索云計(jì)算的魔盒,找出什么是對業(yè)務(wù)有價(jià)值的,什么又是不需要的。
之所在云上花費(fèi)這大精力,云應(yīng)用所具備的獨(dú)特功能居功至偉,例如支持高度可擴(kuò)展和靈活的分布式架構(gòu),可以在多云環(huán)境中輕松遷移,但云應(yīng)用從開發(fā)到落地生產(chǎn)環(huán)境,需要許多不同的工具和技術(shù)來提供強(qiáng)有力的支持。本文將討論云環(huán)境中能夠最大化發(fā)揮云計(jì)算優(yōu)勢的新方法、新工具。
函數(shù)式編程
假設(shè)我們希望開發(fā)具有高度可伸縮基礎(chǔ)設(shè)施的服務(wù)來支持IoT和ybig data平臺,函數(shù)式編程是一項(xiàng)值得考慮的選擇。不同于大多數(shù)人所熟知的編程范式,函數(shù)式編程不需要維護(hù)全局狀態(tài),只需要將輸入數(shù)據(jù)傳給函數(shù)即可,適合用于驗(yàn)證新想法。很多頂級云供應(yīng)商目前都已經(jīng)支持函數(shù)式編程。
選擇開發(fā)語言
在云平臺上開發(fā)微服務(wù)架構(gòu)時(shí),啟動時(shí)間(startup time)、內(nèi)存效率(memory efficiency)、二進(jìn)制大?。╞inary size)和并發(fā)性(consurrency)是關(guān)鍵因素。
Go——Go語言對于云計(jì)算來說,是一種優(yōu)秀的選擇,它具備兵法、輕量級、靜態(tài)類型和編譯語言等特性。據(jù)了解,英國的一家銀行(Monzo)完全使用Go語言實(shí)現(xiàn)微服務(wù)架構(gòu)來構(gòu)建完整的銀行體系結(jié)構(gòu)。
Java——大多數(shù)應(yīng)用都是用Java開發(fā)的,Java也擁有大量的開發(fā)者社區(qū)基礎(chǔ)。Spring Boot和Java modules(JDK-9.0~)是云原生架構(gòu)的最佳選擇之一。這是將以遺留系統(tǒng)遷移到云平臺的良好開端。
.net core——微軟已經(jīng)很久沒有支持開源社區(qū)了,這也是很多公司不采用.net core的原因之一。當(dāng)然微軟總是致力于提供無bug的工具、簡單的語法和良好的教程,他們最近也意識到,開源可以為Azure cloud提供更多的創(chuàng)新和業(yè)務(wù)??偠灾?,.net core是Azure云平臺上的最佳選擇之一。
R Math——數(shù)據(jù)科學(xué)(data science)正在席卷整個(gè)計(jì)算機(jī)世界,但卻沒有一種新的語言可以用來解決數(shù)據(jù)科學(xué)難題(統(tǒng)計(jì)和數(shù)學(xué))。由于云計(jì)算可以以低成本提供計(jì)算能力,業(yè)界正試圖用舊的技術(shù)工具來解決人工智能難題。R是S編程語言的實(shí)現(xiàn)。S創(chuàng)建于1976年,R library實(shí)現(xiàn)統(tǒng)計(jì)和數(shù)學(xué)功能。
Python——Python支持多種編程范例和強(qiáng)類型檢查。它易于學(xué)習(xí),有強(qiáng)大的分析庫,并得到了開源社區(qū)的大力支持,這也是Python吸引數(shù)據(jù)科學(xué)家的原因之一。
選擇存儲
大規(guī)模伸縮前端服務(wù)時(shí),嘗試使用連接池與RDBMS數(shù)據(jù)庫進(jìn)行通信可能無法滿足實(shí)際的用例需求,需要我們選擇以云為中心(cloud-centric)的數(shù)據(jù)庫來構(gòu)建強(qiáng)大的存儲平臺。
Amazon DynamoDB——提供了任何級別的single-digit-millisecond延遲,數(shù)據(jù)以NoSQL格式存儲,支持文檔、鍵值存儲模型和構(gòu)建圖形數(shù)據(jù)庫。
Azure Cosmos DB——支持具有水平擴(kuò)展的全局分布式數(shù)據(jù)庫。以NoSQL格式存儲的數(shù)據(jù),保證了99%的single-digit-millisecond延遲。它不僅支持文檔、圖形、鍵值、表和列族數(shù)據(jù)模型,還支持?jǐn)U展到多種語言的API支持。
MongoDB——MongoDB是NoSQL DB的早期版本之一,對于客戶來說是非常好的開源存儲,并且具有不錯的成本效益模型。
IBM Cloudera DB——Cassandra是Cloudera的基礎(chǔ)數(shù)據(jù)庫,它支持基于java的api來與NoSQL數(shù)據(jù)庫通信。
Oracle NoSQL DB——oracle NoSQL DB并支持水平負(fù)載均衡和節(jié)點(diǎn)擴(kuò)展。
Service Mesh微服務(wù)架構(gòu)
微服務(wù)架構(gòu)在帶來諸多好處的同時(shí),也帶來了處理故障、路由和服務(wù)發(fā)現(xiàn)方面的挑戰(zhàn)。因此,在大規(guī)模構(gòu)建以云為中心的服務(wù)時(shí),不妨考慮Service Mesh微服務(wù)架構(gòu)。
什么是Service Mesh微服務(wù)架構(gòu)
Service Mesh是用于處理服務(wù)間通信的基礎(chǔ)設(shè)施層,用于在云原生應(yīng)用復(fù)雜的服務(wù)拓?fù)渲袑?shí)現(xiàn)可靠的請求傳遞。在實(shí)踐中,Service Mesh通常是一組與應(yīng)用一起部署,但對應(yīng)用透明的輕量級網(wǎng)絡(luò)代理。簡單來說,directadmin漢化 虛擬主機(jī),Service Mesh是微服務(wù)通信的代理層。
Linkerd - It communicates between services and provides an abstract layer for accessing microservices. The key features are service discovery, load balancing, circuit breaking, dynamic request routing and distributed tracing.
Linkerd——Linkerd為服務(wù)之間通信提供支持,并為訪問微服務(wù)提供抽象層,具有服務(wù)發(fā)現(xiàn)、負(fù)載均衡、斷路、動態(tài)請求路由和分布式跟蹤等特性。
Envoy——最初在其內(nèi)部使用,而今作為Service Mesh解決方案開放了源代碼。不過Envoy并不是為Kubernetes設(shè)計(jì)的。
Istio——Istio使用負(fù)載均衡服務(wù)創(chuàng)建已部署服務(wù)的網(wǎng)絡(luò)以進(jìn)行服務(wù)身份驗(yàn)證。服務(wù)監(jiān)視是它支持的關(guān)鍵特性之一。