openshift

这个小系列的前两个部分介绍了如何使用WildFly Swarm构建一个小型的JAX-RS服务并将其打包到Docker映像中 。 您学习了如何将此示例部署到OpenShift ,现在是时候对其进行一些扩展了。

为什么扩展很重要

基于微服务的体系结构的关键方面之一是分解为高性能的单个服务,这些服务可以按需扩展并且在技术上很容易。 现在正在构建应用程序以扩展规模,并在必要时透明地提供基础结构帮助。 尽管Java EE开发人员过去在标准水平缩放方面做了很多工作,但它们通过将更多的物理框彼此相邻放置,或者通过在同一主机上旋转更多实例来限制垂直缩放。 微服务允许使用不同的扩展方法。 关于缩放比例不同变化的更完整定义可以在《可缩放性的艺术》一书中找到。 我将在以后的博客文章中探讨不同的方法。 为了使扩展变得更容易一点,我们今天将通过旋转更多的Pod垂直扩展我们的小小的应用程序。

什么是豆荚

吊舱(例如在鲸鱼或豌豆吊舱中)是Kubernetes对象,它对应于在共享上下文中运行的同一组应用程序。 就Docker结构而言,一个Pod由一组共享容器的Docker容器组成。 在前容器世界中,它们将在相同的物理或虚拟主机上执行。 因此,这就是我们在此示例中要扩展的内容。 已运行的Pod。

到目前为止,我们做了什么?

当您首次部署JAX-RS示例时,OpenShift创建了很多资源。 即:

  • Imagestream :图像流类似于Docker图像存储库,其中包含一个或多个由标签标识的Docker图像。 OpenShift存储有关每个图像的完整元数据(例如,命令,入口点,环境变量等)。 OpenShift中的图像是不可变的。 OpenShift组件(例如构建和部署)可以观看图像流并在添加新图像时接收通知,例如通过执行构建或部署来做出React。
  • 服务 :Kubernetes服务充当内部负载平衡器。 它标识一组复制的Pod,以便代理它接收到的连接。
  • DeploymentConfig :OpenShift在复制控制器的基础上,通过部署概念增加了对软件开发和部署生命周期的扩展支持。 OpenShift部署还提供了从映像的现有部署过渡到新映像的功能,并且还定义了在创建复制控制器之前或之后运行的挂钩。

因此,服务将我们的请求代理到Pod,并且在Kubernetes复制控制器之上构建了一个deployconfig,该控制器控制Pod的数量。 我们越来越近了!

请立即扩展我的微服务!

只需再延长一秒钟,就可以了:尽管服务为可能会闪烁的不存在的Pod提供路由和负载平衡,但是ReplicationController(RC)用于指定并强制应存在的Pod(副本)的数量。 可以认为RC与服务处于同一级别,但是它们在pod上方提供不同的功能。 RC是Kubernetes对象.OpenShift在RC顶部提供了一个称为``部署配置(DC)''的``包装''对象。 DC不仅包括RC,而且还允许您定义映像之间的过渡以及部署后挂钩和其他部署操作的发生方式。

我们终于知道要看哪里了。 让我们看一下启动集群样本映像时创建的DeploymentConfig的外观。

oc get dc swarm-sample
NAME           TRIGGERS                    LATEST VERSION
swarm-sample   ConfigChange, ImageChange   1

即使RC控制Pod的缩放比例,它们也封装在一个更高的结构DeploymentConfig中,该结构还管理这些Pod / RC的部署时间,地点和方式。 我们仍然可以看到底层的RC :(注意:输出被截断)

oc get rc swarm-sample-1
CONTROLLER       CONTAINER(S)   IMAGE(S)                                         REPLICAS
swarm-sample-1   swarm-sample   172.30.101.151:5000/myfear/swarm-sample@sha256:[...]    1

现在我们需要知道我们要进行的缩放是否确实有效。 我确实推送了一个curl脚本 ,该脚本从JAX-RS端点输出结果,并Hibernate2秒钟,然后再次请求输出。 启动它,并观察返回全部相同主机名环境变量的结果,直到执行以下命令:

oc scale dc swarm-sample --replicas=3

