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

weixin_38086192 2019-09-12 10:55:50
我对如何使用弹簧靴制作的多个微服务感到困惑. 当我读到Karaf时,他们总是使用Blueprint而不是Spring,我不会觉得它可以在Spring启动时使用它. 然后我找到了Fabric8,但我找不到任何用Spring启动的微服务的例子. 我需要的只是能够在运行时进行热部署和配置,就像Karaf那样,但是有多个Spring启动服务. 可能吗? 有人可以给我文档或项目样本吗? 谢谢
...全文
45 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38090274 2019-09-12
  • 打赏
  • 举报
回复
这是Fabric8 Microservices Platform中的demo video showing how to create a Spring Boot microservice,并且创建了一个完整的Continuous Deployment pipeline以执行以下操作: >打包代码,创建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执行此操作 – 无论您选择哪种开发框架. 请记住,从热重新加载的延迟带来的好处与降低质量,增加的错误以及远离不可变基础架构和持续交付的操作问题之间存在权衡

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