资讯专栏INFORMATION COLUMN

一起学习使用Spring Cloud Netflix之Eureka

李义 / 1245人阅读

摘要:笔者也是初学者,本文从创建项目工程开始,一步一步开始讲解如何创建服务端和客户端,一起学习,共同进步。下面我们使用工具创建相关项目。配置其中两个属性表明这个应用是端,而不是端。至此,端和端已经部署成功。

前言

spring cloud为互联企业构建微服务提供了一整套的技术组件,其中Eureka是Spring Cloud体系中的核心。Netfix不是一个技术概念,它原本是国外一个视频网站的名称。这个视频网站的技术团队在微服务方向做了大量实践,并提供了很多的技术组件,Eureka就是其中之一。笔者也是Spring Cloud初学者,本文从创建项目工程开始,一步一步开始讲解如何创建eureka服务端和客户端,一起学习,共同进步。

本文来源于我的技术博客:http://51think.net

一、什么是eureka

我们经常看到一些互联网企业在描述其技术架构时会使用到Eureka一词,也听说过Eureka用于服务注册发现,并不清楚它是如何整合到应用层的。从代码结构上来看,Eureka就是一个大jar包集合,maven引入这个jar包集合,并在应用层做简单配置即可实现服务发现功能。也就是说,Spring Cloud已经将相关功能封装的很好了,直接引用就行了,这也符合各种流行框架的宗旨,最大程度的降低非业务性的工作量,让程序员更加专注实现自己的业务功能。Eureka这个组件是不能多带带运行的,需要以Springboot作为应用载体,真正的部署到虚机上面才能运行。

二、创建Eureka注册中心

注册中心,顾名思义,类似于zookeeper一样,提供服务注册发现功能,即服务端的服务地址通过注册中心全部暴露给客户端,由客户端实现负载均衡。下面我们使用idea工具创建相关项目。
1、创建一个maven主工程
2、在主工程下创建一个model,本例中命名为spring-cloud-eureka

3、填写Group和Artifact

4、勾选Eureka Server

5、创建完成之后的pom文件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.example
    spring-cloud-eureka
    0.0.1-SNAPSHOT
    spring-cloud-eureka
    Demo project for Spring Boot

    
        1.8
        Greenwich.SR2
    

    
        
            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
            
        
    

pom文件中只有一个关键的spring-cloud-starter-netflix-eureka-server包,其实这个包下面依赖了很多子包,如下图:

6、找到Springboot的启动类,加上@EnableEurekaServer注解
@EnableEurekaServer代表这个springboot应用是一个注册中心。

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

}

7、配置application.yml

server:
  port: 8010

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

其中两个属性registerWithEureka: false fetchRegistry: false表明这个应用是Eureka Server端,而不是Client端。defaultZone用来申明这个注册中心的地址,后面创建Eureka Client端时也要申明这个地址,以便向注册中心注册。

三、创建一个服务生产者应用

这里我们要创建一个springboot应用作为服务的生产者,并且能够将服务注册到注册中心。对于整个系统而言,我们创建的是一个服务端应用供客户端调用,对于Eureka注册中心而言,除了注册中心是Server角色,其他都是Eureka Client角色。具体过程如下:
1、创建model过程与创建Eureka Server类似,名称为spring-cloud-eureka-myservice
2、pom文件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.example
    spring-cloud-eureka-myservice
    0.0.1-SNAPSHOT
    spring-cloud-eureka-myservice
    Demo project for Spring Boot

    
        1.8
        Greenwich.SR2
    

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


大家可以比较一下这个pom文件与之前的pom文件的差别,spring-cloud-starter-netflix-eureka-clien组件和之前注册中心pom文件中的spring-cloud-starter-netflix-eureka-server相对应。spring-boot-starter-web组件用来提供web访问能力,我们可以通过浏览器来访问后台服务。
3、使用@EnableEurekaClient来标注自己的身份

@EnableEurekaClient
@SpringBootApplication
public class MyServiceApplication {

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

}

4、配置application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8010/eureka/
server:
  port: 8011
spring:
  application:
    name: myservice

这个配置项spring.application.name很重要,表明这个应用在微服务架构中的应用名称,后面的案例中我们可以通过这个名称来访问这个服务。

5、启动注册中心应用spring-cloud-eureka
6、启动服务生产者应用spring-cloud-eureka-myservice
7、访问Eureka面板
Eureka提供一个web访问页面,通过这个页面我们可以看到已注册的服务列表以及注册中心应用的状态。浏览器访问http://localhost:8010,会展现如下页面:

红框标注的部分即我们刚刚启动的spring-cloud-eureka-myservice应用,服务名称为myservice。
至此,Eureka Server端和Client端已经部署成功。

源码地址:https://github.com/huangyubia...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75605.html

相关文章

  • 一起学习使用Spring Cloud NetflixRibbon

    摘要:本例中介绍如何使用来完成服务调用并实现负载均衡。即,对于注册中心而言,生产者和调用者都是端。文件配置如下在文件中,我们将应用命名为,端口为,表示注册中心地址。 前言 Ribbon是Spring Cloud体系中完成负载均衡的重要组件。Spring Cloud体系中有两种完成服务调用的组件,一种是Ribbon+RestTemplate,另一种Feign。Feign默认使用的也是Ribbo...

    nidaye 评论0 收藏0
  • 一起学习使用Spring Cloud NetflixZuul

    摘要:前言在体系中扮演着统一网关的角色,负责与外部交互。与结合使用,可以根据服务名来访问后端的服务,对于而言,也是一个。这段代码表示,如果请求中没有信息,就会报错。 前言 Zuul在Spring Cloud 体系中扮演着统一网关的角色,负责与外部交互。用户可以通过不同的URL特征来访问不同的后端服务,类似于Nginx代理的效果。Zuul与Eureka结合使用,可以根据服务名来访问后端的服务,...

    FullStackDeveloper 评论0 收藏0
  • [Spring cloud 一步步实现广告系统] 7. 中期总结回顾

    摘要:在前面的过程中,我们创建了个服务发现我们使用作为服务发现组件,学习了的使用。加依赖加注解改配置使用项目三部曲,我们可以快速添加一个新组件,并正常使用这个我没有在项目中实现,但是大家可以和一样,三部曲搞定。 在前面的过程中,我们创建了4个project: 服务发现 我们使用Eureka 作为服务发现组件,学习了Eureka Server,Eureka Client的使用。 Eureka...

    cnsworder 评论0 收藏0
  • 8、服务发现&服务消费者Feign

    摘要:公众号乐园的中提供了两个组件实现软负载均衡调用,分别是和。是基于和的客户端负载工具,它是基于实现的,它可以在客户端配置服务端列表,然后轮询请求以实现均衡负载。 公众号:java乐园 spring cloud的Netflix中提供了两个组件实现软负载均衡调用,分别是Ribbon和Feign。上一篇和大家一起学习了Ribbon。Ribbon :Spring Cloud Ribbon是基于H...

    lpjustdoit 评论0 收藏0
  • Spring Cloud 参考文档(客户端负载均衡器:Ribbon)

    摘要:客户端负载均衡器是一个客户端负载均衡器,可以让你对和客户端的行为进行大量控制,已经使用了,因此,如果你使用,此部分也适用。 客户端负载均衡器:Ribbon Ribbon是一个客户端负载均衡器,可以让你对HTTP和TCP客户端的行为进行大量控制,Feign已经使用了Ribbon,因此,如果你使用@FeignClient,此部分也适用。 Ribbon中的一个核心概念是命名客户端,每个负载均...

    Songlcy 评论0 收藏0

发表评论

0条评论

李义

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<