
微服务是大型架构的基石,下面详解微服务部署@mikechen
微服务多实例部署
在虚拟机或物理机上,每个微服务作为一个独立的进程运行,可通过部署多个实例实现横向扩展。

比如:订单服务部署 3 个实例,分别运行在 3 台虚拟机上。
upstream order_service {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
server 10.0.0.3:8080;
}
server {
listen 80;
location /order/ {
proxy_pass http://order_service;
}
}
部署简单,易于理解,传统企业迁移微服务时常用。
但是,扩缩容速度慢,不利于高频次变更与短时弹性需求。
微服务容器化部署
容器化部署以 Docker 等容器技术为核心,将微服务打包为轻量级、可移植的容器。
运行在宿主机的容器运行时上,也可以在单机、或多主机环境通过自定义编排脚本启动容器。

[宿主机] ├── [订单服务容器 1] ├── [订单服务容器 2] └── [用户服务容器]
一次构建,到处运行;资源隔离性好,启动速度快。
但是,容器数量多时,需要额外的编排与管理工具。
微服务容器编排部署
当微服务数量达到数十个甚至上百个时,手动管理 Docker 容器集群是不可行的。
Kubernetes (K8s) 是事实上的容器编排标准,它负责容器的自动部署、弹性伸缩、自愈能力和负载均衡。

[K8s Node1] ── Pod(Order)
[K8s Node2] ── Pod(Order)
[K8s Node3] ── Pod(User)
│
[K8s Service]
│
[Ingress / API Gateway]
自动化程度高,具备自愈能力、弹性伸缩能力,适合大规模微服务集群。
但是,学习曲线高,集群搭建与维护复杂。
微服务Serverless部署
无服务器部署,将运行时和基础设施管理交给云厂商或平台服务,开发者只需关心函数或服务逻辑。

无需管理底层服务器,自动伸缩与高可用由平台负责。
适合:流量波动大,闲时流量低,需要极致的按需付费。
mikechen睿哥
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。