四大微服务部署模式,你最适合哪种?

四大微服务部署模式,你最适合哪种?

微服务部署是微服务非常重要的环节,下面详解4种常见的微服务部署@mikechen

微服务多实例部署

在单个物理机、或虚拟机上,部署多个不同微服务的多个实例。

每个微服务组件构建为独立进程,通过系统服务或脚本启动,运行在裸机或虚拟机上。

如下图所示:

四大微服务部署模式,你最适合哪种?

物理机/虚拟机
├── service-a.jar(运行在8081)
├── service-b.jar(运行在8082)
├── service-c.jar(运行在8083)

独立打包、独立部署,使用系统进程、或Shell脚本启动。

多个服务实例,共享底层操作系统、硬件资源(CPU、内存、磁盘、网络)。

比如:在一台虚拟机上,部署了用户服务 (User Service) 的两个实例。

以及,订单服务 (Order Service) 的三个实例、以及商品服务 (Product Service) 的一个实例。

服务之间共享资源,一个服务的资源消耗可能影响到其他服务。

如果主机发生故障,其上部署的所有服务实例都会受到影响。

 

微服务容器化部署

使用容器技术(如 Docker),将每个微服务及其依赖打包成一个独立的容器镜像,然后在主机上运行这些容器。

每个容器通常只运行一个微服务的单个实例,如下图所示:

四大微服务部署模式,你最适合哪种?

Docker 主机
├── service-a:1.0(容器)
├── service-b:1.0(容器)
├── service-c:1.0(容器)

容器启动仅需几秒钟,资源开销大大低于虚拟机,能在一台物理服务器上高密度部署多个服务。

并且,每个微服务运行在独立容器中,确保开发、测试与生产环境一致,极大减少“环境差异”导致的问题。

 

微服务Serverless部署

无服务器架构,通常指使用云服务商提供的函数即服务(FaaS)平台。

如下图所示:

四大微服务部署模式,你最适合哪种?

特别适合:需要快速开发和部署小型、独立功能的场景。

 

微服务容器编排部署

结合容器化与自动化编排,通过 Kubernetes(或 K8s+Istio)完成微服务的部署、扩容、监控与治理。

如下图所示:

四大微服务部署模式,你最适合哪种?

Kubernetes 集群
├── Deployment: service-a(副本数3)
├── Deployment: service-b(副本数2)
├── Service、Ingress、ConfigMap、Sidecar(Istio)

 

Kubernetes 提供了一个强大的平台,来管理容器化的微服务应用。

弹性伸缩: 可以根据需求自动或手动调整服务实例的数量。

适合:中大型互联网系统,学习成本高,运维复杂。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