一、前言:
本博客中所有的概念,小编都尽可能转换成了自己的理解,精简了概念!尽可能精简的来表达!在知道啦Spring Cloud和Spring Boot之间的关系之后,我们就来学习下Spring Cloud!
再强调一遍两者间关系——Spring Boot是开发单个微服务的框架,Spring Cloud是管理运行的微服务之间的架构。 SpringBoot可以离开SpringCloud独立开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。
二、正文
1、Spring Cloud看不懂是为什么?
查阅资料就是看不懂,为什么查到的所有资料都会很简单粗暴的直接从服务治理Spring Cloud Eureka、客户端负载均衡Spring Cloud Ribbon、服务器容错保护SpringCLoud Hystrix等开始,你们是不是有点不理解为什么要直接上来就介绍这些?
下面我就来讲讲这个,接下来从服务化架构演进的角度来看看
2、从使用nginx说起?
最初的服务化解决方案是给提供相同服务提供一个统一的域名,然后服务调用者向这个域名发送HTTP请求,由Nginx负责请求的分发和跳转。(补充知识:服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的业务,而微服务要再这个基础上更彻底的去耦合)
这种架构存在很多问题:
1、Nginx作为中间层,在配置文件中耦合了服务调用的逻辑,这削弱了微服务的完整性,也使得Nginx在一定程度上编程了一个重量级的ESB;2、服务的信息分赛在各个系统,无法统一管理和维护,每一次的服务调用都是一次尝试,服务消费者并不知道有哪些实例在给他们提供服务;3、无法只管的看到服务提供者和服务消费者当前的运行状况和通信频率;4、消费者的失败重发,复杂均衡等都没有统一策略,这加大了开发每个服务的难度,不利于快速演化
为了解决上面这些问题,我们可以基于Dubbo实现微服务,也可以基于Spring Cloud实现微服务!
3、结合微服务的诉求,把Spring Cloud与DUBBO进行一番对比:?
微服务需要的功能 | Dubbo | Spring Cloud |
---|---|---|
服务注册和发现 | Zookeeper | Eureka |
服务调用方式 | RPC | RESTful API |
断路器 | 有 | 有 |
负载均衡 | 有 | 有 |
服务路由和过滤 | 有 | 有 |
分布式配置 | 无 | 有 |
分布式锁 | 无 | 计划开发 |
集群选主 | 无 | 有 |
分布式消息 | 无 | 有 |
三、小结
看完这个表格,你不需要懂,但你会发现这些让你爱懵的简单粗暴的服务注册和发现,服务调用方式,断路器,复杂均衡等并不是Spring Cloud特有的,所以不应该成为你学习Spring Cloud的阻碍,那么接下来就是去研究为什么微服务需要这些功能?然后去学习Spring Cloud就好啦,只要你心理不再害怕,学习 Spring Cloud 就顺风顺水了,加油ヾ(◍°∇°◍)ノ゙~