关注△mikechen△,十余年BAT架构经验倾囊相授!
大家好,我是mikechen睿哥。
微服务部署是微服务非常重要的环节,下面详解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 提供了一个强大的平台,来管理容器化的微服务应用。
弹性伸缩: 可以根据需求自动或手动调整服务实例的数量。
适合:中大型互联网系统,学习成本高,运维复杂。
以上
作者:mikechen
来源:mikechen.cc