本文内容基于《Spring Cloud微服务实战》,翟永超著。
什么是微服务架构
微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务。
- 服务都在各自独立的进程中运行;
- 服务之间通过基于HTTP的RESTful API进行通信协作;
- 服务围绕着系统中的某一项或一些耦合度较高的业务功能进行构建;
- 服务都维护者自身的数据存储、业务开发、自动化测试案例以及独立部署机制;
- 服务可以使用不同的语言来编写。
与单体系统的区别
单体系统中,由于所有的业务逻辑在一个应用中,开发、测试、部署都还比较容易且方便。但是,系统为了应对不同的业务需求会不断为该单体系统增加不同的业务模块。同时前端展示已经不仅仅局限于Web的形式,系统后端需要更多的接口模块。不断扩大的需求会使得单体系统变得越来越臃肿。由于单体系统部署在一个进程内,往往修改一个很小的功能,为了部署上线会影响其他功能的运行。并且,单体系统中的功能模块的使用场景、并发量、消耗的资源类型都各有不同,对于资源的利用又相互影响,使得难以准确的评估各个模块的系统容量。
微服务系统中各个功能模块独立部署和扩展,都运行在自己的进程内,在部署上有稳固的边界,这样每个服务的更新都不会影响其他服务的运行。
微服务架构中的两种服务调用方式
- 使用HTTP的RESTful API或轻量级的消息发送协议,实现信息传递与服务调用的触发;
- 通过在轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件。
Spring Cloud简介
Spring Cloud是一个基于Spring Boot实现的微服务架构开发