`

Spring Cloud Eureka 入门 (二)服务提供者详解

阅读更多
原文链接:http://click.aliyun.com/m/25663/
摘要: 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!  “优秀不是过去是一种心态”  「Spring Cloud Eureka 入门系列」Spring Cloud Eureka 入门 (一)服务注册中心详解Spring Cloud Eur



“优秀不是过去是一种心态”


「Spring Cloud Eureka 入门系列」
Spring Cloud Eureka 入门 (一)服务注册中心详解
Spring Cloud Eureka 入门 (二)服务提供者详解
Spring Cloud Eureka 入门 (三)服务消费者详解

本文提纲
1. springcloud-eureka-sample 工程结构
2. 运行 springcloud-eureka-client-provider 服务提供者工程
3. 详解 springcloud-eureka-client-provider 服务提供者工程

一、springcloud-eureka-sample 工程结构
接着上一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》,我们成功运行了 Spring Cloud Eureka Server 工程作为服务注册中心工程。这小节,我们写一个作为客户端的服务提供者工程,服务提供者向服务中心注册或者下线服务实例。即图中的右侧 1 ,2 流程:

Eureka集群.jpeg


springcloud-eureka-sample 工程结构
├── springcloud-eureka-client-customer
├── springcloud-eureka-client-provider
└── springcloud-eureka-server

上面依次是 服务消费者工程、服务提供者工程和服务注册中心工程。

二、运行 springcloud-eureka-client-provider 服务提供者工程
运行环境:JDK 7 或 8,Maven 3.0+
技术栈:Spring Cloud Dalston.SR1、 spring-cloud-netflix 1.3.1、Spring Boot 1.5.4

自然,我们先得去上一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》 ,把注册中心工程启动完毕。

1. git clone 下载工程 springcloud-learning-example
项目地址见 GitHub - https://github.com/JeffLi1993/ ... ample:
git clone https://github.com/JeffLi1993/ ... e.git

2. Maven 编译安装这个工程:
cd springcloud-learning-example
mvn clean install

3. 运行 Eureka 工程 springcloud-eureka-client-provider
启动 springcloud-eureka-client-provider 工程启动类 ProviderApplication,启动服务注册中心工程。
EurekaServerApplication 类路径:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-client-provider/src/main/java/org/spring/springcloud/ProviderApplication.java

控制台 Console 看到这类信息,代表启动成功:
2017-07-10 16:03:15.075  INFO 11020 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application provider-service with eureka with status UP
2017-07-10 16:03:15.075  INFO 11020 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1499673795075, current=UP, previous=STARTING]
2017-07-10 16:03:15.079  INFO 11020 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_PROVIDER-SERVICE/10.18.29.31:provider-service:8080: registering service...
2017-07-10 16:03:15.126  INFO 11020 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_PROVIDER-SERVICE/10.18.29.31:provider-service:8080 - registration status: 204
2017-07-10 16:03:15.183  INFO 11020 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-07-10 16:03:15.185  INFO 11020 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8080
2017-07-10 16:03:15.191  INFO 11020 --- [           main] o.s.springcloud.ProviderApplication      : Started ProviderApplication in 9.809 seconds (JVM running for 10.981)

可以看出,注册了应用名为 provider-service 的应用,该服务提供者的工程端口为 8080

4. 访问 Eureka 注册中心可视化界面
打开浏览器,访问 http://localhost:8888/ ,如图所示:

WechatIMG442.jpeg

可以看到,服务提供者向服务注册中心注册自己的实例,展示了应用名和端口信息等。

三、详解 springcloud-eureka-client-provider 服务提供者工程
1.springcloud-eureka-server  工程目录结构
├── pom.xml
└── src
    └── main
        ├── java
        │   └── org
        │       └── spring
        │           ├── springcloud
        │           │    └──  ProviderApplication.java
        │           └── web
        │                └──  ProviderController.java
        └── resources
            └── application.yml

ProviderApplication.java Eureka Client 启动类,启动服务提供者工程
ProviderApplication.java Provider HelloWorld 案例
application.yml 配置文件

2. 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/ma ... gt%3B
    <modelVersion>4.0.0</modelVersion>
    <groupId>springcloud</groupId>
    <artifactId>springcloud-eureka-client-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-eureka-client-provider :: 服务提供者</name>
    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>
    <dependencies>
        <!-- Spring Cloud Netflix Eureka Client 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!-- Spring Boot Test 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <!-- Spring Cloud Netflix 依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-netflix</artifactId>
                <version>1.3.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

使用的依赖是
- spring-cloud-netflix 1.3.1 是 Spring Cloud Dalston.SR1 版本。
- spring-cloud-starter-eureka Eureka Client 模块依赖,包含了客户端 client 的依赖,还有 Ribbon 的依赖,如:org.springframework.cloud:spring-cloud-netflix-eureka-client:1.3.1.RELEASE
org.springframework.cloud:spring-cloud-starter-ribbon:1.3.1.RELEASE


3. application.yml 配置
server:
  port: 8080 # 服务端口
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka/ # 服务注册中心地址
spring:
  application:
    name: provider-service # 服务名称
- server.port 设置工程服务端口
- eureka.client.service-url.defaultZone 设置服务注册中心地址

4.注册中心应用启动类
/**
* Spring Boot Eureka Server 应用启动类
*
* Created by bysocket on 21/06/17.
*/
@EnableEurekaClient     // Eureka Client 标识
@SpringBootApplication  // Spring Boot 应用标识
public class ProviderApplication {
    public static void main(String args) {
        // 程序启动入口
        // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
        SpringApplication.run(ProviderApplication.class,args);
    }
}
@EnableEurekaClient 标志该应用作为 Eureka Client ,并会自动化读取 Eureka 相关配置。

6.服务提供者 Hello World 案例
/**
* Provider HelloWorld 案例
* <p>
* Created by bysocket on 06/22/17.
*/
@RestController
public class ProviderController {
    private static final Logger LOGGER = LoggerFactory.getLogger(ProviderController.class);
    @Autowired
    private Registration registration;       // 服务注册
    @Autowired
    private DiscoveryClient discoveryClient; // 服务发现客户端
    @RequestMapping("/provider")
    public String provider() {
        ServiceInstance instance = serviceInstance();
        LOGGER.info("provider service, host = " + instance.getHost()
                + ", service_id = " + instance.getServiceId());
        return "Hello,Provider!";
    }
    /**
     * 获取当前服务的服务实例
     *
     * @return ServiceInstance
     */
    public ServiceInstance serviceInstance() {
        List<ServiceInstance> list = discoveryClient.getInstances(registration.getServiceId());
        if (list != null && list.size() > 0) {
            return list.get(0);
        }
        return null;
    }
}
可以看到注入了 Registration 和 DiscoveryClient 两个对象:
- Registration 服务注册接口,包含了获取服务 ID 的方法。
- DiscoveryClient 服务发现客户端,具有以下方法:
     - String description(); 获取描述
     - ServiceInstance getLocalServiceInstance(); @Deprecated 方法被删除,推荐不要使用。获取本地服务实例
     - List<ServiceInstance> getInstances(String serviceId);  通过服务 ID,获取当前服务的服务实例
     - List<String> getServices(); 获取所有服务 ID 列表

四、小结
此小章节介绍了如何 Eureka 作为服务提供者,并向服务注册中心注册自己实例。 下一小结讲下 服务消费者详解 具体是如何向服务注册中心注册自己,发现其他服务,并调用其他服务的。系列目录如下:
Spring Cloud Eureka 入门 (一)服务注册中心详解
Spring Cloud Eureka 入门 (二)服务提供者详解
Spring Cloud Eureka 入门 (三)服务消费者详解

资料:
1.《Spring Cloud微服务实战》
原文链接:http://click.aliyun.com/m/25663/
分享到:
评论

相关推荐

    springcloud注册中心Eureka集群示例代码.zip

    服务提供者(如 springcloud-member 和 springcloud-order)向 Eureka 注册自己的服务,而服务消费者则可以通过 Eureka 获取到可用的服务实例列表进行调用。 1. **Eureka 集群搭建**: 在这个示例中,我们有 `...

    Spring Cloud Eureka 服务端demo 可用maven

    **Spring Cloud Eureka 服务端详解** 在微服务架构中,服务发现是核心组件之一,它使得服务之间能够互相找到并进行通信。Spring Cloud Eureka 就是这样一个服务注册与发现的工具,它是Netflix Eureka 的Spring Boot...

    Spring Cloud Eureka 常用配置解析.doc

    #### 二、Spring Cloud Eureka 配置项详解 ##### 2.1 通用配置 1. **spring.application.name**: 定义应用的名称,这个名称会显示在 Eureka 的管理界面上的应用列表中。例如: ```properties spring.application...

    Spring Cloud Eureka Server与Client的创建.docx

    配置Spring Boot和Spring Cloud的版本,如示例中的SpringBoot 2.0.0.M3和SpringCloud Finchley.M2。 3. 配置服务器的启动类,通常通过`@EnableEurekaServer`注解启用Eureka Server功能。 - 创建Eureka Client: 1...

    eureka-server Springcloud 服务注册

    总结,Spring Cloud Eureka Server是微服务架构中不可或缺的一部分,它简化了服务之间的交互,提供了稳定可靠的服务注册与发现机制。理解和熟练使用Eureka,对于构建高可用的分布式系统至关重要。

    4.Spring Cloud服务管理框架Eureka项目集群

    **Spring Cloud Eureka服务管理框架集群详解** Spring Cloud Eureka是Netflix公司开发的服务发现框架,它简化了微服务之间的通信,使得服务能够自动注册和发现。在单机模式下,Eureka服务器可以作为服务注册中心,...

    springboot-springcloud.rar

    SpringCloud作为一套微服务解决方案,提供了丰富的工具集,其中包括Eureka,它是Netflix开发的服务注册与发现组件。本文将深入探讨如何在SpringBoot项目中集成SpringCloud Eureka,实现服务的注册与发现。 首先,...

    spring_cloud_demo_eureka.7z

    3. **创建服务消费者**:服务消费者的创建与服务提供者类似,也需要`spring-cloud-starter-netflix-eureka-client`依赖,但还需要添加`spring-cloud-starter-openfeign`(或使用Ribbon进行服务调用)来消费其他服务...

    Spring Cloud应用程序.zip

    《Spring Cloud应用程序详解》 Spring Cloud作为微服务架构的重要组件,提供了一系列的工具和服务,使得开发者可以快速构建出分布式的系统。本篇文章将深入探讨在"Spring Cloud应用程序.zip"中包含的关键技术点,...

    spring cloud eureka微服务之间的调用详解

    Spring Cloud Eureka 是一个基于 REST 的服务发现框架,它提供了服务注册和服务发现的功能,使得微服务之间可以相互调用。在本文中,我们将详细介绍 Spring Cloud Eureka 微服务之间的调用详解。 服务注册 在 ...

    Spring boot,springCloud精选视频教程

    24.Spring Cloud Config服务端配置细节(二)之加密解密 25.Spring Cloud Config客户端配置细节 26.Spring Cloud Bus之RabbitMQ初窥 27.Spring Cloud Bus整合RabbitMQ 28.Spring Cloud Bus整合Kafka 29.Spring ...

    SpringCloud面试题及答案.pdf

    Dubbo自身并未提供服务网关组件,而SpringCloud内置了Zuul作为服务网关,同时还支持断路器、分布式配置文件等功能。 - **社区活跃度** SpringCloud的社区活跃度远高于Dubbo。尽管Dubbo在国内应用广泛且文档质量...

    SpringCloud Eureka的高可用.docx

    **SpringCloud Eureka的高可用性详解** 在微服务架构中,服务发现是核心组件之一,Spring Cloud Eureka 是一个非常流行的实现。Eureka 作为服务注册与发现的工具,其高可用性对于整个系统的稳定性至关重要。为了...

    59道SpringCloud面试题详解含答案(值得珍藏)

    7. **SpringCloud主要组件**:包括SpringCloud Eureka(服务注册与发现)、SpringCloud Zuul(服务网关)、SpringCloud Ribbon(客户端负载均衡)、SpringCloud Feign(声明式Web服务客户端)、SpringCloud Hystrix...

    spring cloud尚硅谷 百度云.rar

    《Spring Cloud尚硅谷详解》 在当今的互联网行业中,分布式系统和微服务架构已经成为主流,Spring Cloud作为一款强大的微服务治理框架,深受开发者喜爱。尚硅谷是一家知名的IT教育机构,他们推出的Spring Cloud教程...

    SpringCloud+eureka+gateway+jwt.zip

    《SpringCloud、Eureka、Gateway与JWT整合详解》 在微服务架构中,SpringCloud作为主流的Java微服务框架,提供了丰富的组件来帮助开发者构建分布式系统。本篇将深入探讨SpringCloud中的Eureka服务发现、GatewayAPI...

    详解springcloud之服务注册与发现

    服务消费者(Consumer)通过Eureka服务中心来查找并消费服务提供者的服务。同样,服务消费者也需要引入`spring-cloud-starter-eureka`依赖。消费者通过`@Autowired`注入`@LoadBalanced`修饰的`RestTemplate`或使用`...

    SpringCloud的Eureka的客户端和服务端的简单搭建

    在SpringCloud生态系统中,Eureka是一个关键组件,用于实现服务注册与发现。Eureka通过将服务实例注册到中心节点(Eureka Server),使得其他服务能够通过Eureka Server找到这些服务,实现了微服务间的通信。本教程...

    springcloud微服务技术栈-个人笔记文档(基础篇)

    1. **Eureka**:Eureka 是 SpringCloud 中的服务注册与发现组件,它允许服务提供者注册自身服务,并让服务消费者通过服务名查找服务实例。服务提供者定期向 Eureka Server 发送心跳,确保服务的可用性。当 Eureka ...

    SpringCloud黑马商城后端代码

    《SpringCloud黑马商城后端代码详解》 在现代互联网应用开发中,微服务架构成为了一种主流设计模式,Spring Cloud作为Java领域的微服务治理框架,因其强大的功能和易用性,受到了广大开发者们的青睐。本篇文章将...

Global site tag (gtag.js) - Google Analytics