spring cloud-eureka
来源:互联网 发布:js判断是否离开页面 编辑:程序博客网 时间:2024/06/05 03:44
在spring cloud简介中,我们了解到netflix eureka负责云端负载均衡,用于服务注册与发现。
eureka服务注册与发现调用流程如下:
eureka与zookpeeper都是服务注册与发现组件,因为eureka与spring cloud集成更高,所以我们用eureka举例讲解。
首先我们创建一个eureka server项目microservice-discovery-eureka,然后创建一个服务提供项目microservice-provider-user和一个服务消费项目microservice-consumer-movie。
microservice-provider-user和microservice-consumer-movie都为eureka client,需要先将服务注册到eureka server才可以完成服务调用。
创建eureka server项目非常的方便,我们在application.yml声明相关配置信息:
security: basic: enabled: true user: name: user password: password123server: port: 8761eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://user:password123@localhost:8761/eureka
其次在main启动程序加上@EnableEurekaServer注解,这样eureka server项目便创建好了。
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublic class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); }}
对于服务提供方microservice-provider-user,我们也需要在application.yml声明服务相关的配置:
server: port: 7900spring: jpa: generate-ddl: false show-sql: true hibernate: ddl-auto: none datasource: platform: h2 schema: classpath:schema.sql data: classpath:data.sql application: name: microservice-provider-userlogging: level: root: INFO org.hibernate: INFO org.hibernate.type.descriptor.sql.BasicBinder: TRACE org.hibernate.type.descriptor.sql.BasicExtractor: TRACE com.itmuch: DEBUGeureka: client: healthcheck: enabled: true serviceUrl: defaultZone: http://user:password123@localhost:8761/eureka instance: prefer-ip-address: true instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}} metadata-map: zone: ABC # eureka可以理解的元数据 lilizhou: BBC # 不会影响客户端行为 lease-renewal-interval-in-seconds: 5
其次在main启动程序加上@EnableEurekaClient注解,声明为eureka client项目:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class MicroserviceSimpleProviderUserApplication { public static void main(String[] args) { SpringApplication.run(MicroserviceSimpleProviderUserApplication.class, args); }}
最后我们在Controller加上接口调用注解,启动main函数,服务提供方项目便可以提供接口服务。
@RestControllerpublic class UserController { @Autowired private UserRepository userRepository; @GetMapping("/simple/{id}") public User findById(@PathVariable Long id) { return this.userRepository.findOne(id); }}
对于服务消费方microservice-consumer-movie,我们也需要在application.yml声明服务相关的配置:
spring: application: name: microservice-consumer-movieserver: port: 7901user: userServicePath: http://localhost:7900/simple/eureka: client: healthcheck: enabled: true serviceUrl: defaultZone: http://user:password123@localhost:8761/eureka instance: prefer-ip-address: true
其次在main启动程序加上@EnableEurekaClient注解,声明为eureka client项目:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;@SpringBootApplication@EnableEurekaClientpublic class MicroserviceSimpleConsumerMovieApplication { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(MicroserviceSimpleConsumerMovieApplication.class, args); }}
最后演示如何在服务消费方调用服务提供方的服务:
import org.springframework.beans.factory.annotation.Autowired;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;import org.springframework.web.client.RestTemplate;import com.itmuch.cloud.entity.User;@RestControllerpublic class MovieController { @Autowired private RestTemplate restTemplate; @Value("${user.userServicePath}") private String userServicePath; @GetMapping("/movie/{id}") public User findById(@PathVariable Long id) { return this.restTemplate.getForObject(this.userServicePath + id, User.class); }}
http接口的开发与调用案例可以参考:http接口开发与调用案例。
到此,我们使用eureka完成了服务的注册、发现与调用。
下篇文章我们讲解如何使用spring cloud的ribbon组件提供服务高可用功能,敬请关注。
- spring cloud-eureka
- Spring-cloud Eureka 集群
- spring cloud eureka
- Spring Cloud Eureka
- Spring Cloud Netflix Eureka
- Spring Cloud Eureka详解
- Spring Cloud Eureka
- Spring Cloud Eureka
- spring cloud eureka
- spring cloud教程---Eureka
- Spring Cloud Eureka
- spring cloud之eureka
- 关于Spring Cloud Eureka
- spring-cloud【eureka】
- spring-cloud系列-Eureka
- Spring Cloud Eureka 初探
- Spring Cloud Eureka
- spring cloud eureka
- 用swiper 实现tabs切换并且实现他tabs底下内容自适应
- Ubuntu下构建BeagleBone Black的Eclipse开发环境
- 架构漫谈(九):理清技术、业务和架构的关系
- 把一个整数数组,分成个大小相同的子数组
- 状态码告知从服务端返回的请求结果
- spring cloud-eureka
- C++ 头文件系列(unordered_map、unordered_set)
- 数据库操作
- 【其他】搜索结果中developer.android.com开头的网址打不开
- 个人对渲染管道的理解
- SecureCRT初次使用
- Spark JdbcRDD
- Visual Assist X添加注释模板
- 统计mysql表数量及表记录数