当前位置: 首页 > news >正文

微服务-Eureka

文章目录

    • 提供者与消费者
    • Eureka注册中心
    • 搭建EurekaServer
    • 服务注册
    • 服务发现
    • 项目结构

提供者与消费者

在这里插入图片描述

Eureka注册中心

服务消费者该如何获取服务提供者的地址信息?

  • 服务提供者启动时向eureka注册自己的信息
    eureka保存这些信息
    消费者根据服务名称向eureka拉取提供者信息

如果有多个服务提供者,消费者该如何选择?(多个User-Service)

  • 服务消费者利用负载均衡算法,从服务列表中挑选一个

消费者如何得知服务提供者的健康状态?

  • 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
    eureka会更新记录服务列表信息,心跳不正常会被剔除
    消费者就可以拉取到最新的信息

在这里插入图片描述在这里插入图片描述

搭建EurekaServer

在这里插入图片描述

  1. 引入依赖,除了主要的@EnableEurekaServer外,@SpringBootApplication等注解也存在这个依赖里。
<dependencies><!--Eureka服务端依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
</dependencies>
  1. 修改启动类,添加注解
package cn.itcast.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class,args);}
}
  1. 修改配置文件,注册到Eureka;以及服务名称
server:port: 10086
spring:application: name: eurekaserver # 服务名称
eureka:client:service-url: #将自己也注册到Eureka服务上,为了将来Eureka集群之间通信;例如有多个Eureka服务时,这些Eureka会互相做注册,为了数据交流,这里配的是Eureka集群的地址defaultZone: http://127.0.0.1:10086/eureka/ 
  1. 启动,在浏览器中测试
    在这里插入图片描述

服务注册

将user-service和order-service服务都按照以下方式注册到Eureka上

  1. 添加Eureka客户端依赖
<!--Eureka客户端依赖-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 修改application.yml
    2.1 添加Eureka配置信息,将服务注册到Eureka
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/ # 新增注册到eureka

2.2 增加服务名

spring:application:name: userservice # 新增服务名
  1. 启动,可以看到服务都被注册上了
    在这里插入图片描述
  2. 在idea如何启动多个,例如这里再启动一个userservice服务
    在这里插入图片描述
    修改Name,点击Modify options,选择add VM options
    在这里插入图片描述
    输入-Dserver.port=8082,该服务将会启动在8082端口
    在这里插入图片描述
    启动userservice2
    在这里插入图片描述
    在这里插入图片描述
    可以看到userservice有2个服务被注册
    在这里插入图片描述

服务发现

  1. 将“主机+端口”改为服务名,通过服务名可直接调用该服务,不再需要ip和端口
public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);// 2.定义url// String url = "http://localhost:8081/user/"+order.getUserId();String url = "http://userservice/user/"+order.getUserId(); //修改为服务名// 3.发送http请求User user = restTemplate.getForObject(url, User.class);// 4.封装userorder.setUser(user);// 5.返回return order;
}
  1. 给RestTemplate添加@LoadBalanced注解,表示负载均衡

必须添加该注解,否则会产生异常java.net.UnknownHostException: userservice;当只有一个userservice服务时,也会产生该异常

@SpringBootConfiguration
public class WebConfiguration {@LoadBalanced //负载均衡@Bean //相当于@Controller,@Service等public RestTemplate restTemplate(){return new RestTemplate();}
}
  1. 启动所有服务,在浏览器中输入4次http://localhost:8080/order/104,调用4次userservice服务时,发现UserApplication:8081和UserApplication2:8082分别被调用了2次,实现了负载均衡

在这里插入图片描述在这里插入图片描述

项目结构

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/206853.html

相关文章:

  • 超声电机工作原理
  • 基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码
  • 两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称,根据属性名称处理两个list
  • 为什么C++能搜到的框架介绍都好抽象?
  • 人工智能(6):机器学习基础环境安装与使用
  • 电力巡检/电力抢修行业解决方案:AI+视频技术助力解决巡检监管难题
  • 区块链轻节点的问答
  • 常用Web安全扫描工具汇整
  • 查看当前cmake版本支持哪些版本的Visual Studio
  • 岩土工程桥梁监测中智能振弦传感器的应用方案
  • 上云容灾如何实现碳中和-万博智云受邀参加1024程序员节数据技术论坛并发表演讲
  • 蓝桥杯每日一题2023.10.26
  • [已解决]安装的明明是pytorch-gpu,但是condalist却显示cpu版本,而且torch.cuda.is_available 也是flase
  • [数据分析与可视化] 基于Python绘制简单动图
  • MySQL基础入门教程(InsCode AI 创作助手)
  • 【Linux】 rpm安装包保存到本地并批量安装
  • 数据分析案例-某公司员工数据信息可视化(文末送书)
  • 浅谈wheel滚轮事件
  • FTP服务器操作手册
  • Android使用Glide类加载服务器中的图片
  • 【打靶】vulhub打靶复现系列3---Chronos
  • 基于Java的新闻发布管理系统设计与实现(源码+lw+部署文档+讲解等)
  • ​CRM系统如何选型?
  • 山东大学开发可解释深度学习算法 RetroExplainer,4 步识别有机物的逆合成路线
  • 使用antv x6注册vue组件报错,TypeError: Object(...) is not a function (teleport.js:3:23)
  • Python开发利器KeymouseGo,开源的就是香
  • 什么是 Node.js
  • 08-flex布局
  • HTML5和HTML的区别
  • 【Amazon】跨AWS账号级别迁移弹性IP地址操作流程