得益於CTO、CEO和CDO們積極的推進,IT基礎設施正在向雲環境遷移,底層架構師則在熱烈討論圍繞着雲原生應用的SaaS、PaaS和微服務架構,而開發者們正在大顯身手,努力探索雲計算的魔盒,找出什麼是對業務有價值的,什麼又是不須要的。前端
之所在雲上花費這大精力,雲應用所具有的獨特功能居功至偉,例如支持高度可擴展和靈活的分佈式架構,能夠在多雲環境中輕鬆遷移,但云應用從開發到落地生產環境,須要許多不一樣的工具和技術來提供強有力的支持。本文將討論雲環境中可以最大化發揮雲計算優點的新方法、新工具。java
假設咱們但願開發具備高度可伸縮基礎設施的服務來支持IoT和ybig data平臺,函數式編程是一項值得考慮的選擇。不一樣於大多數人所熟知的編程範式,函數式編程不須要維護全局狀態,只須要將輸入數據傳給函數便可,適合用於驗證新想法。不少頂級雲供應商目前都已經支持函數式編程。git
在雲平臺上開發微服務架構時,啓動時間(startup time)、內存效率(memory efficiency)、二進制大小(binary size)和併發性(consurrency)是關鍵因素。github
Go——Go語言對於雲計算來講,是一種優秀的選擇,它具有兵法、輕量級、靜態類型和編譯語言等特性。據瞭解,英國的一家銀行(Monzo)徹底使用Go語言實現微服務架構來構建完整的銀行體系結構。web
Java——大多數應用都是用Java開發的,Java也擁有大量的開發者社區基礎。Spring Boot和Java modules(JDK-9.0~)是雲原生架構的最佳選擇之一。這是將以遺留系統遷移到雲平臺的良好開端。spring
.net core——微軟已經好久沒有支持開源社區了,這也是不少公司不採用.net core的緣由之一。固然微軟老是致力於提供無bug的工具、簡單的語法和良好的教程,他們最近也意識到,開源能夠爲Azure cloud提供更多的創新和業務。總而言之,.net core是Azure雲平臺上的最佳選擇之一。數據庫
R Math——數據科學(data science)正在席捲整個計算機世界,但卻沒有一種新的語言能夠用來解決數據科學難題(統計和數學)。因爲雲計算能夠以低成本提供計算能力,業界正試圖用舊的技術工具來解決人工智能難題。R是S編程語言的實現。S建立於1976年,R library實現統計和數學功能。編程
Python——Python支持多種編程範例和強類型檢查。它易於學習,有強大的分析庫,並獲得了開源社區的大力支持,這也是Python吸引數據科學家的緣由之一。api
大規模伸縮前端服務時,嘗試使用鏈接池與RDBMS數據庫進行通訊可能沒法知足實際的用例需求,須要咱們選擇以云爲中心(cloud-centric)的數據庫來構建強大的存儲平臺。安全
Amazon DynamoDB——提供了任何級別的single-digit-millisecond延遲,數據以NoSQL格式存儲,支持文檔、鍵值存儲模型和構建圖形數據庫。
Azure Cosmos DB——支持具備水平擴展的全局分佈式數據庫。以NoSQL格式存儲的數據,保證了99%的single-digit-millisecond延遲。它不只支持文檔、圖形、鍵值、表和列族數據模型,還支持擴展到多種語言的API支持。
MongoDB——MongoDB是NoSQL DB的早期版本之一,對於客戶來講是很是好的開源存儲,而且具備不錯的成本效益模型。
IBM Cloudera DB——Cassandra是Cloudera的基礎數據庫,它支持基於java的api來與NoSQL數據庫通訊。
Oracle NoSQL DB——oracle NoSQL DB並支持水平負載均衡和節點擴展。
微服務架構在帶來諸多好處的同時,也帶來了處理故障、路由和服務發現方面的挑戰。所以,在大規模構建以云爲中心的服務時,不妨考慮Service Mesh微服務架構。
Service Mesh是用於處理服務間通訊的基礎設施層,用於在雲原生應用複雜的服務拓撲中實現可靠的請求傳遞。在實踐中,Service Mesh一般是一組與應用一塊兒部署,但對應用透明的輕量級網絡代理。簡單來講,Service Mesh是微服務通訊的代理層。
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爲服務之間通訊提供支持,併爲訪問微服務提供抽象層,具備服務發現、負載均衡、斷路、動態請求路由和分佈式跟蹤等特性。
Envoy——最初在其內部使用,而今做爲Service Mesh解決方案開放了源代碼。不過Envoy並非爲Kubernetes設計的。
Istio——Istio使用負載均衡服務建立已部署服務的網絡以進行服務身份驗證。服務監視是它支持的關鍵特性之一。
Rainbond——Service Mesh微服務架構是開源PaaS Rainbond在v3.6.0版本中的重點新增特性,能夠開箱即用。Rainbond經過插件式擴展來實現治理功能,並對spring cloud、api gateway、dubbo等微服務架構框架有良好支持。
IoT是全部行業都在關注的增加領域。相信很多人都據說過,數據是一種新的石油這句話。自動駕駛、移動設備等等,天天都會向雲平臺輸送大量數據。事件源(event sourcing)是捕獲完整在線用戶活動的另外一個領域……種種情形和需求,讓數據流工具成爲衆多企業必不可少的一部分。
Kafka——Kafka是一款基於發佈/訂閱的分佈式消息系統,於2011年成爲Apache的孵化項目,隨後於2012年成爲Apache的主要項目之一。Kafka使用Scala和Java進行編寫,因其快速、可擴展的、高吞吐、可容錯的特色而逐漸成爲一項普遍使用的技術,適合在messaging、website activity tracking、log aggregation等大規模消息處理場景中使用。
Kinesis——Amazon Kinesis可以讓您輕鬆收集、處理和分析實時流數據,以便您及時得到看法並對新信息快速作出響應。Amazon Kinesis 提供多種核心功能,能夠經濟高效地處理任意規模的流數據,同時具備很高的靈活性,讓您能夠選擇最符合應用程序需求的工具。
容器化是對在雲環境中運行應用和依賴的打包,即其中包含代碼、環境變量、庫等等。容器能夠在任意雲環境中運行,併爲大規模遷移到不一樣雲環境中提供靈活性。
Docker——Docker爲封裝和分發容器應用提供了一個開放的標準。Docker engine用於構建和運行容器,而Docker鏡像通常存儲在Docker hub中。
Kubernetes——Kubernetes現下已成爲容器編排的標準,在Docker技術的基礎上,爲容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提升了大規模容器集羣管理的便捷性。
以上工具和技術只是雲平臺的開始,須要企業,尤爲是大型企業在構建雲平臺時,結合實際自身狀況進行選擇,爲應用開發、存儲、安全、日誌記錄和調試、監視和測試建立合理的路線圖,這也是爲開發人員增長生產力和實現目標提供清晰思路的有效方法。
開源PaaS Rainbond v3.6.0現已發佈,新增Service Mesh微服務架構開箱即用,經過插件式擴展來實現治理功能,並支持spring cloud、api gateway、dubbo等主流微服務架構。