面向开发人员的新分布式原语

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(266)   2023-11-20 07:14:57

面向对象的原语(进程内原语)

作为一名Java开发人员,我非常熟悉面向对象的概念,如类、对象、继承、封装、多态等。除了面向对象的概念,我还非常熟悉Java运行时,什么它提供的功能,我如何调整它,它如何管理我的应用程序,我的对象和整个应用程序的生命周期是什么,等等。

十多年来,所有这些都是我使用开发人员创建应用程序的主要工具、原语和构建块。在我的心智模型中,我会使用类作为组件,这将产生由 JVM 管理的对象。但这种模式最近开始发生变化。

Kubernetes 原语(分布式原语)

去年,我开始在 Kubernetes 上运行我的 Java 应用程序,这引入了新的概念和工具供我使用。使用 Kubernetes,我不仅仅依赖面向对象的概念和 JVM 原语来实现整个应用程序行为。我仍然需要使用面向对象的构建块来创建应用程序的组件,但我也可以使用 Kubernetes 原语来处理某些应用程序行为。

例如,现在我努力将应用程序行为单元组织成独立的容器镜像,成为主要的构建块。这让我可以使用 Kubernetes 提供的一组新的更丰富的结构来实现应用程序行为。例如,现在我不仅仅依靠 ExecutorService 的实现来定期运行某些服务,而且我还可以使用 Kubernetes CronJob 原语来定期运行我的容器。 Kubernetes CronJob 将提供类似的时间行为,但使用更高级别的构造,并依赖调度程序进行动态放置、执行健康检查以及在作业完成时关闭容器。所有这一切都以更有弹性的执行和更好的资源利用率作为奖励而告终。如果我想执行一些应用程序初始化逻辑,我可以使用对象构造函数,但我也可以使用 Kubernetes 中的 init-container 来执行更高级别的初始化。

分布式心智模型

以面向对象概念和 JVM 功能的形式拥有进程内原语,结合 Kubernetes 提供的分布式进程外原语,为开发人员提供了一套更丰富的工具来创建更好的应用程序。在构建分布式应用程序时,我的思维模型不再局限于一个 JVM,而是分布在几个节点上,多个 JVM 协同运行。

进程内原语和分布式原语具有共性,但它们不能直接比较和替换。它们在不同的抽象级别上运行,具有不同的前提条件和保证。有些原语是应该一起使用的,比如我们还是要用类,创建对象,放到容器镜像中。但是 Kubernetes 中的 CronJob 等其他一些原语可以完全替代 Java 中的 ExecutorService 行为。以下是我在 JVM 和 Kubernetes 中发现的一些共性概念,但不再赘述。

随着时间的推移,新的原语催生了解决问题的新方法,其中一些重复的解决方案成为了模式。查看我正在编写的 Kubernetes 模式 一书以了解这种思路。

标签2: Java教程
地址:https://www.cundage.com/article/jcg-new-distributed-primitives-developers.html

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...