`

SpringCloudb2b2c电子商务- 服务的注册与发现Eureka

 
阅读更多

spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,如果不了解的话可以看这篇文章:2小时学会springboot。另外对于“微服务架构” 不了解的话,可以通过搜索引擎搜索“微服务架构”了解下。

 

二、创建服务注册中心

在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍。

 

1 、首先创建一个maven主工程。

 

首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样。再次说明一下,以后不再重复引入。代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>sc-f-chapter1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>sc-f-chapter1</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/>
    </parent>

    <modules>
        <module>eureka-server</module>
        <module>service-hi</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 2 、然后创建2个module工程:一个module工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client。

下面以创建server为例子,详细说明创建过程:

右键工程->创建module-> 选择spring initialir 如下图:

在这里插入图片描述

下一步->选择cloud discovery->eureka server ,然后一直下一步就行了。

在这里插入图片描述

创建完后的工程,其pom.xml继承了父pom文件,并引入spring-cloud-starter-netflix-eureka-server的依赖,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

 3、启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run( EurekaServerApplication.class, args );
    }
}

 4、eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件application.yml:

 

server:
  port: 8761
 
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
 
spring:
  application:
    name: eureka-server
      

 通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.

 

5 、eureka server 是有界面的,启动工程,打开浏览器访问:

http://localhost:8761 ,界面如下:

 

在这里插入图片描述

三、创建一个服务提供者 (eureka client)

 

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

 

创建过程同server类似,创建完pom.xml如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>service-hi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>service-hi</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

 通过注解@EnableEurekaClient 表明自己是一个eurekaclient.了解springcloud架构可以加求求:三五三六二四七二五九

@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceHiApplication {

    public static void main(String[] args) {
        SpringApplication.run( ServiceHiApplication.class, args );
    }

    @Value("${server.port}")
    String port;

    @RequestMapping("/hi")
    public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
        return "hi " + name + " ,i am from port:" + port;
    }

}

 仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下:

server:
  port: 8762

spring:
  application:
    name: service-hi

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。

启动工程,打开http://localhost:8761 ,即eureka server 的网址:

在这里插入图片描述

你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI ,端口为8762

这时打开 http://localhost:8762/hi?name=forezp ,你会在浏览器上看到 :

hi forezp,i am from port:8762

 

分享到:
评论

相关推荐

    spring-cloud-starter-netflix-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-starter-netflix-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-starter-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-starter-eureka-server-1.4.5.RELEASE.jar

    SpringCloud-服务注册与实现-Eureka创建服务提供者示例源码.zip

    总的来说,Eureka是Spring Cloud中的关键组件,它的服务注册与发现机制简化了微服务之间的通信,降低了系统的复杂性。通过学习和实践这个Eureka服务提供者示例,开发者能够深入理解Eureka的工作原理,并将其应用到...

    spring-cloud-netflix-eureka-server-2.0.4.RELEASE.jar

    Eureka修改增加页面操作,用于多人开发测试操作流程。可以更好的进行协调操作,只需要替换本地仓库的jar包就行

    spring cloud eureka(免费下载)

    - 添加必要的依赖,包括`spring-cloud-starter-netflix-eureka-server`,这是Eureka服务注册中心的核心依赖,以及`spring-boot-starter-test`用于测试。 - 在`pom.xml`文件中,设置`spring-cloud.version`属性为`...

    spring-cloud-netflix-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-netflix-eureka-server-1.4.5.RELEASE.jar

    springcloud-Netflix-eureka demo 可做参考

    本项目"springcloud-Netflix-eureka demo"提供了一个基于Spring Boot搭建的基础服务框架,旨在帮助开发者理解和学习如何使用Eureka进行服务注册与发现,以及Ribbon客户端负载均衡。 首先,我们来看Eureka。Eureka是...

    SpringCloud-服务注册与实现-Eureka示例代码.zip

    本示例代码将详细介绍如何在Spring Cloud项目中集成和使用Eureka来实现服务注册与发现。 首先,我们要理解Eureka的工作原理。Eureka由两部分组成:Eureka Server(服务注册服务器)和Eureka Client(服务提供者和...

    springcloud-provider-consumer-eureka

    本项目“springcloud-provider-consumer-eureka”旨在提供一个基础的SpringCloud入门示例,涵盖了一个简单的用户服务提供者(Provider)和一个电影服务消费者(Consumer),以及对服务注册与发现组件Eureka的初步...

    eureka-0.0.1-SNAPSHOT_Eureka!_eurekajar_

    Eureka是Netflix公司开源的一个基于Java的微服务发现组件,它是Spring ...总之,"eureka-0.0.1-SNAPSHOT.jar"是一个包含Eureka服务实现的JAR包,启动它可以搭建起一个服务注册与发现的平台,为微服务架构提供关键支持。

    spring-cloud-eureka 服务注册及发现实例

    在这个实例中,我们将探讨如何利用 Spring Cloud Eureka 实现服务注册与发现,以及相关的配置和实践。 首先,Spring Boot 是一个快速开发框架,它简化了创建独立、生产级别的基于 Spring 的应用程序。版本 2.1.10....

    spring-cloud-netflix-eureka-client-1.4.5.RELEASE.jar

    spring-cloud-netflix-eureka-client-1.4.5.RELEASE.jar

    Eureka服务注册与发现-示例代码

    Eureka是Spring Cloud Netflix框架中的一个关键组件,主要用于实现服务的注册与发现。...通过这两个项目,你可以更深入地理解Eureka的使用方法,以及如何在实际项目中集成Eureka来实现服务注册与发现。

    1-Eureka服务注册与发现以及Eureka集群搭建(实操型)

    在构建分布式系统时,服务注册与发现是至关重要的一个环节,Eureka作为Netflix开源的组件,专门用于实现这一功能。本文将深入探讨Eureka的基本概念、服务注册与发现的原理,以及如何搭建Eureka集群,以提升系统的...

    EureKa服务注册与发现.docx

    【EureKa服务注册与发现】详解 EureKa是Spring Cloud框架中的核心组件,它主要负责服务的注册与发现,使得微服务架构中的服务能够互相找到并进行通信。EureKa的设计理念遵循了可用性(Availability)优先于一致性...

    Python 编写的 eureka 客户端python-eureka-client-main

    在微服务架构中,服务治理是至关重要的一个环节,而Eureka是Spring Cloud生态中的关键组件,用于服务注册与发现。这个名为`python-eureka-client`的项目正是为了解决Python应用在Spring Cloud环境下如何与Eureka...

    Spring-Cloud 服务注册中心Eureka Server gradle

    工程结构 server 服务注册中心Eureka Server provider 服务发布者发布到server consumer 服务消费者从server处 单机host文件需要修改。 直接idea application启动

    SpringCloud——服务的注册与发现Eureka

    总结,SpringCloud-Eureka作为服务注册与发现的核心工具,帮助开发者轻松管理和协调微服务。通过理解Eureka的工作原理,正确配置和使用Eureka Server与Client,能够有效地提升微服务系统的稳定性和可扩展性。在实际...

    spring-cloud 注册中心eureka服务搭建

    总结,Spring Cloud Eureka提供了简单易用的服务注册与发现功能,使得微服务之间的通信变得更加便捷。通过搭建Eureka Server,服务提供者可以将自己的元数据信息注册到Eureka,而服务消费者则可以通过Eureka查找并...

Global site tag (gtag.js) - Google Analytics