摘要:服务治理上是由开源的一款基于的服务治理组件,包括及。由于种种原因,版本已经冻结开发,目前最新版本是年月份发布的版本。服务发现选型其中比较受众关注的就是和这两款产品,这两款产品各有所长,各有所适,开发者可用按需选择。
服务治理:Spring Cloud Eureka(上)
Netflix Eureka是由Netflix开源的一款基于REST的服务治理组件,包括Eureka Server及Eureka Client。由于种种原因,Eureka 2.x版本已经冻结开发,目前最新版本是2018年8月份发布的1.9.4版本。1. 服务发现 1.1 Eureka简介
Spring Cloud Eureka是Pivotal公司为Netflix Eureka整合于Spring Cloud生态系统提供的版本。
Eureka是Netflix公司提供的开源服务发现组件(现已闭源),最新版本是1.9.4,该组件提供的服务发现可以为负载均衡、failover等提供支持。Eureka包括Eureka Server和Eureka Client。Eureka Server提供REST服务,Eureka Clinet多数是使用Java编写的客户端(Eureka Client可以使用其他语言编写,比如Node.js或.NET),用于简化和Eureka Server的交互。1.2 Eureka Server简单案例
所有工程使用Spring Cloud的新版Greenwich.SR1和Maven构建。
1.2.1 创建Spring Cloud Eureka Server工程pom.xml内容如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.4.RELEASE watermelon.cloud eureka-server 0.0.1-SNAPSHOT eureka-server Spring Cloud Eureka Server 1.8 Greenwich.SR1 org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
Finchley版本之后,Eureka的depenecy片段稍微有点不同
1.2.2 开启EurekaServer支持org.springframework.cloud spring-cloud-starter-eureka-server org.springframework.cloud spring-cloud-starter-netflix-eureka-server
在启动类上加上@EnableEurekaServer注解。
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }1.2.3 修改application.yml配置文件
server: port: 1111 spring: application: name: eureka-server eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: waitTimeInMsWhenSyncEmpty: 0 enableSelfPreservation: false # 后面详细讲配置1.2.4 编译、启动
浏览器访问http://localhost:1111/出现如下页面就说明服务端简单案例构建成功。
1.3 Eureka Client简单案例 1.3.1 创建Eureka Client工程pom.xml内容如下:
1.3.2 启动类启用DiscoveryClient支持4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.4.RELEASE watermelon.cloud eureka-client 0.0.1-SNAPSHOT eureka-client Spring Cloud Eureka Client 1.8 Greenwich.SR1 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
@SpringBootApplication @EnableDiscoveryClient public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }1.3.3 修改applicaiton.yml配置文件
server: port: 2222 spring: application: name: eureka-client # 如果不配置name属性,在注册中心的实例名都将是UNKNOWN eureka: client: serviceUrl: defaultZone: http://localhost:1111/eureka/ # 服务注册中心地址1.3.4 HelloController简单打印输出
@RestController @Slf4j public class HelloController { private final DiscoveryClient client; @Autowired public HelloController(DiscoveryClient client) { this.client = client; } @GetMapping("/hello") public String sayHello() { List先启动Eureka Server,再启动Eureka Client,测试serviceInstances = client.getInstances("eureka-client"); serviceInstances.forEach(serviceInstance -> { log.info("Host: {}, Port: {}", serviceInstance.getHost(), serviceInstance.getPort()); log.info("serviceId: {}, InstanceId: {}", serviceInstance.getServiceId(), serviceInstance.getInstanceId()); }); return "Hello, Spring Cloud Eureka. - " + LocalDateTime.now().toString(); } }
访问http://localhost:111/eureka/,如果Server和Client都启动成功并且配置正确的情况将会如下情况。
访问http://localhost:2222/hello/,会出现文字信息和日志输出。
简单的入门案例就此搭建结束,虽然没实现什么功能,但是我们可以从服务注册中心观察到可用的Eureka Client实例,和在日志中打印服务实例的一些简短信息。
1.4 Eureka Server的REST APIEureka 在 GitHub 的 wiki 上专门写了一篇《 Eureka REST operations》来介绍 Eureka Server 的 REST API 接口,Spring Cloud Netfix Eureka 跟 Spring Boot 适配之后,提供的 REST API 与原始的 REST API 有一点点不同,其路径中的 {version} 值固定为 eureka,其他的变化不大.
以下简单演示apps的REST端点:访问http://localhost:1111/eureka/apps,会得到以下返结果。
1 UP_1_ EUREKA-CLIENT localhost:eureka-client:2222 localhost EUREKA-CLIENT 192.168.91.1 UP UNKNOWN 2222 443 1 MyOwn 30 90 1557113978372 1557114128293 0 1557113978373 2222 http://localhost:2222/ http://localhost:2222/actuator/info http://localhost:2222/actuator/health eureka-client eureka-client false 1557113978373 1557113978278 ADDED
文末提供一些,服务发现选型对比,下篇文章介绍Eureka的核心类及其内容。
2. 服务发现选型
其中比较受众关注的就是Eureka和Consul这两款产品,这两款产品各有所长,各有所适,开发者可用按需选择。
个人微信公众号,欢迎交流鸭!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74427.html
摘要:属性对应服务注册中心的配置内容,指定服务注册中心的位置。项目是针对的服务治理实现。下面可以尝试让的服务提供者运行起来。我们可以用下面的命令启动的开发模式服务端启动完成之后,我们再将之前改造后的服务提供者启动起来。 已经有非常长的时间没有更新《Spring Cloud构建微服务架构》系列文章了,自从开始写Spring Cloud的专题内容开始就获得了不少的阅读量和认可,当然也有一些批评...
摘要:服务续约在服务注册完成之后,服务提供者需要维护一个心跳来告知注册中心服务实例处于正常运行状态中,防止注册中心将正常的服务实例剔除出注册中心。 Spring Cloud Eureka 目录 前言 构建服务注册中心 服务注册与发现 Eureka的基础架构 Eureka的服务治理机制 Eureka的配置 代码地址 前言 服务治理 随着微服务应用的不断增加,静态配置会越来越难以维护,并且...
摘要:下一篇介绍基于的服务注册与调用。服务提供者工程配置这里服务提供者是使用之前进阶教程第三篇整合连接池以及监控改造而来,这里一样的部分就不再重复说明,下面将说明新增的部分。 Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分...
摘要:下面的例子,我们将利用上一篇中构建的作为服务注册中心作为服务提供者作为基础。我们先来创建一个服务消费者工程,命名为。初始化,用来真正发起请求。注解用来将当前应用加入到服务治理体系中。 通过上一篇《Spring Cloud构建微服务架构:服务注册与发现》,我们已经成功地将服务提供者:eureka-client或consul-client注册到了Eureka服务注册中心或Consul服务端...
阅读 1166·2021-10-20 13:48
阅读 2173·2021-09-30 09:47
阅读 3103·2021-09-28 09:36
阅读 2341·2019-08-30 15:56
阅读 1195·2019-08-30 15:52
阅读 2019·2019-08-30 10:48
阅读 606·2019-08-29 15:04
阅读 564·2019-08-29 12:54