博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eureka服务发现---SpringCloud(一)
阅读量:6569 次
发布时间:2019-06-24

本文共 12691 字,大约阅读时间需要 42 分钟。

hot3.png

Eureka服务发现

(一)前言

服务治理是微服务架构中最为核心的基础模块,主要用来实现各个微服务实例的自动化注册和发现;    在微服务最开始的时候,服务并不多,我们可以通过静态配置来完成服务间的调用;若A服务调用B服务,对B服务做了HA,我们可以手动维护一份B实例的清单,当B服务某些实例不可用,还可以手动去清除部分不可用的实例;但随着业务的发展,需要维护的B实例越来越多,系统功能也越来越复杂,维护难度可想而知;而且相同服务不同实例很可能会命名冲突,配置冲突等,如port;    因此我们需要一个服务治理框架和产品,来对不同服务的多个实例进行自动化的维护;    目前服务治理框架有Netflix的Eureka,alibaba的Dubbo等,这些框架的实现都围绕着服务注册与服务发现机制来完成对微服务应用实例的自动化管理;

(二)搭建服务注册中心

我们使用project-module的形式创建项目; 我们创建一个CloudServer的项目,

4.0.0
com.river
CloudServer
pom
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
1.5.2.RELEASE
UTF-8
UTF-8
1.8
2.2.2
io.springfox
springfox-swagger2
${swaggger2.version}
io.springfox
springfox-swagger-ui
${swaggger2.version}
org.springframework.cloud
spring-cloud-dependencies
Dalston.RC1
pom
import
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-maven-plugin

下面我们添加一个EurekaServer的module模块,作为Eureka注册中心;

CloudServer
com.river
1.0-SNAPSHOT
4.0.0
EurekaServer
org.springframework.cloud
spring-cloud-starter-eureka-server
org.springframework.boot
spring-boot-starter-test
test

配置文件application.yaml

server:      port: 8761 #端口号    eureka:      instance:        hostname: localhost        home-page-url: swagger-ui.html      client:        register-with-eureka: false  #是否向注册中心注册,这里由于自己就是注册中心,因此为false;        fetch-registry: false        #检索服务,由于自己在维护服务实例,因此无需检索服务,故false;        service-url:          defaultZone: http://localhost:8761/eureka/        server:        enable-self-preservation: false    spring:      application:        name: eureka-server  #应用名

此时添加springboot启动类

package com.river.eureka.server;       import org.springframework.boot.SpringApplication;       import org.springframework.boot.autoconfigure.SpringBootApplication;       import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;       @EnableEurekaServer //启动一个服务注册中心,与其他服务进行对话;       @SpringBootApplication       public class EurekaServerApplication {           public static void main(String[] args) {               SpringApplication.run(EurekaServerApplication.class,args);           }       }

此时我们启动启动类,然后访问localhost:8761,会看到Eureka服务实例列表页,但是在Instances一栏为空,因为我们没有服务实例注册在Eureka上;

(三)客户端

我们在新建一个名字为ApplicationClientOne的module;

CloudServer
com.river
1.0-SNAPSHOT
4.0.0
ApplicationClientOne
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-eureka

配置application.yaml;

server:      port: 9001   eureka:      client:        service-url:          defaultZone: http://localhost:8761/eureka/          register-with-eureka: true          fetch-registry: true   spring:     application:       name: applicationClient

添加启动类:

package com.river.application.one;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@EnableEurekaClient   //说明这是一个客户端,与@EnableDiscoveryClient注解作用相同@SpringBootApplicationpublic class ApplicationClientOne {    public static void main(String[] args) {        SpringApplication.run(ApplicationClientOne.class,args);    }}

说明: @EnableEurekaClient: @EnableDiscoveryClient: 在springcloud中的服务治理discovery service可以有多种实现(eureka,consul,zookeeper等),后者来自于spring-cloud-commons包,可以支持不同的服务治理插件; 而前者来自于eureka,只支持eureka;

启动客户端项目,查看日志可以发现:

2018-07-31 10:40:40.558  INFO 11296 --- [nio-8761-exec-2] c.n.e.registry.AbstractInstanceRegistry  : Registered instance APPLICATIONCLIENT/PC-HEPENGFEI.ppmoney.com:applicationClient:9001 with status UP (replication=false)

在Eureka的服务实例列表中可以看到我们的这个实例;

#Eureka服务发现

(一)前言

服务治理是微服务架构中最为核心的基础模块,主要用来实现各个微服务实例的自动化注册和发现;    在微服务最开始的时候,服务并不多,我们可以通过静态配置来完成服务间的调用;若A服务调用B服务,对B服务做了HA,我们可以手动维护一份B实例的清单,当B服务某些实例不可用,还可以手动去清除部分不可用的实例;但随着业务的发展,需要维护的B实例越来越多,系统功能也越来越复杂,维护难度可想而知;而且相同服务不同实例很可能会命名冲突,配置冲突等,如port;    因此我们需要一个服务治理框架和产品,来对不同服务的多个实例进行自动化的维护;    目前服务治理框架有Netflix的Eureka,alibaba的Dubbo等,这些框架的实现都围绕着服务注册与服务发现机制来完成对微服务应用实例的自动化管理;

