首先我们需要知道为什么要选择使用SpringCloud技术;那是因为 SpringCloud 的出现,对微服务技术提供了非常大的帮助;SpringCloud 提供了一套完整的微服务解决方案,不像其他的框架只是解决了微服务中的某个问题。
服务治理:阿里巴巴开源的 Dubbo 和当当网在其基础上扩展的 Dubbox、Eureka、Apache 的 Consul 等;
分布式配置中心:百度的 disconf、Netflix 的 Archaius、360 的 QConf、SpringCloud、携程的阿波罗等;
分布式任务:xxl-job、elastic-job、springcloud 的 task 等;
服务跟踪:京东的 hyra、springcloud 的 sleuth 等;
一、SpringCloud 简介
SpringCloud 是基于 SpringBoot 基础之上开发的微服务框架,SpringCloud 是一套目前非常完整的微服务解决方案框架;其内容包含服务治理、注册中心、配置管理、断路器、智能路由、微代理、控制总线、全局锁、分布式会话等。
SpringCloud 包含众多的子项目
SpringCloud config 分布式配置中心
SpringCloud netflix 核心组件
Eureka:服务治理 注册中心
Hystrix:服务保护框架
Ribbon:客户端负载均衡器
Feign:基于 ribbon 和 hystrix 的声明式服务调用组件
Zuul:网关组件,提供智能路由、访问过滤等功能
1. Spring Cloud 官方中文教程:https://www.springcloud.cc/spring-cloud-greenwich.html
2. Spring Cloud 特点:
- 约定优于配置;
- 开箱即用、快速启动;
- 适用于各种环境;
- 轻量级的组件;
- 组件的支持很丰富,功能齐全;
- 选型中立;
二、服务治理
在传统的 RPC 远程调用中,服务与服务之间的依赖关系管理起来比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系;这样可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
三、服务注册与发现
在服务注册于发现中,有一个注册中心,当服务器启动的时候会把当前自己服务器的信息 (如服务地址通讯地址等以别名的方式注册到注册中心上;另一方 (消费者 或 提供者) ,以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地 RPC 调用远程。
在任何的 RPC 框架中,都会有一个注册中心;注册中心是用于存放服务地址相关信息 (接口地址) 的。
SpringCloud 中支持以下三种注册中心: Eureka、Consul (go语言编写的)、Zookeeper;
Dubbo 支持两种注册中心:Redis 和 zookeeper;