前奏
上一篇中我们理解了微服务的基本概念 && Eureka-Server集群的搭建. 当然,有了服务注册中心还远远不够,我们还得有服务消费者,这样服务注册才有存在的价值,在Spring-Cloud中我们称消费者为Eureka-Client.好了,让我们愉快的撸起代码~
搭建服务消费者Project
-
创建Spring项目
-
填写maven坐标
-
注意:因为我们是Eureka-Client端,勾选Discovery(词典中语义为:发现,发觉)
-
我们创建好项目之后因为要以web形式运行,所以我们还需要添加spring-boot-web包依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 和Eureka-Server一样,作为Eureka-Client的客户端我们需要在启动类上标注@EnableDiscoveryClient 注解, 标识为Client
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
- 配置Eureka-Client,这里我们Cient的名字起为order(以下配置内容已经在Eureka-Server中说过, 这里不再累赘)
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
server:
port: 8090
spring:
application:
name: order
-
启动项目观察日志, 204表示已经注册:
-
访问注册中心localhost:8761, 发现订单服务已经注册上来
图解注册中心
- 在没有注册中心的时候我们服务A调用服务B需要直接连接Ip去调用或者通过Proxy, 但是我们的服务会不断的扩容 && 缩减或者服务下线(比如图中灰色的服务B),这时候就需要我们手动去扩缩绒或者下线服务
- 有了注册中心之后我们的调用的关系发生了转变, 图中红色箭头,服务B只需要将自己 己注册到服务中心,并且有心跳检测,当服务A需要调用服务B时只需要从注册中心去查找即可, 这样服务B的扩缩容 || 服务下线,注册中心会感知到,这样服务A调用服务B的时候就会只从存活的服务B中查找并且调用
- 当服务A拿到了服务B可用列表之后,就会采用一个负载均衡策略进行查找服务调用,在服务发现中一般有两种机制,1) 客户端发现,Spring-Cloud Ribbon 就是采用客户端发现机制,后续在Spring-Cloud Ribbon文章中会说到 2)服务端发现, 比如我们的代理Proxy, Nginx...
总结
- Eureka-Server && Eureka-Client之间存在心跳检查来观察Eureka-Client是否还存活
- 注册中心Server往往是服务中比较重要的部分, 所以我们需要高可用, 生产尽量两台以上
- Spring-Cloud Eureka 是客户端发现机制, 服务端发现机制有Nginx, Zookeeper等
结尾
好了, Spring Cloud 注册中心我们已经完成,下一节来学习Spring-Cloud Feign