大概在半年前,一次非常有缘的机会让我接触到微服务这个理念,从那以后,无论什么项目都想使用这种开发理念。
每当谈到微服务时,或多或少的总会跟 Spring Cloud 沾上边,那么它们两者有何关系呢?
简单的说,微服务是一种架构风格,Spring Cloud 是实现微服务架构的一系列框架的集合!
单体应用
单体应用,也被称为 All In One
,将所有的功能模块全部堆积起来,然后打成一个 War
包或 Jar
包。这种架构会带来很多问题,比如说团队开发,后期维护等等。这种架构只适合于小型的应用,如果一个项目有高并发、高可用、高扩展的需求,那么千万不能使用单体应用这种架构。
微服务
微服务来源于外国一位教授发表的一篇文章,里面提到微服务是一种架构风格,即将单体应用划分为若干个小型的服务单元,微服务之间通过 Http
协议来进行资源访问与操作。
微服务的优点:
-
服务独立部署:每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合度低。
-
服务的快速启动:拆分之后服务启动的速度肯定会比单体应用快。
-
适合敏捷开发。
-
职责专一。
-
代码可复用。
Spring Cloud
Spring Cloud
是一系列框架的集合,它并不是一个具体的框架,而是 Spring
官方将很多可适合于微服务架构的框架收录并将其改为 Spring Boot
风格的框架。所以说,Spring Cloud
是依赖于 Spring Boot
的。
常用的 Spring Cloud
模块:
-
Eureka
—— 服务注册中心,用于服务管理。 -
Ribbon
—— 基于客户端的负载均衡组件。 -
Hystrix
—— 容错框架,能够防止服务的雪崩效应。 -
Feign
—— 通过HTTP
调用远程服务。 -
Zuul
—— 网关,提供路由转发、请求过滤等功能。 -
Config
—— 分布式配置管理。 -
Sleuth
—— 服务跟踪。 -
Bus
—— 消息总线。
本系列讨论的所有微服务技术都是基于 Spring Cloud 的。