SpringCloud微服务学习(一)
一、微服务架构的四个核心问题?
1、服务很多、客户端该怎么访问?
2、这么多服务?服务之间如何通信?
3、这么多服务如何治理?
4、服务挂了该怎么办?
二、解决方案
1、Spring Cloud NetFlix 一站式解决方案:
api网关:zuul组件
Feign --- HttpClient --- http通信方式,同步阻塞
服务注册与发现:Eureka
熔断机制:Hystrix
2、Apach Dubbo Zookeeper 半自动,需要整合别人的:
API:没有,找第三方组件,或者自己实现
Dubbo
Zookeeper
没有,借助Hystrix
Dubbo是一个高性能的基于java开发的RPC框架
3、Spring Cloud Alibaba 一站式解决方案,更简单:
新概念、服务网格:下一代微服务解决方案server mesh
三、SpringBoot 和 Spring Cloud的关系
1、SpringBoot专注于快速方便的开发单个个体微服务
2、SpringCloud是关注全局的微服务协调整理治理框架,它将Springboot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等集成服务;
3、Springboot可以离开Springcloud独立使用开发项目、但是SpringCloud离不开SpringBoot,属于依赖关系
4、SpringBoot专注于快速、方便的开发单个个体的微服务,SpringCloud专注于全局微服务治理框架
四、Dubbo 和 Spring Cloud的对比
社区活跃度:
https://github.com/dubbo
https://github.com/spring-cloud
对比结果:
最大区别:SpringCloud摒弃掉Dubbo的RPC通信,采用基于HTTP的REST方式
严格来说,这两种方式各有优劣,虽然从一定程度上来说,后者牺牲了服务调用的性能、但是避免了RPC调用的带来的问题;而且REST相比于RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖、这在强调快速演化的微服务环境下,显得更加合适;
参考书:
1、https://www.springcloud.cc/spring-cloud-netflix.html
2、中文API文档:https://www.springcloud.cc/spring-cloud-dalston.html
3、SpringCloud中国社区:http://springcloud.cn/
4、SpringCloud中文网:https://www.springcloud.cc/