前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud初体验--Hello Eureka

SpringCloud初体验--Hello Eureka

作者头像
用户6203048
发布2020-10-27 14:35:57
4530
发布2020-10-27 14:35:57
举报
文章被收录于专栏:JathonKatuJathonKatu

Spring Cloud Eureka是Spring Cloud Netflix中的一部分,基于Netflix Eureka做了二次封装,主要负责微服务架构中的服务治理。

服务治理主要是用来实现各个微服务实例的自动化注册与发现。

主要功能:

服务注册

每个服务单元向服务中心等级自己提供的服务,将主机号、端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单。

服务注册中心还需要以心跳的方式去监测清单中的服务是否可用,若不可用需要从服务清单中剔除,达到排除故障服务的效果。

服务发现

服务向服务注册中心发起调用,便从服务清单中以某种轮询策略取出一个位置来进行服务调用。

Netflix Eureka包含了服务端和客户端组件,均由java实现,主要适用于Java实现的分布式系统,或是JVM兼容语言构建的系统。Eureka服务端的服务治理机制提供了完备的Restful Api,所以也支持非JVM语言构建的微服务,只是其他语言需要自己实现Eureka服务端程序。

Eureka服务端:服务注册中心。

Eureka客户端:主要处理服务注册与发现。


接下来是服务端的代码部分。

基于SpringBoot项目的基础上,pom文件增加:

代码语言:javascript
复制
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      <version>2.2.2.RELEASE</version>
</dependency>

下面是启动类,可以看出启动类和普通的springboot启动类差别不大,只是增加了@EnableEurekaServer

代码语言:javascript
复制
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaServerApplication.class, args);
  }
}

下面是服务端的application.properties

代码语言:javascript
复制
server.port=1111
spring.application.name = eureka-server
eureka.instance.hostname=localhost
# 因为是服务注册中心,所以不向服务注册中心注册自己
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

配置完可以直接登录localhost:1111

可以看到暂时还没有注册任何服务。没有关系,接下来我们搭建客户端。


以下是Eureka客户端代码,因为为我们要测试,需要restful api,所以除了Eureka的客户端以外,还要引入SpringMVC

基于SpringBoot项目的基础上,pom文件增加:

代码语言:javascript
复制
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      <version>2.2.2.RELEASE</version>
</dependency>
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>

下面是启动类,可以看出启动类和普通的springboot启动类差别不大,只是增加了@EnableDiscoveryClient

代码语言:javascript
复制
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaClientApplication.class, args);
  }
}

下面是客户端的application.properties

代码语言:javascript
复制
server.port=8080
spring.application.name = eureka-client
#eureka.instance.hostname=eureka-client
#下面是之前注册的Eureka服务端地址
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

然后我们再新增一个HelloController,用于测试。

代码语言:javascript
复制
@RestController
public class HelloController {
  private final Logger logger = Logger.getLogger("HelloController");
  
  @Autowired
  private DiscoveryClient client;
  @Autowired
  private Registration registration;
  
  @RequestMapping("/hello")
  public String index() {
    ServiceInstance instance = client.getInstances(registration.getServiceId()).get(0);
    logger.info("/hello,host: " + instance.getHost() + " , service_id: " + instance.getServiceId());
    return "Hello World!";
  }
}

我们可以刷新一下http://localhost:1111/

这时候我们的服务就已经注册上去了,尝试访问一下HelloController,打印出如下日志。

代码语言:javascript
复制
2020-04-12 14:23:59.209  INFO 20100 --- [nio-8080-exec-7] HelloController: /hello,host: eureka-client , service_id: EUREKA-CLIENT
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JathonKatu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档