127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
1、在Spring Cloud中启用Eureka,需在pom文件中加入以下依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
2、接下来需要修改项目的配置文件,因模拟三个节点,也就需要三个配置文件,其中只是端口号、hostname的指定有所不同,application-s1.yml具体配置如下:
server: port: 8761 spring: application: name: EurekaServer eureka: instance: hostname: peer1 #对应的hostname client: service-url: defaultZone: #三个服务节点互联 http://peer1:8761/eureka/,http://peer2:8762/eureka/,http://peer3:8763/eureka/
application-s2.yml,application-s3.yml中修改对应端口与hostname即可
3、mani函数中加入Eureka服务注解
@SpringBootApplication @EnableEurekaServer public class EurekaServerApp { public static void main(String[] args) { SpringApplication.run(EurekaServerApp.class, args); } }
4、使用maven打包,生成可运行的jar文件,执行以下命令
spring-cloud>java -jar eureka-server\target\eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=s1
spring-cloud>java -jar eureka-server\target\eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=s2
spring-cloud>java -jar eureka-server\target\eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=s3
启动时会报 Connect to peer3:8763 timed out之类的异常,待服务全启动后控制台窗口出现2017-04-12 16:46:14.991 INFO 13132 --- [nio-8761-exec-6] c.n.e.registry.AbstractInstanceRegistry : Registered instance EUREKASERVER/*.*.*.144:EurekaServer:8
763 with status UP (replication=true),说明服务已启动成功,打开http://localhost:8761/,可以看到集群运行正常
注:在配置文件中如果不使用域名的方式,而指定localhost或者ip(127.0.0.1/外网ip),服务能够正常启动,但分片服务总显示在unavailable-replicas中,因此在host中指定了相应的域名做服务区分
5、添加对外服务接口,新建一个controller,并打印出当前调用服务的信息
@RestController public class AppServiceController { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private DiscoveryClient client; @SuppressWarnings("deprecation") @RequestMapping("/hello/{user}") public String hello(@PathVariable("user") String user) { ServiceInstance instance = client.getLocalServiceInstance(); logger.info("/add, host:" + instance.getHost() + ", port: " + instance.getPort() + ", service_id:" + instance.getServiceId() + ", user:" + user); return "Hello " + user; } }
6、新建客户端调用工程,在工程中访问Eureka集群提供的rest服务,该工程是一个普通的Spring Boot项目,pom中添加以下依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency>
7、配置文件中将该工程注册属性设置为false,不在Eureka集群中注册
spring: application: name: eureka-client eureka: client: register-with-eureka: false server: name: eurekaServer
8、客户端的主类中通过服务名访问Eureka集群,默认负载均衡策略为轮询
@SpringBootApplication @EnableDiscoveryClient @RestController public class EurekaClientApp { @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } @Value("${eureka.server.name}") private String eurekaServer; @Autowired RestTemplate restTemplate; @RequestMapping(value = "/{user}") public String hello(@PathVariable("user") String user) { return restTemplate.getForEntity("http://" +eurekaServer +"/hello/"+ user, String.class).getBody(); } public static void main(String[] args) { SpringApplication.run(EurekaClientApp.class, args); } }
9、访问http://localhost:8080/tom,页面打印 Hello tom,可以变换参数,在服务端显示访问的日志信息
2017-04-12 18:12:31.888 INFO 13088 --- [nio-8762-exec-3] org.eureka.server.AppServiceController : /add, host:peer2, port: 8762, service_id:EurekaServer, user:tom
2017-04-12 18:13:03.310 INFO 6448 --- [nio-8763-exec-2] org.eureka.server.AppServiceController :
/add, host:peer3, port: 8763, service_id:EurekaServer, user:jack
2017-04-12 18:13:24.342 INFO 12992 --- [nio-8761-exec-6] org.eureka.server.AppServiceController : /add, host:peer1, port: 8761, service_id:EurekaServer, user:anny
访问三次,可以看到服务端分别被访问一次,使用了轮询策略
项目代码地址:https://github.com/hjguang/spring-cloud
该项目中包含其他工程,可以使用以下命令只install Eureka项目
spring-cloud>mvn install -pl eureka-server,eureka-client -DskipTests=true
相关推荐
Spring Cloud Netflix Eureka是Spring Cloud框架的一个重要组件,主要用于实现微服务之间的服务发现与注册。在微服务架构中,服务注册中心是整个系统的核心部分,它帮助各个微服务实例互相发现并进行通信。Eureka是...
Spring Cloud作为一套微服务解决方案,与Spring Boot相结合,为开发者提供了构建分布式系统中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等...
Spring Cloud是基于Spring Boot实现的一套微服务解决方案,它提供了众多用于构建分布式系统的工具和服务,例如服务发现、配置中心、熔断器、负载均衡、API网关等。Eureka用于服务注册与发现,Zuul或Gateway作为API...
本SpringCloud微服务用到Spring Cloud Netflix,包含微服务中心(eureka)、微服务提供者(service)、微服务消费者(ribbon、feign,内含断路器)、微服务网关(zuul)、管理系统(web-manager),以及以此组件配置...
在这个示例中,我们有 `springcloud-eureka` 和 `springcloud-eureka2` 两个 Eureka 服务器实例,它们共同构成了 Eureka 集群。这样做的目的是提高服务注册中心的高可用性,避免单点故障。配置时,每个 Eureka ...
配置`spring.cloud.service-discovery.eureka.instance-id`为唯一的实例ID,以便Eureka集群识别。 7. **服务消费者发现** 同样创建一个服务消费者应用,通过Eureka Client发现并调用服务提供者。使用`@...
综上所述,"springCloud+eureka" 主要是利用 Spring Cloud 的 Eureka 模块构建微服务架构,实现服务的注册与发现,从而简化了分布式系统中的服务治理。通过启动 Eureka Server 和两个客户端,可以演示服务间的通信和...
在本教程中,我们将深入探讨如何在Spring Cloud框架下实现Eureka集群,并整合Zuul和Feign。首先,我们要理解这些组件的核心功能。 **Eureka**是Spring Cloud中的服务发现组件,它允许微服务之间互相发现并进行通信...
### 基于SpringCloud的微服务实战案例与Dubbo微服务开发基础框架解析 #### 一、SpringCloud微服务实战案例—simplemall 在现代软件开发领域,微服务架构因其高灵活性、易于扩展和独立部署等优势而备受青睐。其中,...
SpringCloud微服务系统设计方案是构建大规模、高可用应用程序的一种现代架构。它基于Spring Boot和Spring Framework,旨在简化微服务的开发、部署和管理。本文将深入探讨微服务的本质、面临的挑战、架构设计以及核心...
"springcloud-eureka-server.zip"项目提供了优化的配置,可快速应用于实际开发环境中,帮助开发者更专注于业务逻辑的实现。通过深入理解和实践Eureka Server,我们可以更好地驾驭微服务,构建稳定可靠的分布式系统。
在本文中,我们将深入探讨如何使用...通过理解Eureka的工作机制和Spring Cloud的集成方式,你可以轻松地搭建自己的Eureka集群,并实现服务的注册与发现。实践中,还要注意监控Eureka服务器的状态,确保服务的稳定运行。
以上就是关于“springcloud-搭建微服务(聚合工程)及配置Eureka(搭建Eureka集群)+负载均衡(Ribbon)调用eureka服务”的详细解释。通过这样的配置,我们可以构建出一个稳定、高可用的微服务架构,其中的服务能够自动...
本项目以"分布式集群springBoot+springCloud+Eureka+Feign.zip"为主题,旨在创建一个基于Spring Boot、Spring Cloud、Eureka和Feign的基础框架。下面将详细介绍这些技术以及如何将它们整合到一起。 首先,Spring ...
本文将详细讲解如何搭建一个基于Spring Cloud 2.0的Eureka集群,以便实现多个Eureka注册中心的高可用性。 首先,我们要理解Eureka的基本概念。Eureka是一个基于REST的服务,用于定位服务,以实现云端的应用程序的...
Spring Cloud Eureka Server是Spring Cloud框架中的一个关键组件,它主要负责服务的注册与发现,是微服务架构中实现服务治理的重要工具。Eureka Server作为服务注册中心,为其他微服务提供服务注册和发现的能力,...
Spring Cloud是基于Spring Boot的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作的简单...
【标题】"基于SpringCloud的Java微服务项目骨架"是一个示例项目,它演示了如何构建和组织一个基于Spring Cloud的微服务架构。Spring Cloud是一个集合工具,它为开发人员在分布式系统(如配置管理、服务发现、断路器...
本项目是一个SpringCloud Eureka集群的示例,旨在帮助开发者了解如何设置和运行一个包含双节点的Eureka集群,以实现高可用的服务注册中心。 首先,我们来理解Eureka的基本工作原理。Eureka服务器作为服务注册中心,...