现在,一切都发生了变化,过了一会儿,您会看到返回了三个不同的主机名。 可能需要一段时间(具体取决于您的计算机以及OpenShift旋转新Pod的速度。您还可以在管理控制台中看到更改,该控制台现在显示三个Pod。

我们可以通过将副本数设置回1来还原行为。

oc scale dc swarm-sample --replicas=1

那很简单。 并没有完全被认为是最佳实践。 因为所有Pod共享相同的上下文,所以它们永远不应在同一台物理计算机上运行。 相反,最好在同一RC内的三个Pod上运行完整的微服务(前端,后端,数据库)。 但这是更多博客文章发表的主题。 现在您已经了解了如何在OpenShift上缩放Pod,我们可以继续进一步扩展示例应用程序,并在以后进行更多缩放示例。

翻译自: https://www.javacodegeeks.com/2015/10/scaling-java-ee-microservices-on-openshift.html

openshift

openshift_在OpenShift上扩展Java EE微服务相关推荐

  1. 在OpenShift上扩展Java EE微服务

    这个小系列的前两个部分介绍了如何使用WildFly Swarm构建一个微型JAX-RS服务并将其打包到Docker映像中 . 您学习了如何将此示例部署到OpenShift ,现在该进行一点扩展了. 为 ...

  2. openshift 部署_在OpenShift上部署Java EE微服务

    openshift 部署 我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客. 您学习了如何使用Maven构建所谓的"胖子",还使用Maven Doc ...

  3. 在OpenShift上部署Java EE微服务

    我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客. 您学习了如何使用Maven构建一个所谓的"胖子",还使用Maven Docker插件对我们的微服 ...

  4. OpenShift上的Java EE工作流(技术提示#64)

    该网络研讨会展示了如何使用WildFly , JBoss Tools , Forge , Arquillian和OpenShift在OpenShift上创建Java EE工作流. 具体来说,它谈论: ...

  5. Apache OpenWebBeans 发布适用于 Java EE 微服务的 Meecrowave 服务器 1.0

    Apache OpenWebBeans,JSR 365 依赖注入(CDI 2.0)的一种实现,最近发布的 Meecrowave 微服务器的服务器 1.0 为 Java Persistence API( ...

  6. openshift_OpenShift上的Java EE工作流(技术提示#64)

    openshift 该网络研讨会展示了如何使用WildFly , JBoss Tools , Forge , Arquillian和OpenShift在OpenShift上创建Java EE工作流. ...

  7. jboss4 java_带有JBoss工具的OpenShift 3上的Java EE 7应用程序

    jboss4 java 您可以使用最新版本的JBoss Tools OpenShift插件在Eclipse中创建和管理OpenShift应用程序. 他们要么预先捆绑了最新的 JBoss Develop ...

  8. 带有JBoss工具的OpenShift 3上的Java EE 7应用程序

    您可以使用最新版本的JBoss Tools OpenShift插件在Eclipse中创建和管理OpenShift应用程序. 他们要么预先捆绑了最新的 JBoss Developer Studio(9. ...

  9. java ee的小程序_扩展Java EE应用程序的基础

    java ee的小程序 老实说,"可扩展性"是一个详尽的主题,并且通常没有被很好地理解. 通常,它被认为与高可用性相同. 我已经看到新手程序员和"经验丰富"的建 ...

最新文章

  1. BZOJ1251: 序列终结者
  2. 【leetcode】45. Jump Game II 非负数组的最少跳跃步数
  3. smem – Linux 内存监视软件
  4. [原创]ActionScript3游戏中的图像编程(连载五)
  5. 设计灵感|想让海报设计更丰富?可以试试重复
  6. 智能问答系统方法综述
  7. 程序实现对数据排序并按出现次数进行排序 程序实现对数据排序并按出现次数进行排序(注:用面向对象的方式实现,用for循环进行排序,别用comparable接口实现){1,4,2,1,3,2,1,4}作为
  8. 10款功能强大的网络嗅探工具应用分析
  9. ProjectZomboid服务器搭建
  10. 使用虚拟机镜像文件导入部署openGauss
  11. 二手房数据的分析与挖掘(三)-- 描述性分析2D
  12. 主机甲和主机乙之间已建立一个TCP连接,TCP最大段长为1000字节,若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连续发送2个最大段后,成功收到主机乙发送的第一段的确认段,确认段中通告的接收
  13. [App Bundle]Android动态化技术实例
  14. 东软始业教育结业考试
  15. Gradually Vanishing Bridge for Adversarial Domain Adaptation
  16. 服务异步通信RabbitMQ
  17. java中 数组声明,java数组声明格式
  18. 用 Electron 打造 Win/Mac 应用,从「代码」到可下载的「安装包」,可能比你想得麻烦一点...
  19. C语言学习(四)字符串和格式化输入/输出
  20. 华为MA5626配置为普通交换机的方法

热门文章

  1. 【贪心】Stall Reservations(luogu 2859/poj 3190)
  2. 10、java中文件的抽象表示
  3. HashMap在java并发中如何发生死循环
  4. Jsoup代码解读之三-Document的输出
  5. 漫画:什么是数据仓库
  6. java人脸识别更新:摄像头支持360、火狐和谷歌浏览器
  7. 如何给视频中插入视频,字幕,以及去掉前后广告
  8. mysql分组查询的两类
  9. Android使用MPAndroidChat
  10. 拉取git的分支项目