spring cloud-eureka

本文介绍Spring Cloud中的Eureka服务注册中心的搭建与使用过程,包括创建Eureka Server、注册服务及实现服务调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学spring cloud,闲来无事,更新一波,今天说一下spring cloud中的eureka注册中心
首先了解一下spring cloud是什么?
spring cloud是一系列框架的集合。他利用spring boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等都可以用spring boot风格一键启动和部署。spring cloud并没有重复制造轮子,他只是将目前各公司开发比较成熟的服务框架组合起来,通过spring boot风格包装屏蔽掉复杂的配置和实现原理,最终给开发者留下一套简单部署,通俗易懂,容易维护的分布式系统开发工具包。以上是百度的解释,我直接拿过来。希望大家不要见怪 哈哈哈!

我们来了解一下spring cloud的组成。
Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用。
Spring Cloud Netflix:是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
Spring Cloud Config:将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件
Spring Cloud Bus:分布式消息队列,是对Kafka, MQ的封装
Spring Cloud Security:对Spring Security的封装,并能配合Netflix使用
Spring Cloud Zookeeper:对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用
Spring Cloud Eureka:Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
今天我就来说一说eureka。话不多说直接上代码
首先准备好开发工具 jdk版本。
我用的是IDEA,jdk建议1.8以上
1.首先创建一个maven工程 名称叫eureka
pom.xml

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<java.version>1.8</java.version>

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Dalston.SR5</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency>
</dependencies>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-autoconfigure</artifactId>
  <version>1.5.19.RELEASE</version>
</dependency>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>

  </plugins>
</pluginManagement>
以上依赖是我全部依赖: org.springframework.cloud spring-cloud-starter-eureka-server 是开启eureka的重点依赖。

然后在resources目录下新建application.properties或者application.yml,两者任选其一,我用的是application.properties
server.port=9200
spring.application.name=server
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.service-url.defaultZone=http://localhost:9200/eureka/

接着在java目录下创建一个启动类App,代码如下
@SpringBootApplication
@EnableEurekaServer
public class App {
public static void main(String [] args){
SpringApplication.run(App.class,args);
}
}
@EnableEurekaServer这个注解是开启eureka
这样注册中心就可以了
访问http://localhost:9200/就可以了,界面如下
在这里插入图片描述
图下的application那里由于没有服务注册,所有显示No instances available。
第一步已经算完成了,接下来我们在eureka上注册一个服务。
新建一个maven工程,名叫provider,

pom.xml

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR2</spring-cloud.version>
<dependency>

  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

<!-- spring boot实现Java Web服务-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency>
</dependencies>

接着创建一个application.properties配置文件
server.port=9201
spring.application.name=provider//服务名称
eureka.client.service-url.defaultZone=http://localhost:9200/eureka/ //注册中心的地址
接着创建启动类 App

@RestController
@EnableEurekaClient
@SpringBootApplication

public class App {

@RequestMapping("/index")
public String index(){
    return "hello1";
}

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

}

其中@EnableEurekaClient是必须要的,他表示这是个客户端
这里面我们写了一服务,方便我们等会写一个消费者去调用他的服务,启动9201端口,刷新服务注册中心,就会出现一个服务,
在这里插入图片描述
这个服务就是我们之前注册在服务中心上的服务。
最后我们创建一个消费者去消费这个服务,我们这里使用ribbon去消费服务。
创建一个maven工程,consumer
pom.xml

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
<!-- 客户端负载均衡 -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

<!-- eureka客户端 -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>


<!-- spring boot实现Java Web服务-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--暴露各种指标 健康检查-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!--spring-test-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency>
</dependencies>
<plugins>
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>
</plugins>
创建application.properties

#应用(服务)名称
spring.application.name=ribbon-consumer

#端口号
server.port=9202

#注册中心地址
eureka.client.serviceUrl.defaultZone=http://localhost:9200/eureka/

创建一个启动类App

@RestController
@SpringBootApplication
@EnableDiscoveryClient
public class App {

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return  new RestTemplate();
}

@Autowired
private RestTemplate restTemplate;
@GetMapping( "/index")
public String ribbonIndex() {    
   return restTemplate.getForObject("http://provider/index",String.class);
   
}

public static void main(String [] args){

     SpringApplication.run(App.class,args);
}

}

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
我们使用ribbon去消费服务,需要使用RestTemplate,加上LoadBalances这个注解实现负载均衡,加上bean注解,哪个地方需要他就注入进去
启动服务,刷新注册中心,界面
在这里插入图片描述
他就会多了一个服务,这个服务就被我们注册到服务中心上了
我们再访问9202这个端口去消费9201上提供的服务
http://localhost:9202/index
在这里插入图片描述
成功调用9201端口上的服务,成功。

最后有些依赖我也不知道怎么弄得不好看,各位担待点 谢谢大家观看我写的,有不对的地方欢迎大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值