Spring Cloud 教程

Spring Cloud 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/spring_cloud-service-management.html

Spring Cloud 服务治理


对于微服务的治理而言,核心就是服务的注册和发现。所以选择哪个组件,很大程度上要看它对于服务注册与发现的解决方案。在这个领域,开源架构很多,最常见的是 Zookeeper,但这并不是一个最佳选择。除了服务注册与发现,还有负载均衡、断路容错、服务监控等等。

在分布式系统领域有个著名的 CAP 定理:

  • 一致性(Consistency):一致性主要指的是数据一致性,在分布式系统中的所有数据备份,在同一时刻是否同样的值。
  • 可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
  • 分区容错性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。

Spring Cloud 服务注册和发现

Spring Cloud 的服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息。不仅如此,即使服务提供者的信息发生变化,服务消费者也无须修改配置文件。

服务注册发现组件提供这种能力。在微服务架构中,服务注册发现组件是一个非常关键的组件。

Spring Cloud 的服务注册与发现有很多种选择,如 Eureka、Consul、Zookeeper 等。

Eureka

Eureka 是 Netflix 开源的服务注册发现组件,本身是一个基于 REST 的服务。它包含 Server 和 Client 两部分。Spring Cloud 将它集成在子项目 Spring Cloud Netflix 中,从而实现微服务的注册与发现。

Eureka 的 GitHub : https://github.com/Netflix/eureka

Netflix 是一家在线影片租赁提供商。

Consul

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案。Consul 使用 Go 语言编写,因此具有天然可移植性,安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。

Zookeeper

Zookeeper 也可以作为 Spring Cloud 的服务注册与发现。ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

各组件比较

下面是 Spring Cloud 支持的服务注册发现组件以及特性对比:

Feature\Component euerka Consul Zookeeper etcd
服务健康检查 可配支持 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳
多数据中心 - 支持 - -
KV 存储服务 - 支持 支持 支持
一致性 - raft paxos raft
CAP AP CA CP CP
使用接口(多语言能力) http(sidecar) 支持 http 和 dns 客户端 http/grpc
watch 支持 支持 long polling/大部分增量 全量/支持long polling 支持 支持 long polling
自身监控 metrics metrics - metrics
安全 - acl /https acl https 支持(弱)
spring cloud 集成 已支持 已支持 已支持 已支持
Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发 ...
这里收集了 Spring Cloud 使用中常见的问题及相应的解决方案。 ...
spring cloud zookeeper 默认以 host name 注册到注册中心,如果服务机器之间的 host 域名解析没有打通的话 ...
spring-cloud-dependencies 是一个依赖管理器的 pom 文件,它是对 spring cloud 进行依赖管理。若项目 ...
我们通过 Spring Cloud 开发项目时,本地调试时想要对测试环境的注册中心进行其他依赖服务的订阅,本身当前项目不想注册到 zooke ...