Spring Cloud:第二章:eureka服务发现

简介: Spring Cloud:第二章:eureka服务发现

服务注册中心 :eureka-server

新建一个springboot项目:eureka-server,其pom.xml配置如下:

  <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
      </properties>
      <dependencies>
          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-eureka-server</artifactId>
         </dependency>
     </dependencies>
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-dependencies</artifactId>
                 <version>Dalston.SR1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>

想要实现一个服务注册中心的功能非常简单,只需要在项目的启动类EurekaServerApplication上使用@EnableEurekaServer注解即可

1 @EnableEurekaServer
2 @SpringBootApplication
3 public class EurekaServerApplication{
4 
5     public static void main(String[] args) {
6         new SpringApplicationBuilder(EurekaServerApplication.class)
7                     .web(true).run(args);
8     }
9 }

默认情况下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties配置文件中增加如下信息:

1 spring.application.name=eureka-server
2 server.port=1001
3 eureka.instance.hostname=localhost
4 eureka.client.register-with-eureka=false
5 eureka.client.fetch-registry=false

启动EurekaServerApplication,访问 http://localhost:9001/可以看到Eureka的页面,从红框的位置可以看到没有任务服务实例注册到当前的服务注册中心




服务提供方 :eureka-client


    每一个实例注册之后需要向注册中心发送心跳,当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。


新建一个springboot项目:eureka-client,其pom.xml配置如下:

  <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
      </properties>
      <dependencies>
          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-eureka</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
     </dependencies>
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                 <version>Dalston.SR1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>

想要实现一个服务提供方也很简单,只要在项目的启动类EurekaClientApplication上使用@EnableEurekaClient注解即可

 1 @EnableEurekaClient
 2 @SpringBootApplication
 3 public class EurekaClientApplication {
 4 
 5      public static void main(String[] args) {
 6             new SpringApplicationBuilder(
 7                     EurekaClientApplication.class)
 8                 .web(true).run(args);
 9         }
10 }

在application.properties中进行如下配置

spring.application.name=eureka-client
server.port=9002
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/

通过spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。


eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。


使用server.port属性设置不同的端口。



启动EurekaClientApplication类


刷新 http://localhost:9001/,可以看到咱们的服务提供方已经注册到了服务注册中心



在新建一个DiscoveryController


  使用discoveryClient.getServices()获取已经注册的服务名,使用@value将配置文件中的信息赋值到ip

@RestController
public class DiscoveryController {
    @Autowired
    private DiscoveryClient discoveryClient;
    @Value("${server.port}")
    private String ip;
    @GetMapping("/client")
    public String client() {
        String services = "Services: " + discoveryClient.getServices()+" ip :"+ip;
        System.out.println(services);
        return services;
    }
}

访问:http://localhost:9002/client





最后说明一下@EnableEurekaClient 与@EnableDiscoveryClient这两个注解


 首先这个两个注解都可以实现服务发现的功能,在spring cloud中discovery service有许多种实现(eureka、consul、zookeeper等等)


  @EnableEurekaClient基于spring-cloud-netflix。服务采用eureka作为注册中心,使用场景较为单一。


  @EnableDiscoveryClient基于spring-cloud-commons。服务采用其他注册中心。


相关文章
|
6天前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
138 6
|
24天前
|
监控 Java 应用服务中间件
网关大解密:探索Spring Cloud Alibaba中Gateway的奥秘
网关大解密:探索Spring Cloud Alibaba中Gateway的奥秘
52 1
|
1月前
|
负载均衡 Java 开发者
【分布式】Spring Cloud 组件综述
【1月更文挑战第25天】【分布式】Spring Cloud 组件综述
|
1月前
|
人工智能 监控 安全
spring cloud智慧工地信息平台管理系统源码
智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最终实现项目对人、机、料、法、环的全方位实时监控。智慧工地平台支持项目级、公司级、集团级多级权限划分,可根据企业的组织架构进行项目权限、功能权限、数据权限设定。
20 1
|
1月前
|
缓存 负载均衡 Java
Spring Cloud Alibaba client升级问题之升级报错如何解决
Spring Cloud Alibaba提供了一套在Spring Cloud框架基础上构建的微服务解决方案,旨在简化分布式系统的开发和管理;本合集将探讨Spring Cloud Alibaba在实际应用中的部署和使用技巧,以及该框架常见问题的诊断方法和解决步骤。
|
1月前
|
运维 监控 Java
Spring Cloud Alibaba分布式事务问题之事务commit失败如何解决
Spring Cloud Alibaba提供了一套在Spring Cloud框架基础上构建的微服务解决方案,旨在简化分布式系统的开发和管理;本合集将探讨Spring Cloud Alibaba在实际应用中的部署和使用技巧,以及该框架常见问题的诊断方法和解决步骤。
|
1月前
|
消息中间件 Java 测试技术
Spring Cloud Alibaba环境问题之测试环境失败如何解决
Spring Cloud Alibaba提供了一套在Spring Cloud框架基础上构建的微服务解决方案,旨在简化分布式系统的开发和管理;本合集将探讨Spring Cloud Alibaba在实际应用中的部署和使用技巧,以及该框架常见问题的诊断方法和解决步骤。
|
1月前
|
监控 安全 Java
Java(spring cloud)智慧工地(项目层+工地层+APP)源码
智慧工地提供工地智能管理服务,打通数据壁垒,互通管理中心各平台。实现:“可视”、“可控”、“可管”。智慧工地管理云平台是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段,实现对工地施工、设备状态、人员安全等方面的实时监控和管理。
27 1
|
1月前
|
监控 数据可视化 安全
Spring Cloud可视化智慧工地大数据云平台源码(人、机、料、法、环五大维度)
智慧工地平台是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
40 2
|
24天前
|
监控 Java Docker
从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合
从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合
232 0