写点什么

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

  • 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:003511
用户头像

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

关注

评论

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

分而治之——D&C

Kylin

3月日更 21天挑战 分而治之

k8s(Kubernetes)中Pod,Deployment,ReplicaSet,Service之间关系分析

ucsheep

Kubernetes k8s pod Deployment ReplicaSet

带你了解数据库的“吸尘器”:VACUUM

华为云开发者联盟

数据库 数据 GaussDB(DWS) VACUUM

区块链技术或加速企业“碳中和”战略落地

CECBC

区块

自媒体平台数据统计分析爬虫之【趣头条】模拟登陆分析详解及数据统计接口详解

ucsheep

接口 爬虫 趣头条 模拟登录

用 WebRTC 打造一个音乐教育 App,要解决哪些音质难题?

阿里云CloudImagine

音视频 WebRTC 在线教育 RTC

“刷脸”日益泛滥,“掌经脉”开辟生物识别新路

E科讯

云原生数据库风起云涌,华为云GaussDB破浪前行

华为云开发者联盟

数据库 架构 云原生 华为云 GaussDB

情指勤指挥调度平台搭建,公安局情报指挥系统

终于知道为啥网页不让我复制粘贴了!

华为云开发者联盟

js 代码 button事件 复制粘贴 输入框

PHP程序员如何简单的开展服务治理架构(一)

CrazyCodes

php 服务治理

“数字云南”建设成效逐渐显现 区块链财政电子票据带来民生与环保效益

CECBC

区块链

网络连接总超时?从四层模型上解析网络是怎么连接的

京东科技开发者

计算机网络 服务器 域名

PostgreSQL 集群宕机后恢复

桜喵ノねこ

技术杂谈 | Flutter 的性能分析、工程架构与细节处理

有道技术团队

flutter

神策大数据技术直播系列课第二季,开讲啦

神策技术社区

大数据 性能优化 大前端 工程师 事件分析

力扣(LeetCode)刷题,简单题(第14期)

不脱发的程序猿

面试 LeetCode 28天写作 算法攻关 3月日更

2021年DevOps的四大趋势

禅道项目管理

DevOps 工具 趋势 Redis开发与运维

美女师姐说给你听!我成为蚂蚁安全工程师的初体验

DT极客

畅想数据湖

数据社

数据仓库 数据湖 ETL ELT

云原生技术及其未来发展趋势展望 | 趋势解读

云原生

【LeetCode】132模式Java题解

Albert

算法 LeetCode 3月日更

区块链BaaS应用服务平台的搭建

13828808769

区块链+ #区块链#

商品溯源之痛,区块链对商品假冒的解决方案

13828808769

区块链+ 区块链应用 区块链发展 #区块链#

量化策略软件搭建,马丁策略交易软件开发

IAP:物联网终端软件升级技术

华为云开发者联盟

IoT LiteOS iap 物联网终端 OTA

直播预告 | 数据操作加速器,CloudQuery v1.3.5 发布

BinTools图尔兹

sql 编辑器 数据治理 数据安全 数据库管理工具

智慧公安重点人员管控系统大数据分析平台的搭建

13828808769

智慧城市 智慧交通

超详细!手把手带你快速入门 GitHub!

JackTian

git GitHub 开源

MoviePy - 中文文档(一个专业的python音视频编辑库)教程

ucsheep

Python 音视频 视频剪辑 Moviepy 视频合成

Python OpenCV 彩色图像与灰度图像的转换

梦想橡皮擦

3月日更

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