内容纲要
常见的分布式技术及其相关信息:
技术名称 | 为什么用 | 什么时候用 | 注意点 | 官方文档链接 |
---|---|---|---|---|
Spring Cloud Eureka | 用于服务发现。它帮助微服务找到其他服务的位置。 | 在设计微服务架构时,需要一个服务发现机制。 | 在集群部署时,需要配置多个Eureka服务器以实现高可用性。 | Eureka文档 |
Spring Cloud Zuul | 用于API网关。它处理所有微服务的所有请求和响应。 | 当你需要一个单一入口点来路由和过滤微服务的请求时。 | Zuul 1 是阻塞式的,而Zuul 2 是非阻塞式的,选择时需要注意。 | Zuul文档 |
Spring Cloud Feign | 用于声明式的 HTTP 客户端。它简化了 HTTP 请求的写法。 | 当你需要从一个微服务调用另一个微服务时。 | Feign 默认使用了 Ribbon,所以可以很好地与 Eureka 结合使用。 | Feign文档 |
Spring Cloud Hystrix | 用于服务容错。它提供了熔断机制来防止服务雪崩。 | 当你的微服务需要调用其他可能出现故障的微服务时。 | 需要适当地配置熔断规则,以防止过早或过晚的熔断。 | Hystrix文档 |
Spring Cloud Config | 用于分布式配置管理。它帮助管理微服务的配置。 | 当你的微服务需要外部化配置时。 | 需要保护配置服务器,因为它可能包含敏感信息。 | Config文档 |
Spring Cloud Bus | 用于消息总线。它可以广播配置变更或其他管理指令。 | 当你需要在微服务之间广播状态变更或配置更新时。 | 在网络分区的情况下,需要处理消息的一致性问题。 | Bus文档 |
Spring Cloud Stream | 用于构建消息驱动的微服务应用。它提供了与消息系统的连接和消息消费模型。 | 当你需要构建事件驱动的微服务应用时。 | 需要选择合适的消息中间件,如RabbitMQ,Kafka等。 | Stream文档 |
Spring Cloud Sleuth | 用于微服务的日志收集和分布式跟踪。 | 当你需要追踪处理一个请求的整个路径时。 | 需要配合其他日志收集和展示工具使用,如Zipkin, ELK等。 | Sleuth文档 |
Spring Cloud Ribbon | 用于客户端负载均衡。它可以帮助请求自动选择合适的服务实例。 | 当你需要在多个服务实例之间分发请求时。 | Ribbon 默认与Eureka集成,但也可以单独使用或与其他服务发现组件一起使用。 | Ribbon文档 |
Spring Cloud Gateway | 用于API网关。它提供了路由、限流、熔断等功能。 | 当你需要一个功能丰富、非阻塞的API网关时。 | 与Zuul相比,Gateway提供了更多的功能,并且是非阻塞的,但也相对复杂一些。 | Gateway文档 |
Apache Kafka | 用于实时数据流处理。它能处理大量的实时消息。 | 当你需要处理大量的实时数据流时。 | Kafka需要较多的资源和配置,适合大规模的数据处理。 | Kafka文档 |
Apache Zookeeper | 用于服务发现和配置管理。它可以帮助微服务找到其他服务和管理配置。 | 当你需要一个稳定的服务发现和配置管理系统时。 | Zookeeper 在处理大量写操作时性能可能会下降。 | Zookeeper文档 |
这些都是用于建立分布式系统的一些常见技术,可以根据具体需求和系统的规模选择。