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