关注△mikechen的架构笔记△,十余年BAT架构经验倾囊相授
大家好,我是mikechen。
微服务部署架构是微服务非常重要的环节,也是大型架构的必备技能,下面我就全面来详解微服务部署架构@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《最全Java面试题及答案合集》,请关注本公众号【mikechen架构笔记】,后台回复:合集,即可领取。
微服务部署架构
微服务架构是一种将应用程序分解为多个独立服务的架构,每个服务都可以独立开发、部署和扩展。
每个微服务通常都有自己的数据库、API接口,并且独立部署、和扩展。
比如:每个微服务都是一个独立的应用程序,具有自己的代码库、数据库、和依赖项。
每个团队可以有自己的开发环境,比如:使用 Docker 、 Kubernetes ,确保各个服务在开发环境中可以独立运行和测试。
以及,可以独立构建、测试、部署和扩展,比如:为每个微服务配置独立的 CI/CD 管道,Jenkins、GitLab CI ......等等。
通过这种微服务部署架构,可以帮助自动化构建、测试、和部署流程。
微服务容器化部署
微服务容器化部署,是目前非常常见的微服务部署架构之一。
比如:采用Docker 容器化部署,可以将应用程序、及其依赖项打包成轻量级、可移植的容器。
Docker 容器,与集装箱(Container,或称“货柜”),在很多方面非常相似。
每个集装箱都可以装载不同的货物,彼此隔离,避免互相污染或损坏。
无论是在运输船上还是在港口,每个集装箱都是独立的单元。
同理,每个 Docker 容器都运行在独立的环境中,拥有自己的文件系统、进程、和网络设置。
容器之间是隔离的,避免了不同应用之间的干扰、或冲突。
并且,Docker 容器通过标准化的格式,打包应用程序、及其依赖项。
无论运行的是哪种应用,容器的行为、和管理方式都是一致的。
这使得在不同环境,比如:开发、测试、生产...等环境中,部署都是一致的,这也是容器化部署最大的好处。
Docker 容器,使得应用程序的部署和管理变得更加简单。
开发者只需打包一次,就可以在任何支持 Docker 的平台上运行,不再需要为不同环境编写不同的部署脚本。
微服务多实例部署
在微服务架构中,多实例部署是一种常见、且有效的模式。
比如:多个微服务实例,可以部署在同一个物理、或虚拟主机上。
共享主机的计算资源,比如:CPU、内存、存储、网络.......等等硬件设备。
整体部署架构,如下图所示:
这种部署模式,多个实例之间是完全独立的,一个实例故障不会影响其他实例。
采用这种部署模式,虽然可以在同一主机的多个端口运行多个实例,但是,需要确保每个实例的端口不冲突,这在大规模系统中可能变得复杂。
虽然可以扩展实例数量,但主机资源限制,使得这种模式更适合中等负载的应用场景。
微服务容器编排部署
微服务容器编排部署,是指通过容器编排工具,来管理、和部署微服务架构中的容器化应用。
比如:Kubernetes(K8s),是目前最流行的容器编排工具,它由 Google 开发并捐赠给 CNCF(云原生计算基金会)。
容器编排工具,提供了自动化的管理功能,包括:容器的启动、停止、扩展、负载均衡、监控/和更新。。。等等。
整体部署,如下图所示:
如下图所示:
部署步骤,如下:
1.容器化打包
首先,是将微服务打包为 容器,比如:最常用的就是“Docker容器化”。
每个容器包含应用程序,及其所有依赖项,确保在不同环境中的一致性运行。
2.编写部署文件
编写部署文件,包含:应用的配置、所需资源、以及运行策略...等等。
比如:使用 YAML 文件定义 Kubernetes 资源,比如:Pod、Service、Deployment、ConfigMap... 等。
3.部署应用
使用 Kubernetes CLI (kubectl) ,将定义好的 YAML 文件应用到集群中,K8S会根据文件内容调度、和管理容器。
4.配置负载均衡和服务发现
部署服务(Service)资源,K8S自动提供服务发现、和负载均衡,确保流量分发到合适的容器实例。
5.监控与日志管理
部署 Prometheus、Grafana、ELK Stack 等监控、和日志系统,实时监控容器的状态和性能,并收集日志以便于调试和审计。
6.自动扩展与更新
使用滚动更新(Rolling Update)、或金丝雀发布(Canary Deployment),来无缝更新应用版本,保证系统的稳定性。
每种微服务部署架构,都有其特定的优势、和劣势,可以根据实际业务需求、系统规模、和团队的技术能力来决定。
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件…等大厂必考题及答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料