1、明确概念
在我们学习java的过程中,都或多或少的听说过Spring Cloud这个术语,知道它是有关微服务,知道它的学习是在Spring Boot之后。
那Spring Cloud到底是什么?是一种技术吗?
其实不然,Spring Cloud是一套生态系统,是一种分布式的架构。那怎么理解这个生态系统呢?
你可以理解成是一个公司,当公司发展初期,公司员工一个顶俩,前台可以是业务员,也可以是后勤,还可以是大老板;当公司发展到一定的规模,公司的人也就越来越多,前台有专门的小姐姐把守,后勤也有了专人处理,老板就只需要上下班时巡视一下。后来的这种状态,我们就简单的它理解成是一种生态。
Java基础学完,学Java进阶;Java进阶学完,学数据库;数据库学完,学前端;前端学完学SSM框架;SSM框架学完,学Spring Boot;Spring Boot学完,学Spring Cloud…
SSM框架学完就已经能看开发一个网站了
在学习开发技术的初期,我们的目标只是如何进行开发(公司发展初期,目标是如何让公司经行运作),开发技术不断地学习,且越来越多(公司的员工到达一定地规模),接下来就是要将技术合理的运用在实际工作中(公司的员工准备工作),Spring Cloud给出了一种工作开发的行动指南(老板命令每个人干什么工作)。当然,这里的开发方式指的是微服务开发。
可能可以又有人要问了,什么是微服务?
简单的一句理解就是:当我们的项目越来越大,我们就需要将项目合理的模块化,以此让专业的人,做专业的事。
如果对微服务还是不清楚,可以参考博客:传送门
有可能你对Spring Cloud的职责、任务还是没有弄清楚,那么希望下面的这张图对你有帮助(来自Spring的官网)。这张图就是你们上班的工作图。张三做ConfigServer,李四做ServiceRegistry,王五做API Gateway。老板就是Spring Cloud。
2、Spring Cloud入门
既然你对Spring Cloud已经有了一个初步的认识,那么我们就要进行下一步了。
面对同一项工作,老板总是拥有着多种的工作方案,所以Spring Cloud的方案也就不止一种。
比如:Spring Cloud NetFlix、Apache Dubbo zookeeper、SpringCloud Alibaba等等
这些工作方案主要是围绕时间、经济、成本进行展开,多以Spring Cloud也有他的四个基本问题,
分布式架构会遇到的四个核心问题?
- 服务众多,客户端该如何去访问?
- 服务众多,服务之间如何进行通信?
- 服务众多,如何治理呢?
- 服务众多,服务出了故障怎么处理?
3、Spring Cloud技术入门
正文开始了,以下的关于技术的讲解,是基于Spring Cloud Netflix的解决方案。
问题一:服务众多,客户端该如何去访问?
Spring Cloud Netflix使用Zuul进行API网关的配置
问题二:服务众多,服务之间如何进行通信?
Spring Cloud Netflix使用Feign或Ribbon进行通信
问题三:服务众多,如何治理呢?
Spring Cloud Netflix使用Eureka进行服务的注册与发现
问题四:服务众多,服务出了故障怎么处理?
Spring Cloud Netflix使用Hystrix进行服务的熔断或降级处理
以上的四种技术,就好比四个专业的人,他们在整个项目的分工中,做着自己专业的事情。当然一项工作的完成不可能只有这四个人(Spring Cloud的这四种技术),还有很多其他的人打配合(其他技术),这里只是列举了解决这四个问题的技术。有时候你也会听到一个名字叫Spring Cloud全家桶,这说的就是Spring Cloud下的这个大集体。
4、技术串讲
当用户访问项目的某个端口时,项目内部会进行一个地址的转化,此时出现的技术叫做Zuul(访问路径的转换);当很多访问进入到项目的内部以后,对于请求,此时出现的技术叫做Ribbon或Feign(负载均衡转化用户访问的压力);我们后台编写的每一个程序项目的子模块都会注册在一个大容器种,方便进行集中的管理,此时出现的技术叫做Eureka(类似于Dubbo的注册中心);当访问的服务器由于某些原因,导致无法访问时,此时可以使用Hystrix技术(服务熔断、服务降级);由于是微服务开发,远程、多人协同开发就显得十分必要了,我们就可以在Git的帮助下,此时出现的技术叫做SpringCloud config(Git加持)。
这些技术其实官网有一个专业的词语叫做组件。
关于更多的Spring Cloud以及java部分的知识学习,可以查看我之前的博客——自学知识笔记专栏下
希望阅读此文对你有帮助