spring cloud 使用Eureka 进行服务治理方法

2025-05-29 0 52

服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。

spring cloud eureka是spring cloud netflix 微服务套件的一部分,主要负责完成微服务架构中的服务治理功能。

本文通过简单的小例子来分享下如何通过eureka进行服务治理:

  1. 搭建服务注册中心
  2. 注册服务提供者
  3. 服务发现和消费

==========我是华丽的分割线========================

一、搭建服务注册中心

先列出完整目录结构:

spring cloud 使用Eureka 进行服务治理方法

搭建过程如下:

1.创建maven工程:eureka(具体实现略)

2.修改pom文件,引入依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
<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.sam</groupid>

<artifactid>eureka</artifactid>

<version>0.0.1-snapshot</version>

<parent>

<groupid>org.springframework.boot</groupid>

<artifactid>spring-boot-starter-parent</artifactid>

<version>1.5.1.release</version>

</parent>

<properties>

<javaversion>1.8</javaversion>

</properties>

<!-- 使用dependencymanagement进行版本管理 -->

<dependencymanagement>

<dependencies>

<dependency>

<groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-dependencies</artifactid>

<version>camden.sr6</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencymanagement>

<dependencies>

<!-- 引入eureka server依赖 -->

<dependency> <groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-starter-eureka-server</artifactid>

</dependency>

</dependencies>

</project>

3.创建启动类

?

1

2

3

4

5

6

7

8

9

10

11

12

13
/**

*

* @enableeurekaserver

* 用来指定该项目为eureka的服务注册中心

*/

@enableeurekaserver

@springbootapplication

public class eurekaapp {

public static void main(string[] args) {

springapplication.run(eurekaapp.class, args);

}

}

4.配置application.properties文件

?

1

2

3

4

5

6

7

8

9

10

11

12
#设置tomcat服务端口号

server.port=1111

#设置服务名称

spring.application.name=eureka-service

eureka.instance.hostname=localhost

#注册中心不需要注册自己

eureka.client.register-with-eureka=false

#注册中心不需要去发现服务

eureka.client.fetch-registry=false

#设置服务注册中心的url

eureka.client.serviceurl.defaultzone=http://${eureka.instance.hostname}:${server.port}/eureka

5.启动服务并访问,我们会看到这样的画面:

spring cloud 使用Eureka 进行服务治理方法

二、注册服务提供者

先列出完整目录结构:

spring cloud 使用Eureka 进行服务治理方法

搭建过程如下:

1.创建maven工程:hello-service(具体实现略)

2.修改pom文件,引入依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
<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.sam</groupid>

<artifactid>hello-service</artifactid>

<version>0.0.1-snapshot</version>

<parent>

<groupid>org.springframework.boot</groupid>

<artifactid>spring-boot-starter-parent</artifactid>

<version>1.5.1.release</version>

</parent>

<properties>

<javaversion>1.8</javaversion>

</properties>

<dependencymanagement>

<dependencies>

<dependency>

<groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-dependencies</artifactid>

<version>camden.sr6</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencymanagement>

<dependencies>

<!-- 引入eureka 客户端依赖 -->

<dependency>

<groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-starter-eureka</artifactid>

</dependency>

</dependencies>

</project>

3.创建启动类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
/***

*

* @enablediscoveryclient

* 让服务使用eureka服务器

* 实现服务注册和发现

*

*/

@enablediscoveryclient

@springbootapplication

public class helloapp {

public static void main(string[] args) {

springapplication.run(helloapp.class, args);

}

}

4.创建controller

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
@restcontroller

public class hellocontroller {

logger logger = loggerfactory.getlogger(hellocontroller.class);

@autowired

discoveryclient discoveryclient;

@requestmapping("/hello")

public string hello() {

serviceinstance instance = discoveryclient.getlocalserviceinstance();

//打印服务的服务id

logger.info("*********" + instance.getserviceid());

return "hello,this is hello-service";

}

}

5.配置application.properties文件

?

1

2

3

4

5
server.port=9090

#设置服务名

spring.application.name=hello-service

#设置服务注册中心的url,本服务要向该服务注册中心注册自己

eureka.client.serviceurl.defaultzone=http://localhost:1111/eureka

6.启动并测试

1.)启动后再hello-service的控制台会有这种字样(xxx代表你的pc名)

复制代码 代码如下:

registered instance hello-service/xxx:hello-service:9090 with status up (replication=false)

eureka的控制台会打印出如下字样(xxx代表你的pc名)

复制代码 代码如下:

registered instance hello-service/xxx:hello-service:9090 with status up (replication=false)