(二)搭建服务注册中心

我们使用project-module的形式创建项目; 我们创建一个CloudServer的项目,

4.0.0
com.river
CloudServer
pom
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
1.5.2.RELEASE
UTF-8
UTF-8
1.8
2.2.2
io.springfox
springfox-swagger2
${swaggger2.version}
io.springfox
springfox-swagger-ui
${swaggger2.version}
org.springframework.cloud
spring-cloud-dependencies
Dalston.RC1
pom
import
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-maven-plugin

下面我们添加一个EurekaServer的module模块,作为Eureka注册中心;

CloudServer
com.river
1.0-SNAPSHOT
4.0.0
EurekaServer
org.springframework.cloud
spring-cloud-starter-eureka-server
org.springframework.boot
spring-boot-starter-test
test

配置文件application.yaml

server:      port: 8761 #端口号    eureka:      instance:        hostname: localhost        home-page-url: swagger-ui.html      client:        register-with-eureka: false  #是否向注册中心注册,这里由于自己就是注册中心,因此为false;        fetch-registry: false        #检索服务,由于自己在维护服务实例,因此无需检索服务,故false;        service-url:          defaultZone: http://localhost:8761/eureka/        server:        enable-self-preservation: false    spring:      application:        name: eureka-server  #应用名

此时添加springboot启动类

package com.river.eureka.server;       import org.springframework.boot.SpringApplication;       import org.springframework.boot.autoconfigure.SpringBootApplication;       import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;       @EnableEurekaServer //启动一个服务注册中心,与其他服务进行对话;       @SpringBootApplication       public class EurekaServerApplication {           public static void main(String[] args) {               SpringApplication.run(EurekaServerApplication.class,args);           }       }

此时我们启动启动类,然后访问localhost:8761,会看到Eureka服务实例列表页,但是在Instances一栏为空,因为我们没有服务实例注册在Eureka上;

(三)客户端

我们在新建一个名字为ApplicationClientOne的module;

CloudServer
com.river
1.0-SNAPSHOT
4.0.0
ApplicationClientOne
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-eureka

配置application.yaml;

server:      port: 9001   eureka:      client:        service-url:          defaultZone: http://localhost:8761/eureka/          register-with-eureka: true          fetch-registry: true   spring:     application:       name: applicationClient

添加启动类:

package com.river.application.one;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@EnableEurekaClient   //说明这是一个客户端,与@EnableDiscoveryClient注解作用相同@SpringBootApplicationpublic class ApplicationClientOne {    public static void main(String[] args) {        SpringApplication.run(ApplicationClientOne.class,args);    }}

说明: @EnableEurekaClient:

@EnableDiscoveryClient:

在springcloud中的服务治理discovery service可以有多种实现(eureka,consul,zookeeper等),后者来自于spring-cloud-commons包,可以支持不同的服务治理插件; 而前者来自于eureka,只支持eureka;

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@EnableDiscoveryClientpublic @interface EnableEurekaClient {}

启动客户端项目,查看日志可以发现:

2018-07-31 10:40:40.558  INFO 11296 --- [nio-8761-exec-2] c.n.e.registry.AbstractInstanceRegistry  : Registered instance APPLICATIONCLIENT/PC-HEPENGFEI.ppmoney.com:applicationClient:9001 with status UP (replication=false)

在Eureka的服务实例列表中可以看到我们的这个实例;

转载于:https://my.oschina.net/JackieRiver/blog/1920060

你可能感兴趣的文章
作为数据科学家,我都有哪些弱点
查看>>
(转)线程安全的CopyOnWriteArrayList介绍
查看>>
中交兴路完成7亿元A轮融资,携手蚂蚁金服共建小微物流科技服务生态
查看>>
对LinqtoExcel的扩展 【数据有限性,逻辑有效性】
查看>>
WPF TreeView HierarchicalDataTemplate
查看>>
32岁老程序员的现状和尴尬,无奈中透露些许悲凉,有选择却更痛苦
查看>>
WPF MeshGeometry3D
查看>>
puppet cron 模块
查看>>
mysql 协议的ResultsetRow包及解析
查看>>
Ymal格式转Properties格式
查看>>
一个生成全局唯一Sequence ID的高并发工厂类 (Java)
查看>>
调优之系统篇--cpu,内存
查看>>
解决jQuery和其它库的冲突
查看>>
写在除夕夜
查看>>
JAVA中的list去重复
查看>>
记录:开始整合以前的微信预约与内部系统,进行一体化管理。
查看>>
对于shell脚本获取参数的一些小技巧
查看>>
oracle 更改ip
查看>>
Android 事件分发 简单学
查看>>
JAVA 代码里中文乱码问题
查看>>