服务部署之单个主机多个服务实例
背景您已应用微服务架构模式并将系统架构为一组服务。每个服务都部署为一组服务实例,以实现吞吐量和可用性。问题如何打包和部署服务?诉求服务使用各种语言,框架和框架版本编写每个服务由多个服务实例组成,用于吞吐量和可用性服务必须可独立部署和扩展服务实例需要彼此隔离您需要能够快速构建和部署服务您需要能够约束服务所消耗的资源(CPU和内存)您需要监视每个服务实例的行...
·
背景
您已应用微服务架构模式并将系统架构为一组服务。每个服务都部署为一组服务实例,以实现吞吐量和可用性。
问题
如何打包和部署服务?
诉求
- 服务使用各种语言,框架和框架版本编写
- 每个服务由多个服务实例组成,用于吞吐量和可用性
- 服务必须可独立部署和扩展
- 服务实例需要彼此隔离
- 您需要能够快速构建和部署服务
- 您需要能够约束服务所消耗的资源(CPU和内存)
- 您需要监视每个服务实例的行为
- 您希望部署可靠
- 您必须尽可能经济高效地部署应用程序
解决方案
在主机(物理或虚拟机)上运行不同服务的多个实例。
有多种方法可以在共享主机上部署服务实例,包括:
- 将每个服务实例部署为JVM进程。例如,每个服务实例的Tomcat或Jetty实例。
- 在同一JVM中部署多个服务实例。例如,作为Web应用程序或OSGI捆绑包。
结果
这种模式的好处包括:
- 比每个主机模式的服务实例更有效的资源利用率
这种方法的缺点包括:
- 资源需求冲突的风险
- 存在冲突的依赖版本的风险
- 很难限制服务实例消耗的资源
- 如果在同一进程中部署了多个服务实例,则很难监视每个服务实例的资源消耗。它也不可能隔离每个实例
相关模式
每个主机的单一服务实例模式是另一种解决方案。
无服务器部署模式是另一种解决方案。
更多推荐
已为社区贡献1条内容
所有评论(0)