微服务调用关系
提供者与消费者
-
服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)
-
服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)
提供者与消费者角色是相对的
eureka 在微服务中的角色和作用:
SpringCloud 将eureka集成在其子项目 spring-cloud-netflix 中,实现 SpringCloud 的服务发现功能。其实,Eureka 就是一个专门用于服务发现的服务器,一些服务注册到该服务器,而另一 些服务通过该服务器查找其所要调用执行的服务。可以充当服务发现服务器的组件很多,例 如 Zookeeper、Consul 等。
eureka工作原理
1、服务提供者注册服务信息到注册中心,eureka保存这些注册信息。供消费者根据服务名称从eureka拉取提供者信息
2、服务调用者到Eureka注册中心拉取服务信息
3、负载均衡从拉取到的服务列表中选中可用的服务
4、远程调用
服务提供者会每隔30秒向eureka Server发送心跳请求,报告健康状态,eureka会更新记录服务列表信息,心跳不正常的服务会被剔除。
在Eureka架构中的服务端与客户端
1、EurekaServer服务端,注册中心
-
记录服务信息
-
心跳监控
2、EurekaClient 客户端
-
Provider: 服务提供者。注册服务信息到EurekaServer,定时发送心跳。
-
consumer:服务消费者。根据服务名称从EurekaServer中拉取服务列表,发起远程调用。
搭建EurekaServer
1、引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2、添加@EnableEurekaServer注解
@EnableEurekaServer //表示是EureakaServer
@SpringBootApplication
public class EurekaServer01Application {
public static void main(String[] args) {
SpringApplication.run(EurekaServer01Application.class, args);
}
}
3、在application.yml中配置eureka地址
eureka:
instance:
#指定Eureka主机 localhost 表示本机
hostname: localhost
client:
#是否注册到Eurka Server中 在这里表示是否需要自己注册自己
register-with-eureka: true
service-url:
#注册中心EurekaSever的地址,如果是集群的话,可以在defaulZone 配置为集群中其他的机器,多个的话 用“,”隔开
defaultZone: <http://localhost:18081/eureka/>
服务注册
1、 引入eureka- client依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、在application.yml中配置eureka地址
eureka:
instance:
hostname: localhost
client:
service-url:
defaultZone: <http://localhost:18081/eureka/>
服务发现
1、引入eureka-client依赖
2、在application.yml中配置eureka地址
3、给RestTemplate 添加@LoadBalanced(负载均衡)注解
在服务启动项中的RestTemplate添加负载均衡注解:
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
调用服务的时候IP端口使用eureka注册的名称
4、用服务提供者的服务名称远程调用
关注微信公众号「BaseJ」,收看更多专题内容