Spring cloud 实现服务注册及发现

    服务注册与发现对于微服务系统来说非常重要。有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务。

  • cloud-eureka-server:eureka注册服务器
  • cloud-simple-service:一个使用mybatis的数据库应用,服务端

  服务注册管理器原理如下图所示:

springcloud nacos服务注册与发现 springcloud实现服务注册和发现_配置文件

所有的服务端及访问服务的客户端都需要连接到注册管理器(eureka服务器)。服务在启动时会自动注册自己到eureka服务器,每一个服务都有一个名字,这个名字会被注册到eureka服务器。使用服务的一方只需要使用该名字加上方法名就可以调用到服务。

  Spring cloud的服务注册及发现,不仅仅只有eureka,还支持Zookeeper和Consul。默认情况下是eureka,spring 封装了eureka,使其非常简单易用,只需要比传统应用增加一行代码就可以使用了,这一行代码就是一个注解。我们按以下步骤实现服务注册和发现功能。

1)首先我们需要创建一个maven 项目(springcloud)作为主容器

springcloud nacos服务注册与发现 springcloud实现服务注册和发现_服务器_02

2)接着我们需要建立eureka服务器

  1.我们的eureka服务器使用idea 的spring Initializr 来创建也可以进入springCloud 的服务地址创建项目https://start.spring.io

   1.1 next 下一步

springcloud nacos服务注册与发现 springcloud实现服务注册和发现_spring_03

创建成功后项目结构是这样,eurake-client跟eurakeserver 创建步骤一样这里就不在操作

springcloud nacos服务注册与发现 springcloud实现服务注册和发现_spring_04

在EurekaServer类中我们加入如下代码:

package com.springcloud;

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

@SpringBootApplication
@EnableEurekaServer
public class EurakeserverApplication {

   public static void main(String[] args) {
      SpringApplication.run(EurakeserverApplication.class, args);
   }
}
可以看到只需要使用@EnableEurekaServer注解就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka Server,让你可以嵌入到应用中直接使用。至于真正的EurekaServer是Netflix公司的开源项目,也是可以单独下载使用的。
在application.yml配置文件中使用如下配置:
server:
  port: 8888

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
至此我们一个简单的EnableEurekaServer注册服务类就完工了

2)接着创建消费者eurake-client上面步骤一致,就不继续解释了直接上代码

 在Eureka-client类中我们加入如下代码:
package com.springcloud;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableEurekaClient
@RestController
public class EurakeClientApplication {

   public static void main(String[] args) {
      SpringApplication.run(EurakeClientApplication.class, args);
   }
   @Value("${server.port}")
   String port;
   @RequestMapping("/")
   public  String home(){
      return "hello world from port " + port;
   }
}
在application.yml配置文件中使用如下配eureka:  client:
service-url:
       defaultZone: http://localhost:8888/eureka/
server:
  port: 9999
spring:
  application:
    name: eurake-client
使用maven打下包就OK了
至此一个简单的服务注册就完成了