写点什么

开发者需要理解的分布式原语

  • 2017-04-26
  • 本文字数:1285 字

    阅读完需:约 4 分钟

随着容器技术的崛起,开发人员的思维也从单主机扩展到了分布式。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 模式”的作者。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-04-26 19:003400
用户头像

发布了 322 篇内容, 共 140.9 次阅读, 收获喜欢 146 次。

关注

评论

发布
暂无评论
发现更多内容

对话阿里云叔同:如何看待 2022 年云原生的发展,2023 年有哪些值得关注的技术?

阿里巴巴中间件

阿里云 云原生

C#/VB.NET 在Excel中添加水印

在下毛毛雨

C# .net Excel 添加水印

干货|常用3D建模软件有哪些?

Finovy Cloud

3DMAX Autodesk Maya 3D软件

大文件传输软件的优势有哪些?-镭速传输

镭速

前端技术培训学习的就业怎么样?

小谷哥

Intel官方回应:处理器降价消息不实!全力减少库存

科技之家

第三届腾讯Light·技术公益创造营正式启动:聚焦三大议题,探索技术公益可持续路径​

OpenCloudOS

开源

前端培训机构毕业后该注意什么?

小谷哥

大数据软件开发培训中心哪家好

小谷哥

深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」

C++后台开发

nginx 负载均衡 中间件 后端开发 Linux服务器开发

官宣:计算中间件 Apache Linkis 正式毕业成为 Apache 顶级项目

腾源会

开源

云小课|GaussDB如何进行性能调优

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

提名倒计时! | 2022 龙蜥社区优秀贡献者

OpenAnolis小助手

技术 操作系统 龙蜥社区 开源贡献者 奖项报名

喜讯!云起无垠实力入选多项中国网络安全行业全景图

云起无垠

基于ModelArts进行流感患者密接排查

华为云开发者联盟

人工智能 华为云 行人检测 企业号 2 月 PK 榜 华为云开发者联盟

看板:自我管理的高效工具!

敏捷开发

项目管理 软件开发 看板

程序员培训后怎么能够在一线城市找到工作?

小谷哥

跬智信息 (Kyligence) 入选2022年度上海市优质大数据服务供应商目录

Kyligence

大数据 数据分析

前端程序员就业方向有哪些?

小谷哥

2/8 19:00 直播 | StarRocks 实战系列第一期--部署&导入

StarRocks

数据库

快速入门pandas进行数据挖掘数据分析[多维度排序、数据筛选、分组计算、透视表](一)

汀丶人工智能

Python 数据挖掘 数据分析 pandas

青云 KubeSphere 与 OpenCloudOS 完成技术兼容互认证

OpenCloudOS

云原生 操作系统 KubeSphere

MoBYv2AL :结合 BOYL 和 MoCo 的主动学习算法

Zilliz

解锁极狐GitLab 自动化功能:Webhook 触发 Pipeline 与计划流水线

极狐GitLab

DevOps pipeline ChatOps webhook ChatGPT

基于 Flink+Pravega 的游戏服务器监控与调节系统设计

Apache Flink

大数据 flink 实时计算

我发现买不起自己出版的图书了,这到底是咋回事?

冰河

程序员 并发编程 高并发 架构师 编程开发

金兔迎福报、新春第一炮【2022 中国开源年度报告】!

腾源会

开源

构建工具tsup入门第一部分

小鑫同学

前端 编译 工具链

为啥要对jvm做优化

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

小白科普丨何为树、二叉树和森林

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

深度 | Web 3.0时代去中心化IM 的挑战与思考

环信

Web3.0 环信im

开发者需要理解的分布式原语_语言 & 开发_Bilgin Ibryam_InfoQ精选文章