gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章spring cloud 使用Eureka 进行服务治理方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

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

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

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

1、搭建服务注册中心 。

先列出完整目录结构:

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 进行服务治理方法

2、注册服务提供者 。

先列出完整目录结构:

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 进行服务治理方法

3、服务发现和消费 。

完整目录结构如下:

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 进行服务治理方法

4、总结 。

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

  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进行开发,有兴趣的朋友可以自行百度了解下.

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

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

最后此篇关于spring cloud 使用Eureka 进行服务治理方法的文章就讲到这里了,如果你想了解更多关于spring cloud 使用Eureka 进行服务治理方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com