本文使用的是jdk17,mysql8。
以下用两个服务做演示:
订单服务:提供订单ID,获取订单详细信息。
商品服务:提供商品ID,获取商品详细信息。
对于上篇http://t.csdnimg.cn/vcWpo 订单服务调用商品服务的时候,使用Spring提供的RestTemplate远程调用时,url部分是写死的,这是很不方便我们后续的操作。针对这个问题,这里使用Eureka来解决。
注册中心
注册中心是一种用于管理和协调微服务架构中各个服务实例的组件。它充当了服务注册和发现的中心,使得微服务能够相互发现和通信。
服务注册:每个微服务启动时,会向注册中心注册自己的网络地址、服务名称和其他相关信息。注册中心将这些信息保存起来,以便其他服务可以查询。
服务发现:当一个微服务需要与其他服务进行通信时,它可以向注册中心查询目标服务的信息,如网络地址、可用实例等。这样,服务之间就可以通过注册中心来建立连接,实现相互通信。
注册中心主要有三种角色:
服务提供者(Server):一次业务中,给其他微服务提供接口使用。
服务消费者(Client): 一次业务中,调用其他微服务的接口。
服务注册中心(Registry): 用来保存服务提供者的信息,并且当服务提供者发生变化时,它也同步更新。服务与注册中心使用一定的通信机制,如果服务与注册中心长时间没有通信,那么注册中心就会注销服务。
常见的注册中心:
ZooKeeper:ZooKeeper是一种开源的分布式协调服务,在微服务架构中常被用作注册中心。它具有高可用、一致性和可靠性等特点。(CP保证一致性)节点分为Leader、Follower和Observer,当Leader出现故障时,需要选举出Leader,此时服务不可用。
Eureka:Eureka是Netflix开源的注册中心,具有简单易用、高可用、自我保护等特点,常被用于构建基于Spring Cloud的微服务架构。(AP保证高可用)每个节点都是均等的。
Nacos:Nacos是阿里巴巴开源的一款服务发现和配置管理平台,也可以作为微服务架构中的注册中心。它提供了服务注册、服务发现、动态配置管理和服务治理等功能,对于构建和管理云原生应用非常有用。(CP或AP,默认AP)
CAP理论
CAP理论由下面三部分构成:
一致性(Consistency):多个节点访问数据时,获得的数据都是相同的数据。如果无法保证数据是相同的,就不返回任何数据。
可用性(Availability):每个请求都有响应。可能某个节点返回的结果不对,但是也要返回。
分区容错性(Partition Tolerance):网络分区运行,但是依然可以对外提供服务。如果节点之间出现了故障,也能进行服务。
根据CAP定理,分布式系统只能满足其中两个属性,无法同时满足三个。这是因为在面对网络分区(节点之间无法相互通信)的情况下,系统必须在一致性和可用性之间进行权衡选择。而且在分布式系统中,分区容错性必须考虑,一旦发生错误,导致