我是「猿码天地」,一个热爱技术、热爱编程的IT猿。技术是开源的,知识是共享的!
写作是对自己学习的总结和记录,如果您对 Java、分布式、微服务、中间件、Spring Boot、Spring Cloud等技术感兴趣,可以关注我的动态,我们一起学习,一起成长!
用知识改变命运,让家人过上更好的生活,互联网人一家亲!
——猿人《猿码天地》
01 Spring Cloud是什么?
Spring Cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务注册与发现、负载均衡、声明式调用、熔断器、路由网关、配置中心、服务链路追踪、微服务监控等,都可以用 spring boot 的开发风格做到一键启动和部署。
02 Spring Cloud 的核心组件有哪些?
1、服务注册与发现 Eureka、Zookeeper组件
2、负载均衡 Ribbon组件
3、声明式调用 Feign组件
4、熔断器 Hystrix组件
5、路由网关组件 Spring Cloud Zuul组件
6、 配置中心 Spring Cloud Config、Diamond(阿里)、Disconf(百度)、Apollo(携程)组件
7、服务链路追踪 Spring Cloud Sleuth组件
8、微服务监控 Spring Boot Admin组件
03 Spring Cloud 和 Dubbo 比较
SpringCloud 和 Dubbo 都是现在主流的微服务架构
SpringCloud 是 Apache 旗下的 Spring 体系下的微服务解决方案
Dubbo 是阿里系的分布式服务治理框架
从技术维度上讲
Spring Cloud 远远超过 Dubbo,Dubbo 本身只是实现了服务治理功能, 对于SpringCloud 现在以及有 21 个子项目以后还会更多。
但是由于RPC以及注册中心元数据等原因,在技术选型的时候我们只能二者选其一,所以我们常常用它俩来对比。
服务的调用方式 Dubbo 使用的是 RPC 远程调用,而 SpringCloud 使用的是 Rest API,其实更符合微服务官方的定义。
服务的注册中心来看,Dubbo 使用了第三方的 ZooKeeper 作为其底层的注册中心,实现服务的注册和发现,SpringCloud 使用 Spring Cloud Netflix Eureka 实现注册中心,当然 SpringCloud 也可以使用 ZooKeeper 实现,但一般我们不会这样做。
服务网关,Dubbo 并没有本身的实现,只能通过其他第三方技术的整合,而 SpringCloud 有 Zuul 路由网关,作为路由服务器,进行消费者的请求分发,SpringCloud 还支持断路器,与git完美集成分布式配置文件支持版本控制等。
从技术选型上讲
目前国内的分布式系统选型主要还是 D