1、Spring Cloud是什么?
Spring Cloud官网:https://spring.io/projects/spring-cloud
- Spring Boot专注于快速方便的开发单个个体微服务
- Spring Cloud是关注全局的微服务协调整理治理框架,它将Spring Boot开发的一个个单体微服务整合并管理起来,为哥哥微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等集成服务。
- Spring Boot可以离开Spring Cloud独立使用,开发项目。但是Spring Cloud离不开 Spring Boot,属于依赖关系。
- Spring Boot专注于快速方便的开发单个个体微服务,Spring Cloud关注全局的服务治理框架
2、Spring Cloud 和 dubbo 技术选型
1、分布式+服务治理dubbo
目前成熟的互联网架构:应用服务化拆分+消息中间件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FviAI1NJ-1608536233516)(F:\Y2课程\Y2课程体系\SpringCloud\img\image-20201214105624901.png)]
2、dubbo 和 Spring Cloud对比
社区活跃度
dubbo:https://github.com/dubbo
Spring Cloud:https://github.com/spring-cloud
结果:
dubbo | Spring | |
---|---|---|
服务注册中心 | Zoo keeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务监控 | dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netflix Hystrix |
服务网关 | 无 | Spring Cloud Netflix Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
最大区别:Spring Cloud抛弃了dubbo的RPC通信,采用的是基于HTTP的REST方式
严格来说,这两种方式各有优劣,虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖值依靠一纸契约,不存在代码级别的强依赖,这里强调快速演化的微服务环境下,显得更加合适。
品牌机和组装机的区别
很明显,Spring Cloud的功能比dubbo更下强大,涵盖了更广,
使用dubbo构建的服务就想组装电脑,各环节我们的自由选择自由度很高!
社区支持与更新力度
dubbo停止了5年左右的更新,在2017.重启了,对于技术发展的新要求,需要由开发者自由拓展和升级。
总结
解决问题不一样:
dubbo的定位是一套RPC框架。
Spring Cloud的目标是微服务架构下的一站式解决方案。
参考网站
- https://springcloud.cc/spring-cloud-netflix.html
- 中文api文档:https://springcloud.cc/spring-cloud-dalston.html
- Spring Cloud中国社区:http://springcloud.cn
- Spring Cloud中文网:https://springcloud.cc
3、常见面试题
- 什么是微服务?
- 微服务之间是如何独立通讯的?
- Spring Cloud 和 dubbo 有哪些区别?
- Spring Boot 和 Spring Cloud,请你谈谈对他们的理解
- 什么是服务熔断?什么是服务降级
- 微服务的优缺点是什么?说下你在项目开发中遇到的坑
- 你所知道的微服务技术栈有哪些?请列举一二
- eureka和zoo keeper都可以提供服务注册与发现的功能,请说说他们两个的区别?