SpringCloud介绍
是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署,Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂,已部署和易维护的分布式系统开发工具包。
SpringCloud的架构
Spring Cloud的本质是在Spring Boot的基础上,增加了一堆微服务相关的规范,并对应用上下文(Application Context)进行了功能增强,既然Spring Cloud是规范,那么就需要去实现,目前Spring Cloud规范已有Spring官方,Spring Cloud Netflix,Spring Cloud Alibaba 等实现,通过组件化的方式,Spring Cloud将这些实现整合到一起构成全家桶式的微服务技术栈。
Spring Cloud Netflix组件
组件名称 | 作用 |
---|---|
Eureka | 服务注册中心 |
Ribbon | 客户端负载均衡 |
Feign | 声明式服务调用 |
Hystrix | 客户端容错保护 |
Zuul | API服务网关 |
Spring Cloud Alibaba组件
组件名称 | 作用 |
---|---|
Nacos | 服务注册中心 |
Sentinel | 客户端容错保护 |
Spring Cloud原生及其他组件
组件 | 作用 |
---|---|
Consul | 服务注册中心 |
Config | 分布式配置中心 |
Gateway | API服务网关 |
Sleuth/Zipkin | 分布式链路追踪 |
注册中心
注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就在这里找到服务的地址,然后进行调用。
主要作用:
在微服务架构中起到了协调者的作用
1.服务发现:
*******服务注册/反注册:保存服务提供者和服务调用者的信息
*******服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
*******服务路由(可选):具有筛选整合服务提供者的能力
2.服务配置:
*******配置订阅:服务提供者和服务调用者订阅微服务相关的配置
*******配置下发:主动将配置推送给服务提供者和服务调用者
3.服务健康检测
*******检测服务提供者的健康情况
流程:
常见的注册中心
Zookeeper
zookeeper它是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说zookeeper=文件系统+监听通知机制。
Eureka
Eureka是在java语言上,基于RESTful Api开发的服务注册与发现的组件,SpringCloud Netflix中的重要组件。
Consul
Consul是由HashiCorp基于Go语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,采用Raft算法保证服务的一致性,且支持健康检查。
Nacos
Nacos是一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。简单来说,Nacos就是注册中心+配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。Nacos还是SpringCloud Alibaba组件之一,负责服务注册与发现。
对比几个注册中心
组件名 | 语言 | CAP | 一致性算法 | 服务健康检查 | 对外暴露接口 |
---|---|---|---|---|---|
Eureka | java | AP | 无 | 可配支持 | HTTP |
Consul | Go | CP | Raft | 支持 | HTTP/DNS |
Zookeeper | java | CP | Paxos | 支持 | 客户端 |
Nacos | java | AP | Raft | 支持 | HTTP |