【微服务】 微服务学习笔记二:Eureka注册中心的介绍及搭建_eurake是独立项目吗

1.前面基于Springboot的单体项目介绍已经完结了,至于项目中的其他功能实现我这里就不打算介绍了,因为涉及的知识点不难,而且都是简单的CRUD操作,假如有兴趣的话可以私信我我再看看要不要写几篇文章做个介绍。

2.完成上一阶段的学习,我就投入到了微服务的学习当中,所用教程为B站上面黑马的微服务教程。由于我的记性不是很好,所以对于新事物的学习我比较喜欢做笔记以加强理解,在这里我会将笔记的重点内容做个总结发布到“微服务学习”笔记栏目中。我是赵四,一名有追求的程序员,希望大家能多多支持,能给我点个关注就更好了。

目录

一:Eureka简介

1:问题引入

2:Eureka的作用

二:Eureka的搭建

1:搭建EurekaServer

2:服务注册

3:服务发现


一:Eureka简介

1:问题引入

在介绍Eureka之前,我先讲两个概念,一是服务提供者,它指的是在一次业务中被其它微服务调用的服务(提供接口给其它微服务),也就是暴露接口给其它微服务调用;另一个是服务消费者,它是指再一次业务中调用其它服务的服务(调用其它服务提供的接口)。要注意的是,提供者与消费者之间的角色是相对的,就好比当你去买东西时候,相对于卖东西给你那个人你就是消费者;当你去卖东西时候相对于买你东西那个人你就是提供者。

在没有引入Eureka之前,我们可以通过RestTemplate指定URL路径来发送http请求,实现远程调用,举个例子:

// 2.利用RestTemplate发起Http请求,查询用户
//2.1 url路径
String url = "http://localhost:8081/user/" + order.getUserId();
//2.2 发送http请求,实现远程调用
User user = restTemplate.getForObject(url,User.class);

当我们需要调用8081端口提供的服务的时候,就可以通过上诉方法进行服务调用。上述方法是通过硬编码实现的,会存在很多的问题,比如我们需要调用大量不同的服务时候,就需要指定很多的URL,而且你还需要清楚地知道每个服务的IP和端口号,这样显然是很不友好的;此外,当一个服务提供很多实例时候,采用了上述硬编码方式消费者如何进行选择呢?就比如某一服务提供了三个实例,采用上述方式永远只能选定一个实例,另外两个实例永远不会被调用,除非你直接对代码进行更改。

最后还存在一个问题,消费者如何得知服务提供者的健康状态呢?当请求的服务已经挂掉了,就算服务列表还有其他实例可以调用,由于采用的是硬编码形式,其他健康的服务提供者也无法被调用。那么有没有办法可以解决上述问题呢?答案是肯定的,Eureka的出现就解决了上面提到了问题。

2:Eureka的作用

在介绍Eureka的作用之前,我们首先来看一张图:

在Eureka架构中,微服务角色有两类:

  • EurekaServer:服务端,注册中心

    • 记录服务信息
    • 心跳监控
  • EurekaClient:客户端

    • Provider:服务提供者,例如上图的user-service

      • 注册自己的信息到Eureka
      • 每隔一定时间向EurekaServer发送心跳
    • consumer:服务消费者,例如上图的order-service

      • 根据服务名称从EurekaServer拉取服务列表
      • 基于服务列表做负载均衡,选中一个之后发起远程调用

每一个服务提供者启动时候都会向Eureka注册自己的信息(包括它自身),Eureka将会保存这些信息,这时候消费者就能通过服务名称向Eureka拉取提供者的信息。假如有多个服务提供者,比如user-service有8081、8082、8083这三个服务提供者,当消费者向EurekaServer注册中心拉取user-service信息的时候,注册中心就会返回user-service的服务列表,消费者再根据负载均衡算法进行选择。这样就能解除硬编码不能实现动态选择的问题,那么如何获取服务提供者的健康状态呢?

每个服务提供者都会每隔一段时间向EurekaServer发送心跳请求以报告自己的健康状态,Eureka会更新记录服务列表的信息,以剔除心跳不正常的服务提供者,以保证向消费者提供的服务都是健康的。

二:Eureka的搭建

1:搭建EurekaServer

1).单独创建一个EurekaServer模块并引入相关依赖(整体项目架构如下)

<dependencies>
    <!--eureka服务端-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

2).编写启动类,添加@EnableEurekaServer注解

package cn.itcast.eureka;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
​
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

3).添加application.yml文件并编写配置信息

server:
  port: 10086 # 服务端口


![img](https://img-blog.csdnimg.cn/img_convert/51edc15d44a637be1792866e14bcf9bd.png)
![img](https://img-blog.csdnimg.cn/img_convert/5cb6cadaef36e02e55ddef2f701aa449.png)
![img](https://img-blog.csdnimg.cn/img_convert/9a1162f0490d00a5b6768fa22f3f1c0a.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微服务注册中心微服务架构中的一个关键组件,用于管理和维护微服务的注册和发现。在.NET微服务架构中,常用的微服务注册中心包括Consul、Eureka和Zookeeper等。这些注册中心提供了服务注册、服务发现和负载均衡等功能,使得微服务之间可以方便地进行通信和协作。 Consul是一个开源的分布式服务发现和配置管理系统,它提供了一个可靠的注册中心,用于注册和发现微服务。Consul使用Gossip协议进行节点之间的通信,支持ACL访问控制,并采用Raft算法保证服务的高可用性。通过Consul,微服务可以注册自己的服务实例,并通过查询接口来发现其他服务的实例,从而实现微服务之间的通信。 Eureka是Netflix开源的服务发现组件,也是一个常用的微服务注册中心。它使用RESTful接口进行服务注册和发现,并提供了负载均衡和故障转移等功能。Eureka采用了客户端-服务器架构,其中Eureka Server负责管理服务注册和发现,而Eureka Client则负责将自己的服务注册到Eureka Server,并从Eureka Server获取其他服务的信息。 Zookeeper是一个分布式协调服务,也可以用作微服务注册中心。它提供了一个可靠的分布式数据存储和协调机制,用于管理和维护微服务的注册和发现。Zookeeper使用ZAB协议进行节点之间的通信,并提供了高可用性和一致性保证。微服务可以将自己的服务注册到Zookeeper,并通过查询接口来发现其他服务的实例。 总之,.NET微服务架构中的注册中心是用于管理和维护微服务的注册和发现的关键组件。常用的微服务注册中心包括Consul、Eureka和Zookeeper等,它们提供了服务注册、服务发现和负载均衡等功能,使得微服务之间可以方便地进行通信和协作。 #### 引用[.reference_title] - *1* *3* [asp.net微服务架构(概述)](https://blog.csdn.net/CrtLife/article/details/117029560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [『注册中心』Consul微服务注册中心的使用及相关集群搭建](https://blog.csdn.net/qq_34202873/article/details/106429687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值