其他分享
首页 > 其他分享> > Eureka注册中心

Eureka注册中心

作者:互联网

服务远程调用问题

    public Order queryById(Long id){
        Order order = orderMapper.findById(id);
        String url = "http://localhost:8081/user/"+order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        return order;
    }

服务提供者:一次业务处理过程中,被其它微服务调用的服务(提供接口给其它微服务)

服务消费者:一次业务处理过程中,调用其它微服务的服务(调用其它微服务提供的接口)

Eureka注册中心

Eureka工作流程

1、每一个微服务(服务的提供者和消费者)启动时,就必须向eureka-server中注册自身服务信息

2、当服务消费者需要服务提供者时,会去eureka-server中拉起服务提供者(服务提供者状态都是良好的)的信息

3、服务消费者可以通过负载均衡获取一个服务提供者的信息,远程调用即可

 

 微服务会定期向eureka-server发送心跳,如果不发送,eureka-server就会移除其服务信息

Eureka作用

搭建Eureka

在Eureka架构中,微服务角色有两类:

搭建EurekaServer

创建项目,添加eureka服务端依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
View Code

编写启动类,开启EurekaServer(@EnableEurekaServer)

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}
View Code

添加application.yml文件

server:
  port: 10081
  
#eureka服务注册
spring:
  application:
    name: eurekaserver #eureka服务名
eureka:
  client:
    service-url:  #eureka地址信息
      defaultZone: http://localhost:10081/eureka

eureka也是个微服务,并把自己也注册到eureka,可以实现eureka集群

defaultZone可以有多个eureka地址信息,中间以逗号隔开

注意:端口号为10080时,会失败,不知到为什么

微服务注册

在微服务项目中添加eureka客户端依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

配置注册信息(微服务名、eureka地址)

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://192.168.223.129:3306/cloud-user?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  application:
    name: userservice
mybatis:
  type-aliases-package: com.marw.pojo
  configuration:
    map-underscore-to-camel-case: true

eureka:
  client:
    service-url:
      defaultZone: http://localhost:10081/eureka/
View Code

 

将user-service多次启动,模拟多实例部署,为了避免端口冲突,需要修改端口号

 

 

-DServer.port=8083

 

 

服务发现

修改访问的url路径,用注册到eureka的服务名替换ip和端口

String url = "http://userservice/user/"+order.getUserId();

在实例化RestTemplate方法上添加负载均衡注解(@LoadBalanced)

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

测试效果:

分别访问 http://localhost:8082/order/101 、http://localhost:8082/order/102

 

 

标签:服务,中心,url,server,eureka,EurekaServer,注册,服务提供者,Eureka
来源: https://www.cnblogs.com/WarBlog/p/15393521.html