栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第二节:使用Eureka注册发现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第二节:使用Eureka注册发现

1、服务消费者和提供者

提供者:提供服务的一方

消费者:调用服务的一方

一个服务既可以是提供者也可以是消费者。

2、Eureka注册中心 2.1、Eureka的作用

消费者如何获取服务提供者具体信息?

服务提供者启动时向eureka注册自己的信息

eureka保存这些信息

消费者根据服务名称向eureka拉取提供者信息

如果有多个服务提供者,消费者该如何选择?

服务消费者利用负载均衡算法,从服务列表中挑选一个

消费者如何感知服务提供者健康状态?

服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态

eureka会更新记录服务列表信息,心跳不正常会被剔除

消费者就可以拉取到最新的信息

3、EurekaServer搭建 3.1创建模块eureka-server

3.2 添加依赖
    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
    
3.3 添加启动类和配置文件
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
server:
    port: 10086 #服务端口
spring:
    application:
        name: eureka-server #eureka的服务名称
eureka:
    client:
        service-url: #eureaka的地址信息
          defaultZone: http://127.0.0.1:10086/eureka

spring.application.name是eureka作为一个spring项目有自己的名字eureka-server。

eureka.client是当前服务作为一个客户端,把自己也注册到eureka-server上面。如果有多个eureka-server可以互相发现。

3.3 访问

http://localhost:10086/

可以看到eureka-server自己也注册到了eureka中。

4、服务注册到Eureka 4.1 添加依赖和配置
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

注意这里添加的是client

配置添加的和之前一样,作为客户端指定服务端的地址。

eureka:
  client:
    service-url: #eureaka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
4.2 运行

运行后可以看到新加了2个服务。如果没有看到,检查是不是pom添加依赖后没点加载。

我们可以右键启动项,复制一个配置,设置不同的端口和名称,用来启动2次。


5、服务发现

服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡

我们尝试在order-service服务中获取服务列表。

5.1新增http请求配置

这里的@LoadBalanced是为了在一个服务有多个节点的时候,做负载均衡。

@Configuration
public class RestTmplateConfiguration {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
5.2 请求代码
    @Resource
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        Order order = orderMapper.findById(orderId);
        String url = "http://user-service/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        return order;
    }
5.3 启动服务

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号