开发人员的新分布式基元

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

作为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模式书就是这种思路。

翻译自: https://www.javacodegeeks.com/2017/04/new-distributed-primitives-developers.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LOJ.2865.[IOI2018]狼人(Kruskal重构树 主席树)

LOJ洛谷 这题不就是Peaks(加强版)或者归程么。。这算是\(IOI2018\)撞上\(NOI2018\)的题了?\(Kruskal\)重构树(具体是所有点按从小到大/从大到小的顺序,依次加入这些点的边),我们可以得到两棵树(和那两题不一…

b站在线解析_这款游戏被全B站所唾弃,每个月却依然有5000万玩家坚持在线?!...

彩虹 | 视频安妮 | 编辑《迷你世界》,相信不少人都听过这个名字。这是个非常神奇的游戏,当然并不是指这个游戏很有自己的特色或者有趣的玩法。它神奇的地方在于你随便在bilibili挑一个有关《迷你世界》的视频打开,弹幕都是“呕”、“开炮”、…

linux 安装软件

安装软件 下载软件的源网址所放目录 vi /etc/apt/sources.list sudo apt-get update 更新源 sudo apt-get install xxx 安装软件,xxx为软件名 sudo apt-get build-dep xxx 安装相关的编译环境 sudo apt…

怎么创建数据表的实体类和业务类_怎样创建一个网站?

怎样创建一个网站?创建网站有三个特别重要的元素,域名、服务器和程序,网站域名按照流程注册就可以了,网站服务器根据网站需要的空间选择,这两个只要你查查或者问提供商就可以慢慢操作的,其中最难的程序&…

Neo4j:绘制“我的名字是……我在工作”图

在过去的几天里,我一直在关注DHH兴起的“我的名字是……”的推文。 据我了解,其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。 您好,我叫大卫。 我将无法在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语。 — DHH&#…

LeetCode 705 Design HashSet 解题报告

题目要求 Design a HashSet without using any built-in hash table libraries. To be specific, your design should include these functions: add(value): Insert a value into the HashSet. contains(value) : Return whether the value exists in the HashSet or not.remo…

ubuntu vim命令

打开默认命令模式,按 i键,进入编辑(插入)模式;编辑完,按Esc键回到命令模式,:(冒号)进入末行模式 进入编辑模式,键I a o 显示行号 在末行模式下&…

mt4 指标 涨跌幅 颜色k线_Tick级别K线显示指标

tick是指价格的波动,价格每波动一次,tick数加1。这是一个生成新K线图的指标,做这个指标的原因是因为我听说某个机构就是用的这种图表交易的,我在网上找了一下,本来我是想找个现成的Tick图指标看看效果的,结…

java程序打包为jar_将Java应用程序打包为一个(或胖)JAR

java程序打包为jar这篇文章将针对一个有趣但非常强大的概念:将您的应用程序打包为单个可运行的JAR文件,也称为一个或胖 JAR。 我们习惯了大型WAR归档文件,其中包含所有打包在某些常见文件夹结构下的依赖项。 使用类似于JAR的打包&#xff0c…

类定义注意点

1、类成员函数访问修饰const,申明和定义中须保持一致; class IntCell{... ; int read( ) const;...} int IntCell::read( ) const { return storedValue } 转载于:https://www.cnblogs.com/wllwqdeai/p/10691130.html

xshell最多支持4个_中集拉钢卷专用挂车来了!自重5吨,最多能装4个钢卷

【卡车之家 原创】“拉钢卷”在卡车行业里并不是一个好词,和它关联的有送车拉钢卷、断梁、超载、事故等。在钢卷运输领域,超载现象严重,行业很少使用专用车辆运输,因此导致了各类事故频发,最严重的当属去年无锡大桥垮塌…

ubuntu chmod更改权限

权限 chmod 全称 change modifiy - rw- rw- rwx d rw- rw- r— - 第1位是‘-’是文件 第1位是‘d’是文件夹 拥有着权限 用户组权限 其他人权限 rwx 可读可写可执行 rw- 可读可写 r-x 可读不可写可执行 。。。 chmod urwx 1.txt 文件拥有者有rwx权…

优先级反转解决方案

1. 优先级反转(Priority Inversion) 由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。 2. 产生原因 其…

如何在Java地毯下有效地清除问题

因为软件错误可能使我们在开发人员面前看起来很糟糕,并导致其他人对我们的想法减少,所以最好避免编写错误,快速识别和修复错误或掩盖我们的错误。 有许多博客文章和文章讨论如何避免错误以及如何识别和修复错误,因此,在…

python多线程_python多线程:控制线程数量

背景前段时间学习了python的多线程爬虫,当时爬取一个图片网站,开启多线程后,并没有限制线程的数量,也就是说,如果下载1000张图片,会一次性开启1000个子线程同时进行下载 现在希望控制线程数量&#xff…

ubuntu 添加用户、用户组

添加用户 useradd xxx -m 创建一个xxx的用户 sudo passwd xxx 设置xxx用户的密码 su xxx 切换到xxx用户 su – xxx 切换到xxx用户,且家目录变为xxx家目录 whoami 看用户名 who 查看登录用户 exit …

python实践系列之(一)安装 python/pip/numpy/matplotlib

1.下载并安装Python3.4 在官网下载即可:Python官网 图1-1 图1-2打开Python图形界面: 图1-3 输入 2345,回车,出现如图,说明安装成功。 图1-42.安装pip (1)查看是否已安装pip 进入cmd命令窗口&…

2019-04(1)(Python学习)

9.1 迭代器 创建迭代器的3种方法: 方法一: 容器对象添加 __iter__() 和 __next__() 方法(Python 2.7 中是 next());__iter__() 返回迭代器对象本身 self,__next__() 则返回每次调用 next() 或迭代时的元素&…

ubuntu 查看进程信息

查看进程信息 ps ps -aux 查看所有进程,每行一个程序 top 显示当前运行程序 kill 98 (98为PID号,) kill -9 98 (强制杀死98)