2.)再次访问localhost:1111,会发现有服务注册到注册中心了

spring cloud 使用Eureka 进行服务治理方法

三、服务发现和消费

完整目录结构如下:

spring cloud 使用Eureka 进行服务治理方法

搭建过程:

1.创建maven工程(具体实现略)

2.修改pom文件,引入依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44
<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.sam</groupid>

<artifactid>hello-consumer</artifactid>

<version>0.0.1-snapshot</version>

<parent>

<groupid>org.springframework.boot</groupid>

<artifactid>spring-boot-starter-parent</artifactid>

<version>1.5.1.release</version>

</parent>

<properties>

<javaversion>1.8</javaversion>

</properties>

<dependencymanagement>

<dependencies>

<dependency>

<groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-dependencies</artifactid>

<version>camden.sr6</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencymanagement>

<dependencies>

<!-- 引入eureka 客户端依赖 -->

<dependency>

<groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-starter-eureka</artifactid>

</dependency>

<!-- 引入ribbon 依赖 ,用来实现负载均衡,我们这里只是使用,先不作其他介绍-->

<dependency>

<groupid>org.springframework.cloud</groupid>

<artifactid>spring-cloud-starter-ribbon</artifactid>

</dependency>

</dependencies>

</project>

这里比hello-service服务提供者,多了ribbon的依赖

3.创建启动类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
@enablediscoveryclient

@springbootapplication

public class consumerapp {

//@bean 应用在方法上,用来将方法返回值设为为bean

@bean

@loadbalanced //@loadbalanced实现负载均衡

public resttemplate resttemplate() {

return new resttemplate();

}

public static void main(string[] args) {

springapplication.run(consumerapp.class, args);

}

}

这里也要用到@enablediscoveryclient, 让服务使用eureka服务器, 实现服务注册和发现

4.创建controller

?

1

2

3

4

5

6

7

8

9

10

11

12
@restcontroller

public class consumercontroller {

//这里注入的resttemplate就是在com.sam.consumerapp中通过@bean配置的实例

@autowired

resttemplate resttemplate;

@requestmapping("/hello-consumer")

public string helloconsumer() {

//调用hello-service服务,注意这里用的是服务名,而不是具体的ip+port

resttemplate.getforobject("http://hello-service/hello", string.class);

return "hello consumer finish !!!";

}

}

5.配置application.properties文件

?

1

2

3

4
server.port=9999

spring.application.name=hello-consumer

eureka.client.serviceurl.defaultzone=http://localhost:1111/eureka

#这里的配置项目和服务提供者hello-service一样

6.启动,测试1.)启动eureka。为了展示负责均衡的效果,我们的hello-service启动两个服务,启动两个服务的具体步骤如下

spring cloud 使用Eureka 进行服务治理方法

spring cloud 使用Eureka 进行服务治理方法

spring cloud 使用Eureka 进行服务治理方法

spring cloud 使用Eureka 进行服务治理方法

以上是hello-service1的启动步骤,端口号为9090;同样方法设置hello-service2,端口号为9091(具体实现略)。

2.)启动hello-consumer

3.)再次访问http://localhost:1111/,会发现有2个hello-service服务(端口号一个是9090,一个是9091),1个hello-consume服务

4.) 多次访问http://localhost:9999/hello-consumer,会发现hello-service1和hello-service2会轮流被调用(已经实现了负责均衡),可以通过两者的控制台打印内容确认(还记得我们在hello-service的controller中有个loggerlogger.info("*********" + instance.getserviceid());吗?对,就是这个打印)

spring cloud 使用Eureka 进行服务治理方法

spring cloud 使用Eureka 进行服务治理方法

spring cloud 使用Eureka 进行服务治理方法

spring cloud 使用Eureka 进行服务治理方法

四、总结

以上实例实现了基本的服务治理:

  1. 通过spring-cloud-starter-eureka-server和@enableeurekaserver实现服务注册中心
  2. 通过spring-cloud-starter-eureka和@enablediscoveryclient使用并注册到服务注册中心
  3. 通过spring-cloud-starter-eureka和@enablediscoveryclient使用注册中心并发现服务,通过spring-cloud-starter-ribbon来实现负载均衡消费服务

ps:这里说明下,我用的ide是spring tool suite,是spring定制版的eclipse,方便我们使用spring进行开发,有兴趣的朋友可以自行百度了解下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.cnblogs.com/sam-uncle/p/8954401.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 spring cloud 使用Eureka 进行服务治理方法 https://www.kuaiidc.com/111660.html

相关文章

发表评论
暂无评论