什么是注册中心
- 当服务启动时,将服务信息服务名称/IP/端口写入注册中心.
- 注册中心接收服务端信息时保存服务信息,并且维护服务列表数据
- 当服务消费者启动时会通过IP:端口(注册中心)远程链接注册中心.
获取服务列表信息.缓存到本地
- 当消费者调用服务时,查找缓存到本地的服务列表信息.之后通过负载均衡机制挑选其中一个服务进行访问.
- 当后台服务器宕机时,由于注册中心有心跳检测机制.所以可以发现某台服务器宕机.之后更新自己的服务列表信息.之后广播给全部消费者.
- 当消费者获取服务列表的通知时,最终更新本地的服务列表数据.
注册中心的主要功能包括:
-
注册:应用程序组件可以将自己的信息注册到注册中心,注册包括提供的服务名称、IP地址、端口号等。
-
查询:应用程序组件可以通过查询注册中心来获取其他组件的信息,例如根据服务名称获取对应的IP地址和端口号。
-
发现:应用程序组件可以通过注册中心自动发现其他组件,而不需要硬编码它们的位置信息。
-
负载均衡:注册中心可以维护多个相同服务的实例,通过负载均衡算法将请求分发到不同实例上,实现负载均衡。
-
故障检测与恢复:注册中心可以检测应用程序组件的健康状态,当某个组件发生故障时,可以及时地从注册中心中移除该实例,以确保其他组件不会调用到不可用的服务。
常见的Java注册中心包括ZooKeeper、Eureka、Consul等。在微服务架构中,注册中心是一个重要的基础设施,它可以提供服务发现、负载均衡和故障恢复等关键功能,帮助构建可扩展和弹性的应用程序。
Zookeeper注册中心
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
总结:zookeeper是服务的协调调度服务器!!!
Eureka注册中心
Eureka注册中心是Netflix开源的一个服务注册与发现的组件,用于建立和维护服务之间的依赖关系。它可以帮助微服务架构中的各个服务进行自动化注册和发现,实现服务之间的通信。Eureka注册中心通过维护一个服务的注册表来追踪可用的服务实例。当一个服务启动时,它会注册自己的实例到Eureka注册中心,当一个服务需要调用其他服务时,它可以从Eureka注册中心获取可用的服务实例列表来进行调用。 Eureka注册中心还具有负载均衡和故障恢复的功能,它可以自动检测到不可用的服务实例并从注册表中移除,同时还可以自动感知新添加的服务实例。Eureka注册中心采用了客户端-服务器架构,注册中心作为服务端,服务实例作为客户端进行注册和发现。
Nacos注册中心
Nacos是一个开源的动态服务发现、配置和管理平台。它提供了注册中心的功能,可以帮助应用程序、微服务和云原生平台实现服务注册和发现。
使用Nacos注册中心,您可以将应用程序或微服务注册到Nacos中心,然后其他服务可以通过Nacos来发现并与之进行交互。
Nacos注册中心具有以下特点:
-
动态注册和发现:当有新的服务加入或退出时,Nacos能够动态地将其注册或注销,而不需要手动配置。
-
健康检查:Nacos提供了健康检查功能,可以定期检查注册的服务是否可用,并自动更新服务的可用状态。
-
多种服务发现方式:Nacos支持多种服务发现方式,包括DNS、HTTP和RPC等。
-
配置管理:Nacos不仅可以用作注册中心,还可以用来管理配置信息,可以实现动态配置更新和推送。
-
高可用和可靠性:Nacos支持集群部署,提供了高可用和可靠性的服务注册和发现功能。
总结
-
定义:注册中心是一个集中的服务目录,它允许应用程序注册和发现服务。它充当了服务提供者和服务消费者之间的中介。
-
功能:注册中心提供了以下功能:
- 服务注册:服务提供者将自己的服务注册到注册中心中,以便服务消费者可以发现并使用它们。
- 服务发现:服务消费者从注册中心中获取服务提供者的信息,并与之建立通信。
- 服务路由:注册中心可以根据负载均衡策略将请求路由到适当的服务提供者。
- 服务监控:注册中心可以监控服务的状态和健康状况,以便及时发现和处理故障。
-
常见的Java注册中心:
- ZooKeeper:ZooKeeper是一个高性能的分布式协调服务,可以用作Java应用程序中的注册中心。它提供了强一致性和可靠性,并支持动态注册和发现服务。
- Consul:Consul是一个分布式服务发现和配置管理系统,可以用作Java应用程序的注册中心。它提供了服务注册和发现的功能,同时还支持健康检查和故障恢复。
- Eureka:Eureka是Netflix开源的一个服务发现框架,可以作为Java应用程序的注册中心。它支持高可用性和扩展性,并提供了自动注册和发现服务的功能。
-
使用注册中心的好处:
- 服务解耦:通过注册中心,服务提供者和服务消费者之间解耦,可以独立发布和更新。
- 动态扩展:注册中心可以动态地添加和移除服务实例,以应对不同的负载需求。
- 容错和故障恢复:注册中心可以监控服务的健康状态,并自动从不可用的服务提供者中剔除,以保证系统的可用性和稳定性。
- 负载均衡:注册中心可以根据负载均衡策略将请求分发到不同的服务实例,以平衡系统的负载。