SpringCloud之Netflix服务发现(Eureka)

前言

随着服务化编程思想的不断流行,越来越多的公司、企业、开发人员使用微服务技术。目前流行的两大微服务技术:dubbo\SpringCloud。这篇文章不会去对dubbo和SpringCloud进行对比,这篇文章我主要想介绍SpringCloud全家桶中的netflix组件,结合实际案例代码进行说明。也对我工作中使用SpringCloud进行总结。

NetFlix

netflix是收费视频网站公司的名字,全球十大视频网站之一,如果想了解的可自行Google。Spring Cloud Netflix是SpringCloud中的一个组件库,Spring Cloud Netflix通过自动配置和绑定到Spring环境和其他Spring编程模型习惯用法,为Spring Boot应用程序提供Netflix OSS集成。通过一些简单的注解,可以快速启用和配置应用程序内的常见模式,Netflix组件构建大型分布式系统。提供包括服务发现(Eureka)、熔断器(Hystrix)、智能路由(Zuul)和客户端负载均衡器(Ribbon)。

服务发现(Eureka)

服务发现(Eureka)是netflix的核心组件,它负责服务注册,管理服务列表。下面这幅图解释Eureka的职责:
SpringCloud之Netflix服务发现(Eureka)
所有服务都需要在Eureka-Server上进行注册登记,订单服务、产品服务、支付服务、用户服务都是Eureka管理的服务,需要它们进行上报,上报的信息包括ServiceId,节点地址,服务接口等,那么注册中心就会通过心跳检查去维护这份服务列表。接下来我们编写一个Eureka-Server、Product-Service模拟这种服务发现。

开发环境与工具:IDEA+JDK8+SpringBoot2.1.0
SpringCloud之Netflix服务发现(Eureka)
SpringCloud之Netflix服务发现(Eureka)
SpringCloud之Netflix服务发现(Eureka)
到这里就把项目创建起来了,但这个时候还只是一个SpringBoot的项目,需要开启EurekaServer注解。
SpringCloud之Netflix服务发现(Eureka)
同时我们把application.yml配置一下:
SpringCloud之Netflix服务发现(Eureka)
我们启动该项目,用浏览器打开管理台。
SpringCloud之Netflix服务发现(Eureka)
到这里,我们就已经把EurekaServer写完了,那么我们接下来就是写Product-Service.
在写之前我们先定一下提供的接口,list接口提供所以产品信息,find接口根据id查找商品信息。Product-Service,我们按照常规的模式进行编写分Controller、Service、Domain,过程如下:
SpringCloud之Netflix服务发现(Eureka)
SpringCloud之Netflix服务发现(Eureka)
SpringCloud之Netflix服务发现(Eureka)
SpringCloud之Netflix服务发现(Eureka)
商品domain类,包括id,名称,价格,库存。
SpringCloud之Netflix服务发现(Eureka)
SpringCloud之Netflix服务发现(Eureka)
到这里就已经写完了Product-Service.我们还需要配置application.yml,让这个服务自动注册到Eureka-Server去。
SpringCloud之Netflix服务发现(Eureka)

我们启动该Product-service。我们一共启动Product-Service的三个实例8771\8772\8773,然后我们进入到Eureka-Server查看。
SpringCloud之Netflix服务发现(Eureka)
这个时候我们就看到,Product-Service服务已经自动注册到这里来了,一共有三个节点,端口分别是8771,8772,8773.
SpringCloud之Netflix服务发现(Eureka)
接口也都可以使用。

备注:@EnableEurekaClient这个注解可以不用写的,因为我们SPRING INITIALIZR构建的项目IDE已经帮我们做好了很多工作,映入spring-cloud-starter-netflix-eureka-client,它就会自动去检查application.yml,我们在配置文件中已经配置了Eureka客户端相应的信息,那么这个应用就自动加上了@EnableEurekaClient。

猜你喜欢

转载自blog.51cto.com/4837471/2315338