微服务之eurka使用

 eurka组成

  1.     eurka服务端,是提供各个模块的使用之间的注册发现的,eurka的默认是将自己的的服务和ip地址也注册到自己的服务中。
  2.     eurka客户端, 是将自己的模块服务注册到注册中心去。

eurka模块之间的调用:各个模块建自己注册到了服务端之间,客户端和服务端之间会有一个通信机制,通过心跳包的方式向服务端发送心跳机制。默认时间是30m一次。如果服务端检测到了链接失败,就会将该模块从注册中心删除。如果是删除的数量超过了85%,有可能是网络延迟的原因,注册中心就不会再将模块删除,是挂起不再提供服称之为无效服务。等待重新连接成功后再把数据发送给调用端,通过配置可以改变他们之间的心跳时间和eurka服务端的自我保护功能。

   1. 注册中心 

       使用注解得方式来确定服务中心(@EnableEurekaServer

package com.kusen.eurker.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * 注册中心
 * 配置eurker中心
 * 开启服务注册中心
 */
@EnableEurekaServer
@SpringBootApplication
public class ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }

}
server.port: 8761
eureka:
  instance:
    hostname: eureka-server  # eureka实例的主机名
  client:
    register-with-eureka: false #是否将自己注册到注册中心去 默认是为true
    fetch-registry: false #是从注册中心获取自己的信息, 默认是true
    service-url:
      defaultZone: http://localhost:8761/eureka/  #定义服务中心的地址

  2. 服务提供者

         1. 服务提供者controller(rest风格)的方式来提供服务。

         2.将自己的服务注册到服务中心去

package com.kusen.proveder.controller;

import com.kusen.proveder.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//controller
@RestController
public class TicketController {


    @Autowired
    TicketService ticketService;

    @GetMapping("/ticket")
    public String getTicket(){
        return ticketService.getTicket();
    }
}
package com.kusen.proveder.service;

import org.springframework.stereotype.Service;


/**
 * 将服务注册到服务中心去
 */
@Service
public class TicketService {

    public String getTicket() {
        System.out.println("8002");
        return "《厉害了,我的国》";
    }
}

启动类

package com.kusen.proveder;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 服务的提供者
 */

@SpringBootApplication
public class ProvederApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProvederApplication.class, args);
    }

}

配置文件

spring:
  application:
    name: provider
server:
  port: 8088

  #eureka 的服务注册中心 服务的提供者
eureka:
  instance:
    prefer-ip-address: true # 注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/ #将服务注册到服务中心去

 3. 消费者

    1.需要使用注解类来引用服务(@EnableDiscoveryClient

   2.需要通http的方式来调用服务的方法;调用的方式是http://模块名称或服务的端口/要调用服务端方法名称

package com.kusen.customer.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/buy")
    public String buyTicket(String name){
        String s = restTemplate.getForObject("http://localhost:8088/ticket", String.class);
        return name+"购买了"+s;
    }
}

  启动类

package com.kusen.customer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * 服务的消费者
 */
@EnableDiscoveryClient //开启发现服务功能
@SpringBootApplication
public class CustomerApplication {

    public static void main(String[] args) {
        SpringApplication.run(CustomerApplication.class, args);
    }
    //@LoadBalanced //使用负载均衡机制
    @Bean
    public RestTemplate restTemplate(){//使用spring模板发送http请求获取服务调用者
        return new RestTemplate();
    }
}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>