摘要:服务治理上是由开源的一款基于的服务治理组件,包括及。由于种种原因,版本已经冻结开发,目前最新版本是年月份发布的版本。服务发现选型其中比较受众关注的就是和这两款产品,这两款产品各有所长,各有所适,开发者可用按需选择。
服务治理:Spring Cloud Eureka(上)
</>复制代码
Netflix Eureka是由Netflix开源的一款基于REST的服务治理组件,包括Eureka Server及Eureka Client。由于种种原因,Eureka 2.x版本已经冻结开发,目前最新版本是2018年8月份发布的1.9.4版本。
Spring Cloud Eureka是Pivotal公司为Netflix Eureka整合于Spring Cloud生态系统提供的版本。
1. 服务发现
1.1 Eureka简介
</>复制代码
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片段稍微有点不同
</>复制代码
org.springframework.cloud
spring-cloud-starter-eureka-server
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
1.2.2 开启EurekaServer支持
在启动类上加上@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内容如下:
</>复制代码
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
1.3.2 启动类启用DiscoveryClient支持
</>复制代码
@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 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();
}
}
先启动Eureka Server,再启动Eureka Client,测试
访问http://localhost:111/eureka/,如果Server和Client都启动成功并且配置正确的情况将会如下情况。
访问http://localhost:2222/hello/,会出现文字信息和日志输出。
简单的入门案例就此搭建结束,虽然没实现什么功能,但是我们可以从服务注册中心观察到可用的Eureka Client实例,和在日志中打印服务实例的一些简短信息。
1.4 Eureka Server的REST API</>复制代码
Eureka 在 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服务端...
阅读 1277·2021-10-20 13:48
阅读 2346·2021-09-30 09:47
阅读 3198·2021-09-28 09:36
阅读 2455·2019-08-30 15:56
阅读 1269·2019-08-30 15:52
阅读 2099·2019-08-30 10:48
阅读 709·2019-08-29 15:04
阅读 645·2019-08-29 12:54