Eureka 简介
看着这个图标,就感觉到了Spring与Eureka之间浓浓的基情。
Spring Cloud Eureka 是Spring对Netflix公司的Eureka的二次封装的产品,它实现了服务治理的功能,Spring Cloud Eureka提供了服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。
微服务
在说微服务之前,先讲讲项目的功能拆分问题。
功能拆分对我们来说并不陌生,曾记否刚入坑编程时的那段光辉岁月?你小心翼翼地将一大坨代码按功能切分成几小坨,封装在不同的函数库里调用。那时是不是感觉自己离大神只有一步之遥?
后来,接触到代理设计模式,发现将功能切分成小模块,并不能很好解决功能代码与业务处理之间的耦合问题。于是代理设计模式和面向切面编程来到你面前,尝试几番发现这玩意用的还挺爽,瞬间那种发自骨髓的自豪感和成就感再一次让你感觉离大神真的更近了一步!
再后来,发现如果项目变的特别庞大,单体项目问题成为你的眼中钉肉中刺,然后你就想是不是可以把整个项目纵向拆分成若干模块,每个模块该分层分层,该IOC就IOC,该AOP就AOP,还可以在一个或不同的服务器独立运行,然后模块之前通过接口进行通信让整个系统在逻辑上构成一个整体,这样无论是负载均衡还是解决功能强耦合问题都是一个不错的选择。这样的思路就是微服务。
Eureka服务注册中心搭建
第一步 创建骨架
创建Maven项目,添加相关依赖:
Spring 和 Eurekea是对好 “基友”,所以导入SpingBoot是一个基本前提:
<!--SpringBoot父依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
而Eurekea是Spring Cloud微服务框架的一个组件,所以我们还需要导入SpringCloud Edgware.RELEASE版本相关依赖,可以理解为Edgware.RELEASE版本中包含了众多Eureka相关的依赖:
<!--SpringCloud Edgware.RELEASE版本相关依赖-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
最后,你要开发服务端还是客户端,人家也不知道,所以没有包含在Edgware.RELEASE中,所以需要最终导入一个服务端依赖,当然如果开发客户端,这里就是客户端依赖:
<!--Eureta服务端最终依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
最终的POM配置,大概就是这样的:
第二步 创建核心配置文件
在resources目录,创建application.properties文件,配置如下内容:
#端口配置
server.port=8761
#服务名称
spring.application.name=euraka-server
#开启IP优先
eureka.instance.prefer-ip-address=true
#关闭注册
eureka.client.register-with-eureka=false
#关闭抓取
eureka.client.fetch-registry=false
#注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
如图:
这里面每一项都有注释,这不展开细讲了。
第三步 创建启动类
在启动类上,首先配置SpringBoot注解(@SpringBootApplication)和开启Eurekea服务端注解(@EnableEurekaClient)
如图:
加入启动代码:
看到这个输出,代表启动成功:
访问:http://localhost:8761/,成功!
之后,这里将会显示注册的微服务客户端,目前还没有:
Eureka客户端微服务注册与发现
配置客户端,和服务端大体一致,唯一不一样的地方有以下几点:
1.最终依赖的不同,服务端是server,客户端是spring-cloud-starter-eureka:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
2.配置文件的几处不同
#端口配置
server.port=6661
#客户端名称
spring.application.name=euraka-client1
#开启IP优先
eureka.instance.prefer-ip-address=true
#开启注册
eureka.client.register-with-eureka=true
#开启抓取
eureka.client.fetch-registry=true
#注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
大概看一眼就明白,不过多解释。
3.启动类将启动服务器的注解改成启用客户端:@EnableEurekaClient
启动之后,刷新注册中心:
这样就实现了微服务客户端的注册与发现。
到此,Eureka的基本使用就介绍完毕了,由于时间关系,有些内容没有展开细讲,欢迎大家留言。