前言
近几年随着微服务的普及,Docker、Kubernetes等容器化技术的流行,开发及部署方式都发生了巨大的变化,那么问题来了,程序员们该如何调整才能让自己立于技术的潮流当中呢?
本文将介绍微服务架构的发展,后续章节将探讨如何从零开始搭建微服务并部署到容器中。
微服务简介
微服务:一种新的架构设计模型,原本独立的单体系统被拆分成多个服务,每一个服务都运行在各自独立的服务进程中,服务之间基于RESTful API进行通信协作。被拆分的每一个小型服务都围绕着系统中一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制。因为有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。
微服务的发展历程
图一
微服务的发展大体经历了五个过程(图一)。早期的架构有优点,缺点也很明显。
优点:
- 易于开发
- 易于部署
- 易于测试
- 易于水平伸缩
缺点:
- 维护成本增加
- 交付周期长
- 新人培养周期长
- 技术选型成本高
- 故障范围影响大
微服务的诞生
图二
鉴于以上单体架构的明显缺点,微服务吸收了各种架构的优点(图二),得以迅速普及,各厂都已开始(已经)将固有的系统改造为微服务的架构,大厂也都有自己的一套微服务的架构,本文及后续的章节内容是基于Spring Cloud的官方微服务架构进行的案例探讨。
微服务的划分原则
图三
单体架构在拆分到微服务的过程中需要遵循的几个原则(图三)。
微服务的组件构成
图四
微服务一般分为几大组件(图四):
- 注册组件:服务发现、服务生命周期管理
- 配置管理组件:不同环境配置文件的统一管理
- 监控组件:服务的UI化监控
- 网关组件:服务分发、流量控制、权限管理等
微服务的容器化过程
图五
微服务搭建完成到部署至容器端的过程(图五)。
总结
本章节主要讨论了微服务的发展历程,以及微服务容器化的初窥,后续章节将探讨微服务的搭建及如何部署到容器中。