微服务 使用java 命令启动,java – 是否可以使用Spring启动微服务

我对如何使用弹簧靴制作的多个微服务感到困惑.

当我读到Karaf时,他们总是使用Blueprint而不是Spring,我不会觉得它可以在Spring启动时使用它.

然后我找到了Fabric8,但我找不到任何用Spring启动的微服务的例子.

我需要的只是能够在运行时进行热部署和配置,就像Karaf那样,但是有多个Spring启动服务.

可能吗?

有人可以给我文档或项目样本吗?

谢谢

解决方法:

>打包代码,创建docker镜像和kubernetes清单

>执行系统/集成测试

>使用滚动更新部署到登台环境

>等待(可选)人类批准

>使用滚动更新部署到生产环境

git存储库中的任何代码或配置更改都会自动启动滚动更新 – 这是一种热部署.例如如果你在生产中运行3个容器;新容器根据滚动升级策略使用新代码和/或配置进行调整.通常新的容器开始;当他们准备好时,旧的被取下来,一次说1个(如果你愿意,你可以一次性完成).滚动升级包含在任何服务负载平衡中;所以新的容器只有在准备就绪时才会被调用.

鉴于您使用OSGi,您可能希望容器继续运行并且只是动态变异.首先,整个移动到不可变基础设施(例如码头图像)意味着软件变得更简单,更容易推理.而不是动态地滚动/推出新的捆绑/代码/配置,您只需创建一个新的图像并将其旋转.

即时变换导致多线程代码必须动态停止和重新启动服务,这会导致各种复杂的难以重现错误和资源泄漏,因为您有动态启动/停止的大型复杂对象依赖关系图.在Fuse团队中,我们浪费了很多人修复重启逻辑中的错误,我确信在动态重启OSGi服务时仍然存在数十亿个漏洞.

所以我的偏好是使用Continuous Deployment pipeline推出所有更改;无论是代码还是配置.当然,在您进行更改的时间与进程使用新代码/配置处理新请求的时刻之间会增加一些延迟 – 但您可以获得更高的质量和可靠性.此外,它还可以轻松回滚.您还可以轻松地对更改进行滚动升级;因此,如果更改会破坏您的一小部分用户/流量,而不是大爆炸,那么您可以获得快速反馈.

话虽如此;如果你真的真的希望生产JVM能够动态地重新加载代码和/或配置,而不是在没有简单回滚的大爆炸方法中首先进行测试;还有一些选择.它们在configuration microservices documentation中描述.

基本上它归结为使用ConfigMap in Kubernetes或git repository volume;在这两种情况下,配置都作为卷(文件)公开 – 然后Java代码可以监视文件并在运行时重新加载.您可以通过OSGi Config Admin或Spring Boot执行此操作 – 无论您选择哪种开发框架.

请记住,从热重新加载的延迟带来的好处与降低质量,增加的错误以及远离不可变基础架构和持续交付的操作问题之间存在权衡

标签:java,spring,osgi,karaf,fabric8

来源: https://codeday.me/bug/20190715/1465590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值