springcould学习(二)之eureka
来源:互联网 发布:java程序设计教程 实验 编辑:程序博客网 时间:2024/05/23 18:49
一、eureka介绍
Eureka是Netflix开发的服务发现组件,本身是一个基于REST的服务。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。目前Eureka 项目相当活跃,代码更新相当频繁,目前最新的版本是1.5.5。Eureka 2.0也在紧锣密鼓地开发中,2.0将会带来更强的功能和更好的扩展性,但是由于还没有Release,故而不作讨论
二、本节主要来使用eureka来做服务注册和发现
1、新建一个项目hjduan.spring.cloud.eureka继承自父工程,pom文件如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.hjduan.spring.cloud</groupId> <artifactId>hjduan.spring.cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>hjduan.spring.cloud.eureka</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.yml</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> </plugins> </build></project>
2、application.yml配置
server: port: 8761eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://admin:admin@${eureka.instance.hostname}:${server.port}/eureka/security: basic: enabled: true user: name: admin #登陆用户名 password: admin#登陆密码
3、启动类
package com.hjduan.spring.cloud.eureka;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/** * 启动一个服务注册中心 */@EnableEurekaServer@SpringBootApplicationpublic class EurekaApplicationConfiguration { public static void main (String[]args){ new SpringApplication(EurekaApplicationConfiguration.class).run(args); }}
二、修改上一节的两个项目
1、修改hjduan.spring.cloud.provider pom文件如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.hjduan.spring.cloud</groupId> <artifactId>hjduan.spring.cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>hjduan.spring.cloud.provider</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- 健康监控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.yml</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> </plugins> </build></project>
2、application.yml配置
server: port: 8762eureka: client: serviceUrl: defaultZone: http://admin:admin@localhost:8761/eureka/ instance: prefer-ip-address: true instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}spring: application: name: hjduan-spring-cloud-provider
3、控制器
package com.hjduan.spring.cloud.provider;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import com.netflix.appinfo.InstanceInfo;import com.netflix.discovery.EurekaClient;@RestControllerpublic class UserController { @Autowired private EurekaClient eurekaClient; @Autowired private DiscoveryClient discoveryClient; @GetMapping(value = "eureka-instance") public String serviceUrl() { InstanceInfo instance = eurekaClient.getNextServerFromEureka("HJDUAN-SPRING-CLOUD-CONSUMER", false); return instance.getHomePageUrl(); } @SuppressWarnings("deprecation") @GetMapping(value = "instance-info") public ServiceInstance showInfo() { ServiceInstance localServiceInstance = this.discoveryClient.getLocalServiceInstance(); return localServiceInstance; } /*@Autowired RestTemplate restTemplate; @GetMapping(value = "/hi/{name}") public String ribbonHelloWordService(@PathVariable String name) { return restTemplate.getForObject("http://HJDUAN-SPRING-CLOUD-CONSUMER/hi/{name}", String.class, name); }*/}
4、启动类
package com.hjduan.spring.cloud.provider;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.client.RestTemplate;/** * 注册提供者 * * 作者: 段浩杰 2017年7月25日 */@EnableEurekaClient@SpringBootApplication@Controllerpublic class ApplicationConfiguration { public static void main(String[] args) { new SpringApplication(ApplicationConfiguration.class).run(args); } @Bean public RestTemplate restTemplate() { return new RestTemplate(); }}
5、修改hjduan.spring.cloud.consumer pom如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.hjduan.spring.cloud</groupId> <artifactId>hjduan.spring.cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>hjduan.spring.cloud.consumer</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- 健康监控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.yml</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> </plugins> </build></project>
6、application.yml配置
server: port: 8763eureka: client: serviceUrl: defaultZone: http://admin:admin@localhost:8761/eureka/ instance: prefer-ip-address: true instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}spring: application: name: hjduan-spring-cloud-consumer
7、控制器
package com.hjduan.spring.cloud.consumer;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;/** * 暴露的接口 * 作者: 段浩杰 2017年7月25日 */@RestControllerpublic class UserController { @Value("${server.port}") private String port; @GetMapping(value = "/hi/{name}") public String showInfo(@PathVariable String name) { return "hi" + name+port; }}
8、启动类
package com.hjduan.spring.cloud.consumer;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/** * 注册提供者 * 作者: 段浩杰 2017年7月25日 */@EnableEurekaClient@SpringBootApplicationpublic class ApplicationConfiguration { public static void main(String[] args) { new SpringApplication(ApplicationConfiguration.class).run(args); }}
9、然后分别启动hjduan.spring.cloud.eureka、hjduan.spring.cloud.provider、hjduan.spring.cloud.consumer这三个项目
10、访问http://localhost:8761,输入用户名密码,进入到eureka中心,来监控和管理服务。
阅读全文
0 0
- springcould学习(二)之eureka
- 从0开始学习SpringCould(9)--Eureka 服务注册发现
- 从0开始学习SpringCould(1)--SpringBoot项目搭建
- 从0开始学习SpringCould(3)--SpringBoot 定时任务
- 从0开始学习SpringCould(4)--SpringBoot 集成freemarker
- 从0开始学习SpringCould(6)--SpringBoot 集成swagger2
- Eureka 源码解析 —— Eureka-Client 初始化(二)之 EurekaClientConfig
- Eureka 源码解析 —— Eureka-Server 启动(二)之 EurekaBootStrap
- 从0开始学习SpringCould(2)--SpringBoot yml简单配置
- 从0开始学习SpringCould(5)--SpringBoot 集成Mybatis使用Druid数据源
- 从0开始学习SpringCould(7)--SpringBoot 多环境配置
- 从0开始学习SpringCould(8)--SpringBoot 分环境读取配置文件
- 【微服务架构】SpringCloud之Eureka(服务注册和服务发现基础篇)(二)
- Eureka 源码解析 —— 应用实例注册发现(二)之续租
- 【微服务架构】SpringCloud之Eureka(服务注册和服务发现基础篇)(二)
- spring cloud 学习(二)关于 Eureka 的学习笔记
- 学习笔记系列之SpringCloud | 第一章 服务注册中心(Eureka)
- Spring Cloud学习--服务发现(Eureka)
- mybatis 面试题
- AtCoder 079F Namori Grundy
- SqlSessionFactory和Sqlsession
- HDU 2124 Repair the Wall
- BZOJ4318 OUS! 解题报告【期望DP】
- springcould学习(二)之eureka
- 将整数字符串转成整数值
- 剑指offer 之 顺时针打印矩阵
- 怎么禁用笔记本触摸板
- 设计模式-介绍
- 滑动窗口的最大值——双端队列
- 220. Contains Duplicate III
- CentOS配置SSH
- const修饰类的成员函数