spring cloud微服务快速教程之(二)服务注册与发现 eureka

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-07 11:19:32

0、为什么需要eureka

  当我们从当体系统拆分为多个独立服务项目之后,如果aaa.com/uer、aaa.com/order;;相互之间调用,如果只是一个服务一个实例,那还可以直接通过固定地址(如http://111.111.11.1:7119/user/getuser/1)直接访问;

  但是,我们一个服务有很多个实例,这样你就不能写死地址了吧,多个之间你得挑出一个来调用吧(负载均衡),还有多个实例有的停止了,有的新加入了,这你得心跳检测健康监测吧等等;这些,都是从单体系统拆分后面临的实际问题,你可以自己一个一个去克服和实现;当遇到了spring cloud,哈哈,你有福了,spring cloud eureka正是为你解决以上问题而来;

  eureka服务发现组件包含eureka server(服务注册中心)和eureka client(服务注册与发现);本身通过心跳检测(默认30S)进行服务的注册与发现与健康检查

一、eureka集成

1、eureka server

1.1、添加依赖:

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

1.2、配置文件增加配置

eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enable-self-preservation: false


spring:
  application:
    name: eurka-server

1.3、启动类增加 @EnableEurekaServer 注解

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

一个eureka server就完成了,启动运行

 

 

还没有服务实例,因为我们还没添加,好,下面我们来添加eureka client

2、eureka client

2.1、添加依赖

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

2.2、修改配置文件

server:
  port: 8763

spring:
  application:
    name: user

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

2.3、启动类中增加 @EnableEurekaClient 注解

@SpringBootApplication
@EnableEurekaClient
@EnableHystrixDashboard
public class application
{
    public  static void main(String[] args)
    {
        SpringApplication.run(application.class);
    }
}

完成

我们在controller里面添加一个方法进行测试

@RestController
@RequestMapping("/user")
public class UserController
{
    @Autowired
    private ServiceUtil serviceUtil;

    @RequestMapping("/hello")
    public  String Hello()
    {
        return  ("hello world" +serviceUtil.getPort());
    }
}

3、测试

先启动eureka server 项目,再启动client项目,我们可以看到,client的服务实例已经注册进来了

 

 再切换端口增加一个实例,可以看到,也注册进来了,这样就可以通过eureka管理多个服务的多个实例以及相互之间调用的问题了

 

 

GIT源码后面再放出

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!