Spring Cloud Netflix — Eureka
3.1 创建SpringBoot应用,导入eureka依赖
-
Eureka-server
3.2 配置eureka
-
application.yml
-
server: port: 8761 spring: application: name: eureka-server eureka: client: # 是否设置单机模式 register-with-eureka: false # 设置是否进行注册 fetch-registry: false # 设置注册地址 http://ip:port/eureka # ip 表示服务注册与发现中心的ip # port 表示服务注册与发现中心的port # eureka 部分是固定的 service-url: defaultzone: http://localhost:8761/eureka
-
3.3 声明服务注册中心
-
在当前项目的启动类添加@EnableEurekaServer
-
@SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
-
3.4 测试
-
启动项目
-
浏览器访问:http://ip:port
-
-
四、服务注册
4.1 创建项目、完成服务功能开发
-
创建SpringBoot项目,按照之前的开发模式进行服务的开发
4.2 服务注册
-
导入eureka-server依赖
-
如果是基于微服务架构开发,在创建项目的时候可以直接勾选“Spring Cloud Discovery---Eureka server”
-
如果是将单体项目改造成微服务项目,依赖通常需要手动加入
-
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
- 配置application.yml
-
server: port: 8001 # 每个服务必须指定name,此name就是当前系统中服务的唯一标识 spring: application: name: goods-provider # 指定当前服务注册的 “服务注册与发现中心”的地址 eureka: client: service-url: defaultzone: http://localhost:8761/eureka
-
@SpringBootApplication @EnableEurekaClient public class GoodsProviderApplication { public static void main(String[] args) { SpringApplication.run(GoodsProviderApplication.class, args); } }
-
五、服务发现
服务发现即服务调用,Spring Cloud Netflix提供两种实现用于完成服务调用
-
Ribbon
-
Feign
5.1 基于Ribbon进行服务调用
5.1.1 Ribbon依赖及配置
-
服务消费者添加Ribbon依赖
-
-
-
-
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
- 配置application.yml
-
server: port: 9001 spring: application: name: goods-ui eureka: client: service-url: defaultzone: http://localhost:8761/eureka
- 在启动类添加@EnableDiscoveryClient注解
-
@SpringBootApplication @EnableDiscoveryClient public class GoodsUiApplication { public static void main(String[] args) { SpringApplication.run(GoodsUiApplication.class, args); } }
5.1.2 使用Ribbon进行服务的调用
-
-
@Configuration public class AppConfig { @LoadBalanced //负载均衡设置(启用Ribbon) @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
- 在Service中使用RestTemplate完成服务调用
-
@Service public class GoodsUIService { //通过服务的调用获取商品信息 @Resource private RestTemplate restTemplate; public void visitGoodsList(){ String data = restTemplate.getForObject("http://goods-provider/goods/list", String.class); System.out.println("----"+data); } }
-
-
- 在启动类添加@EnableDiscoveryClient注解
-
-
-
-
-
-
-
-
-