服务注册与发现(Eureka)

Spring Cloud Netflix的Eureka是一个服务注册和发现模块。首先需创建一个Maven主工程,然后在此基础上创建2个Maven Module,一个Module作为服务注册中心,即Eureka Server,另一个作为Eureka Client。

创建父项目

新建Maven Project,如图:

选择Create a simple project,跳过archetype的选择步骤,点击Next:

 

输入如图的信息,其中,Packaging的选项为pom,点击Finish,则项目创建成功。将创建好的项目中的src目录删除,只保留pom.xml即可。项目的pom文件内容如下:

接下来,在eurekamarket的pom.xml中Eureka需要的依赖关系等配置信息,具体如图:

 

创建服务注册中心(eureka server)

选中eurekamarket工程,右键New→Other,再创建一个Maven Module,同样选择Create a simple project,并输入Module Name,如图:

点击Finish,完成Maven Module的创建。创建成功之后,在父项目eurekamarket的pom.xml中,会出现modules标签,显示刚创建的Maven Module;而eurekaserver的pom.xml只是简单的项目信息。

然后修改eurekaserver的pom.xml,增加eureka的相关依赖,修改后的pom.xml文件内容如下图:

至此,pom.xml修改完毕,接下来需要启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加(Maven工程若是手动创建,则不会自动添加这个application类,这里需要手动添加上)。如图:

Eureka需要一个配置文件,命名为application.yml。在src/main/resources目录下,创建application.yml,配置信息如下图:

yml文件的格式要求非常严格,在每个键值对key的冒号后面,一定要加一个空格,否则项目启动过程中解析配置文件会抛出异常。

yml文件中不得出现TAB符号,只能输入空格,TAB符号也会导致项目启动失败。

最后,使用Spring Boot App(或者Java Application)运行EurekaServerApplication.java,启动该工程,日志显示“Started EurekaServerApplication in XXX seconds”表示工程启动成功。访问地址是http://localhost:8761/,界面如下:

在Application栏位下,显示的是No application available,表示没有发现可用的服务,这是因为没有注册服务。下面就创建一个服务提供者。

 

创建服务提供者(eureka client)

当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka Server 从每个client实例接收心跳消息。如果心跳超时,则通常将该实例从注册server中删除。

创建过程同server类似,创建完pom.xml如下:

第一个dependency是作为Eureka Client必需的依赖包,而第二个dependency若不引入,则会导致后面client启动之后马上又停止,注册到server失败。

同server类似,client也要一个注解表示自己身份,就是@EnableEurekaClient,在com.example.cloud包下新建Application的Java类,具体如下:

同理,application.yml也是必要的,配置信息如下:

需要指明spring.application.name这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。

启动工程(先server,再client,主方法启动),打开http://localhost:8761,即eureka server 的网址:

此时发现一个服务已经注册在服务中了,服务名为SERVICE-HI,端口为7862。

这时打开 http://localhost:8762/hi?name=forezp ,浏览器会输出:

hi forezp, I am from port: 8762

 

问题列表

1.pom.xml配置信息

pom.xml配置信息可以访问https://projects.spring.io/spring-cloud/来具体获取

2.application.yml配置信息

文件配置信息大致如下:

spring:

application:

name: eureka-server

server:

port: 8761

eureka:

instance:

hostname: localhost

client:

registerWithEureka: false

fetchRegistry: false

serviceUrl:

defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

debug: true

logging:

file: wol-bookstore-eureka-server.log

level:

root: info

具体的解释如下:

spring:application:name:给应用定义一个名称;

server:port:是应用的端口号;

eureka:instance:hostname:是应用所在的主机名;

eureka:client:registerWithEureka:用于应用是注册中心,所以不向注册中心注册自己;

eureka:client:fetchRegistry:用于应用是注册中心,所以不需要去检索服务;

eureka:client:serviceUrl:defaultZone:定义注册中心的地址;

debug:打开日志功能;

logging:file:日志文件指向当前应用的目录;

logging:level:root:输出级别为info

3.访问首页出现登录页面

服务启动之后,访问http://localhost:8761/,直接显示了登录页面,如图:

这是由于pom.xml中引入了spring-boot-starter-security,所以需要账号认证,就是说,若不引入该jar包,则不会出现登录页面,若是引入了该包,则需要配置账号和密码。

 

3.client启动后自动停止

SpringCloud-Eureka-Client启动后自动停止,不能注册到Server,需要在pom文件中添加如下配置:

然后重新启动client即可。

 

 

猜你喜欢

转载自blog.csdn.net/NewYears2012/article/details/81171658