微服务应用程序可以以多种方式运行,每种方式都有不同的权衡和成本结构。适用于跨越几个服务的小型应用程序可能不足以用于大型系统。
从简单到复杂,以下是运行微服务的五种方式:
- 单机多进程:购买或租用服务器并将微服务作为进程运行。
- 多台机器,多进程:显而易见的下一步是添加更多服务器并分配负载,提供更高的可扩展性和可用性。
- 容器:将微服务封装在容器中,可以更轻松地与其他服务一起部署和运行。这也是迈向 Kubernetes 的第一步。
- 编排器:Kubernetes 或 Nomad 等编排器是完整的平台,旨在同时运行数千个容器。
- 无服务器:无服务器允许我们忘记进程、容器和服务器,并直接在云中运行代码。
方案一:单机多进程
在最基本的层面上,我们可以在一台机器上将微服务应用程序作为多个进程运行。每个服务侦听不同的端口并通过环回接口进行通信。
微服务部署的最基本形式使用单机。应用程序是一组加上负载平衡的进程。
这种简单的方法有一些明显的好处:
- 轻量级:没有开销,因为它只是在服务器上运行的进程。
- 方便:这是体验微服务的好方法,无需其他工具的学习曲线。
- 轻松排除故障:一切都在同一个地方,因此如果您有持续交付,那么在出现问题时发现问题或恢复到工作配置非常简单。
- 固定计费:我们知道我们每个月必须支付多少。
DIY 方法最适合只有少量微服务的小型应用程序。除此之外,它还不够,因为:
- 没有可扩展性:一旦你最大化了服务器的资源,就是这样。
- 单点故障:如果服务器宕机,应用程序也会随之宕机。
- 脆弱的部署:我们需要自定义部署和监控脚本来确保服务安装和运行正确。
- 无资源限制:任何微服务进程都可以消耗任意数量的 CPU 或内存,从而可能使其他服务处于饥饿状态并使应用程序处于降级状态。
- 此选项的持续集成(CI) 将遵循相同的模式:在 CI管道中[url=
https://semaphoreci.com/blog/build-stage]构建[/url]