微服务部署是微服务非常重要的环节,下面详解4种常见的微服务部署模式@mikechen
微服务容器化部署
容器化部署,将微服务封装进容器镜像,每个微服务打包成独立的容器(如Docker)。
轻量级隔离指的是容器在操作系统层面,实现资源隔离和环境封装,而不是像虚拟机那样在硬件层面进行完全的虚拟化。
容器不包含完整的操作系统内核,而是与宿主机(物理机或虚拟机)共享同一个Linux内核。
这意味着所有容器都运行在同一个内核之上,减少了内存占用。
并且,容器通过一系列Linux内核技术(主要是:Namespace和Cgroups)。
来隔离每个容器的用户空间,让每个容器看起来拥有一个独立的运行环境。
这种机制使得容器在提供足够隔离性的同时,避免了虚拟机带来的巨大资源开销。
实现了更快的启动速度、更高的资源利用率和更好的可移植性,这正是容器技术大行其道的关键原因。
微服务多实例部署
微服务多实例部署:也就是每个微服务运行在独立进程中,通过物理机、或虚拟机部署多实例。
整体部署架构,如下图所示:
采用这种部署模式,依赖配置中心 + 注册中心实现服务发现…等等。
用户请求 ↓ 负载均衡(如LVS) ↓ 多个物理机 / 虚拟机 ↓ 服务A(独立部署)服务B(独立部署)
优点很多,比如:高度隔离,故障影响范围小,易于扩展单个服务,安全性高…等等。
缺点也是很致命,就是资源利用率低(浪费),以及部署和维护成本高。
比较适合:传统企业向微服务转型的初期探索,对隔离性要求极高、资源充足的场景。
微服务Serverless部署
微服务Serverless部署:采用服务按需运行,无需关心服务器/容器,事件触发即运行。
底层资源由云厂商管理(如 AWS Lambda、阿里云函数计算)…等等。
用户请求/事件触发 ↓ Serverless 网关 ↓ 函数服务(FunctionA、FunctionB)
采用这种模式,极致的运维简化,而且,成本效益高(按实际使用付费)。
高度弹性伸缩,应对突发流量能力强,适合:流量波动大、任务驱动…等等业务场景。
但是,这种模式的缺点也是致命,就是必须绑定服务商。
微服务K8S编排部署
使用K8s作为容器编排平台,自动调度、扩容、滚动升级
微服务部署为 Pod,统一接入 Service、Ingress、ConfigMap 等组件。
用户请求 ↓ Ingress 网关 ↓ K8s Service ↓ Pod(服务A)Pod(服务B)Pod(服务C)
采用这种部署模式,自动化高、扩展性强、支持大规模服务编排。
适合:电商平台、社交媒体:,面对海量用户和突发流量,需要各个模块(用户、订单、支付、商品等)独立伸缩,K8S 能够完美支持。
但是,对团队的运维能力要求更高,需要具备容器化、网络、存储和分布式系统等方面的专业知识。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》