SpringCloud是什么?
SpringCloud不是一个单独的框架,而是一整套用于构建微服务架构的解决方案。
微服务架构需要解决什么问题?
服务注册与发现
服务注册中心需要存储如下信息:
服务名 -> 服务地址1,服务地址2…
并且,各个服务要定时发送心跳至注册中心;服务失效,各个客户端应该接收到通知,防止访问到无效的服务地址。
客户端负载均衡
当调用一个服务,有多个可用的服务地址,客户端需要根据负载均衡策略,合理选择服务实例。
服务容错
服务1调用服务2,服务2调用服务3。
当服务3阻塞,导致服务2阻塞,然后导致服务1阻塞,错误将在系统中蔓延。
因此需要服务容错机制,在服务调用超时或不可以的情况下,主动返回错误信息而不是无限等待。
服务网关
集中处理一些和具体业务逻辑无关的逻辑,如权限验证。
服务路由,负载均衡。
SpringCloud各组件介绍
| 组件 | 功能 |
|---|---|
| Netflix Eureka | 服务注册与发现 |
| Ribbon | 客户端负载均衡 |
| Hystrix | 服务容错 |
| Zuul | API服务网关 |
| Config | 远程配置中心 |
| Bus | 消息总线,实际上就是结合MQ,实现服务之间消息发布订阅 |
当然这一切基于SpringBoot,各个组件在SpringBoot的基础上添加相应的功能,构成SpringCloud微服务架构中的一个构件。
总结
SpringCloud是一套微服务架构解决方案,关注于快速构建微服务,以及解决微服务架构中会出现的问题。
SpringCloud封装了很多现有的框架组件,而不是从零建造轮子。
如何学习?
个人认为通过简单的例子,了解微服务架构中需要解决什么样的问题,又是如何去解决的,就可以。
Spring的更新实在太快了,使用Spring也就意味着一系列的配置配置配置,把时间花在这些地方是不值得的。
想要快速搭建SpringCloud服务,推荐博文:
https://my.oschina.net/happyBKs/blog/1629043
或者到github上寻找例子:
https://github.com/spring-cloud-samples
注:SpringCloud的版本非常重要,不同版本很可能不兼容,注意搭建过程中版本问题。