著名网站设计,专业网站运营制作,asp.net网站本机访问慢,网站软件下载安装随着容器技术的崛起#xff0c;开发人员的思维也从单主机扩展到了分布式。Bilgin Ibryam在Red Hat官方博客上介绍了什么是分布式原语#xff0c;以及它与进程内原语之间的联系。本文已获得作者翻译授权#xff0c;查看原文New Distributed Primitives for Developers。
面向…随着容器技术的崛起开发人员的思维也从单主机扩展到了分布式。Bilgin Ibryam在Red Hat官方博客上介绍了什么是分布式原语以及它与进程内原语之间的联系。本文已获得作者翻译授权查看原文New Distributed Primitives for Developers。
面向对象的原语进程内原语
作为一个Java开发者我熟悉面向对象概念比如类、对象、继承、封装、多态等等。除了面向对象我也熟悉Java运行时比如它提供了哪些特性它是如何管理应用程序的对象和应用程序的生命周期是怎样的等等。 十多年来作为一名开发人员我使用这些工具、原语和构建块来创建应用程序。在我的意识里我把类看成组件它生成对象并由JVM来管理它们。不过这种模型近来在发生变化。
Kubernetes的原语分布式原语
我从去年开始在Kubernetes上运行Java应用程序Kubernetes为我们引入了新的概念和工具。有了Kubernetes我就不再局限于使用面向对象和JVM原语来实现应用程序功能。虽然我仍然需要使用面向对象的构件块来创建应用程序组件但也可以借助Kubernetes原语来实现部分的应用程序功能。 例如我正在尝试将应用程序组件单元放入独立的容器镜像让它们成为主要的构建块。这样我就可以使用Kubernetes提供的一系列丰富的组件来实现应用程序功能。现在我除了可以使用ExecutorService来实现服务定期作业还可以使用Kubernetes的CronJob原语来定期运行容器。
Kubernetes的CronJob也提供了一些类似的基于时间的行为不过它使用的是更加高级的组件并依赖调度器完成动态配置、执行健康检查在作业完成之后关闭容器。这一切让作业的运行更具弹性对资源的使用也更加优化。如果我要执行应用程序的初始化操作除了可以使用对象的构造函数还可以使Kubernetes的init-container从更高层面来实现初始化。
脑海里的分布式模型
将本地进程内原语面向对象和JVM特性和由Kubernetes提供的进程外分布式原语结合起来开发人员就可以更好地创建应用程序。在构建一个分布式的应用程序时我的意识不再局限于一个JVM而是扩散到一组运行着JVM的主机上。 进程内原语与分布式原语有一些共性但它们之间不具有直接的可比性。它们运行在不同的抽象层之上有不同的前提条件并提供了不一样的保证。有一些原语可以放在一起使用比如我们使用类来创建对象并把对象放入容器镜像。不过有一些原语可以相互替代比如Kubernetes的CronJob完全可以替代Java里的ExecutorService。以下列出我发现的JVM和Kubernetes之间的部分共性。 新的原语为解决问题提供了新的方式有些重复性的方案变成了模式。可以参考“Kubernetes模式”这本书了解更多这方面的内容。
关于作者 Bilgin Ibryam是Apache软件基金会成员Red Hat的集成架构师一个软件工匠和博主。他热爱开源热衷分布式系统、消息传递和应用集成。他同时是“Camel设计模式”和“Kubernetes模式”的作者。
原文地址http://www.infoq.com/cn/news/2017/04/Developers-distributed-primitive .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注