开发者需要理解的分布式原语
隨著容器技術(shù)的崛起,開發(fā)人員的思維也從單主機擴展到了分布式。Bilgin Ibryam在Red Hat官方博客上介紹了什么是分布式原語,以及它與進程內(nèi)原語之間的聯(lián)系。本文已獲得作者翻譯授權(quán),查看原文New Distributed Primitives for Developers。
面向?qū)ο蟮脑Z(進程內(nèi)原語)
作為一個Java開發(fā)者,我熟悉面向?qū)ο蟾拍?#xff0c;比如類、對象、繼承、封裝、多態(tài),等等。除了面向?qū)ο?#xff0c;我也熟悉Java運行時,比如它提供了哪些特性,它是如何管理應(yīng)用程序的,對象和應(yīng)用程序的生命周期是怎樣的,等等。
十多年來,作為一名開發(fā)人員,我使用這些工具、原語和構(gòu)建塊來創(chuàng)建應(yīng)用程序。在我的意識里,我把類看成組件,它生成對象,并由JVM來管理它們。不過,這種模型近來在發(fā)生變化。
Kubernetes的原語(分布式原語)
我從去年開始在Kubernetes上運行Java應(yīng)用程序,Kubernetes為我們引入了新的概念和工具。有了Kubernetes,我就不再局限于使用面向?qū)ο蠛蚃VM原語來實現(xiàn)應(yīng)用程序功能。雖然我仍然需要使用面向?qū)ο蟮臉?gòu)件塊來創(chuàng)建應(yīng)用程序組件,但也可以借助Kubernetes原語來實現(xiàn)部分的應(yīng)用程序功能。
例如,我正在嘗試將應(yīng)用程序組件單元放入獨立的容器鏡像,讓它們成為主要的構(gòu)建塊。這樣我就可以使用Kubernetes提供的一系列豐富的組件來實現(xiàn)應(yīng)用程序功能。現(xiàn)在,我除了可以使用ExecutorService來實現(xiàn)服務(wù)定期作業(yè),還可以使用Kubernetes的CronJob原語來定期運行容器。
Kubernetes的CronJob也提供了一些類似的基于時間的行為,不過它使用的是更加高級的組件,并依賴調(diào)度器完成動態(tài)配置、執(zhí)行健康檢查,在作業(yè)完成之后關(guān)閉容器。這一切讓作業(yè)的運行更具彈性,對資源的使用也更加優(yōu)化。如果我要執(zhí)行應(yīng)用程序的初始化操作,除了可以使用對象的構(gòu)造函數(shù),還可以使Kubernetes的init-container從更高層面來實現(xiàn)初始化。
腦海里的分布式模型
將本地進程內(nèi)原語(面向?qū)ο蠛蚃VM特性)和由Kubernetes提供的進程外分布式原語結(jié)合起來,開發(fā)人員就可以更好地創(chuàng)建應(yīng)用程序。在構(gòu)建一個分布式的應(yīng)用程序時,我的意識不再局限于一個JVM,而是擴散到一組運行著JVM的主機上。
進程內(nèi)原語與分布式原語有一些共性,但它們之間不具有直接的可比性。它們運行在不同的抽象層之上,有不同的前提條件,并提供了不一樣的保證。有一些原語可以放在一起使用,比如我們使用類來創(chuàng)建對象,并把對象放入容器鏡像。不過有一些原語可以相互替代,比如Kubernetes的CronJob完全可以替代Java里的ExecutorService。以下列出我發(fā)現(xiàn)的JVM和Kubernetes之間的部分共性。
新的原語為解決問題提供了新的方式,有些重復(fù)性的方案變成了模式。可以參考“Kubernetes模式”這本書了解更多這方面的內(nèi)容。
關(guān)于作者
Bilgin Ibryam是Apache軟件基金會成員,Red Hat的集成架構(gòu)師,一個軟件工匠和博主。他熱愛開源,熱衷分布式系統(tǒng)、消息傳遞和應(yīng)用集成。他同時是“Camel設(shè)計模式”和“Kubernetes模式”的作者。
原文地址:http://www.infoq.com/cn/news/2017/04/Developers-distributed-primitive
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的开发者需要理解的分布式原语的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 康威定律和系统设计——《微服务设计》读书
- 下一篇: mssql on linux 安装指导