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源码后面再放出
来源:https://www.cnblogs.com/yanghj/p/12160103.html