基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon

这篇具有很好参考价值的文章主要介绍了基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 7 Eureka注册中心

1.7.1 远程调用的问题

  1. 地址信息获取服务消费者如何获取服务提供者地址信息(不能每次都写死): URL:http://localhost:8081/user/"+order.getUserId()
  2. 多选一:如果有多个服务提供者,消费者如何进行选择
  3. 监测健康状态:消费者如何获知提供者的健康状态

1.7.2 eureka原理

  1. 地址信息获取:
    1)服务提供者启动时,向Eureka注册自己的信息
    2)Eureka保存这些信息
    3)消费者根据服务名向Erueka拉去提供者信息

  2. 多选一:
    1)使用负载均衡技术,从多个服务列表中,选择一个

  3. 监测健康状态
    1)服务提供者每隔30s会向Eureka发送自己的心跳数据,即是否正常工作
    2)如果不工作了会从保存的服务列表中剔除
    3)消费者根据最新的服务列表能够或者服务者健康状况
    基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon,微服务知识学习,eureka,spring cloud,微服务

1.7.3 搭建EurekaServer

1)创建项目:引入spring-cloud-starter-netflix-eureka-server的依赖

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

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

@EnableEurekaServer     //自动装配Eureka注解
@SpringBootApplication  //SpringBoot启动类注解
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

3)添加application.yml文件,并编写如下配置

server:
  port: 10086  #注册的端口

spring:
  application:
    name: eurekaserver  #服务注册名字
eureka:
  client:
    service-url:  #服务注册访问地址
    defaultZone: http://127.0.0.1:10086/eureka/

1.7.4 服务注册:注册user-service

  1. 引入依赖:在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
//客户端依赖
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  
</dependency>
  1. 添加配置:在application.yml文件,编写下面的配置
spring:
  application:
	name: userservice
eureka:
  client:
	service-url:
	  defaultZone: http://127.0.0.1:10086/eureka/
  1. 多服务注册(同一个服务,但是多端口,模拟多服务架构)
    1)如果直接复制一个服务,会发生冲突,故需要更改下VM选项:-Dserver.port=8082
基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon,微服务知识学习,eureka,spring cloud,微服务

1.7.4 服务注册:注册order-service

order-service虽然是消费者,但与user-service一样都是eureka的client端,同样可以实现服务注册:

  1. 引入依赖:在order-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
//客户端依赖
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  
</dependency>
  1. 添加配置:在application.yml文件,编写下面的配置
spring:
  application:
	name: orderservice
eureka:
  client:
	service-url:
	  defaultZone: http://127.0.0.1:10086/eureka/

1.7.6 order-service完成服务拉取(能够自助选择服务)

服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡

  1. 修改orderService中的代码,变更url路径
String url = "http://userservice/user/" + order.getUserId();
  1. 在orderService启动类中,添加的resttemplate远程调用上添加负载均衡注解;主要为了标记该调用发起的请求会被ribbon拦截并操作
@Bean
@LoadBalanced
public RestTemplate restTemplate() {    
	return new RestTemplate();
}

1.7.7 总结

基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon,微服务知识学习,eureka,spring cloud,微服务 ## 1.8 Ribbon 在需要拦截的启动类上面添加注解:@LoadBalanced ### 1.8.1 负载均衡原理 基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon,微服务知识学习,eureka,spring cloud,微服务

1)order-serice发起请求:http://userservice/use/1
2)获取url中服务的id(userservice)
3)在Eureka中拉去userservice
4)返回服务列表(8081/8082)
5)服务负载均衡策略:IRule
6)选择某个服务:8081
7)修改原来的url,发起请求
8)请求服务8081

1.8.2 负载均衡策略

基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon,微服务知识学习,eureka,spring cloud,微服务 1)RoundRobinRule:简单轮询 2)ZoneAviodanceRule:使用Zone对服务器分配类,在做轮询 3)RandomRule:随机选择服务器 ### 1.8.3 负载均衡配置 总共有两种方式:代码方式和更改配置文件方式
  1. 代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:
@Bean
public IRulerandomRule(){
    return new RandomRule();
    }
  1. 配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:
userservice:  
	ribbon:    
		NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule#负载均衡规则

1.8.4 饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

ribbon:  
	eager-load:    
		enabled: true # 开启饥饿加载    
		clients:userservice # 指定对userservice这个服务饥饿加载

1.8.5 总结

  1. Ribbon负载均衡规则
    1)规则接口是IRule
    2)默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询
  2. 负载均衡自定义方式
    1)代码方式:配置灵活,但修改时需要重新打包发布
    2)配置方式:直观,方便,无需重新打包发布,但是无法做全局配置
  3. 饥饿加载
    1)开启饥饿加载
    2)指定饥饿加载的微服务名称

参考文献
1)黑马程序员SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课文章来源地址https://www.toymoban.com/news/detail-641408.html

到了这里,关于基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud(一) 服务架构的演变及注册RestTemplate实现服务的远程调用

    目录 一, 服务架构的演变 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 二, 服务拆分和远程调用 2,1 服务拆分原则 2.2 服务拆分示例 2.3 创建相应数据库  2.4 实现远程调用示例 1, 更改需求 2, 注册RestTemplate实现远程调用  2.5 服务消费者和提供者 将业务的所有功能集中在一

    2024年02月08日
    浏览(37)
  • ❤️分享一个基于SpringCloud的微服务项目【源码+视频教程】【保姆式教程】【建议收藏】❤️

    前面已经分享了很多不错的项目,有ssm的、springboot的,为了帮助大家的学习,还出了详细的视频教程! 当然我会不断的更新各种干货!没关注猛哥的,关注一波。防止错失干货! 1,基于springboot的医药管理系统 2,基于springboot+vue的校园招聘系统 3,基于ssm+小程序的物业管理

    2023年04月09日
    浏览(44)
  • Springcloud笔记(2)-Eureka服务注册中心

    Eureka作为一个微服务的治理中心,它是一个服务应用,可以接收其他服务的注册,也可以发现和治理服务实例。 服务治理中心是微服务(分布式)架构中最基础和最核心的功能组件,它主要对各个服务实例进行管理,包括 服务注册和服务发现 等 本文参考:springcloud教程 --

    2024年02月05日
    浏览(43)
  • 微服务学习-SpringCloud -Nacos (服务注册源码学习)

    此次源码版本为1.4.1,2.x版本在服务请求时使用了grpc的方式,所以先以1.4.1版本学习,后续再看2.x版本。 源码下载地址:: link 打开页面后,下拉到最下面,下载nacos-1.4.1.zip,解压导入idea即可。 此图主要是对核心注册流程进行了大概梳理,可以在后续详细看源码时配合互补。

    2023年04月09日
    浏览(46)
  • SpringCloud学习笔记(二)_Eureka注册中心

    一、Eureka简介 Eureka是一项基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client,它使与服务的交互更加容易。客户端还具有一个内置的负载

    2024年02月11日
    浏览(43)
  • SpringCloud学习笔记(五)_Consul注册中心

    本章使用的Consul版本是 1.7.2 项目架构图如下: 1、新建一个maven项目(test-springcloud-provider-payment8006) 结构如下: 2、引入依赖,编辑pom文件 完整pom.xml文件如下: pom.xml 3、编辑配置文件application.yml 4、编写主启动类 5、编写Controller 6、启动项目,测试项目 1)启动Consul服务,使

    2024年02月11日
    浏览(31)
  • SpringCloud学习笔记(四)_ZooKeeper注册中心

    基于Spring Cloud实现服务的发布与调用。而在18年7月份,Eureka2.0宣布停更了,将不再进行开发,所以对于公司技术选型来说,可能会换用其他方案做注册中心。本章学习便是使用ZooKeeper作为注册中心。 本章使用的zookeeper版本是 3.6.0 项目架构图如下: 1、新建一个maven项目(tes

    2024年02月11日
    浏览(39)
  • 构建弹性可扩展的微服务架构:基于Spring Cloud Alibaba 的实践

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 随着互联网业务的不断发展,传统的单体应用逐渐无法满足日益复杂的业务需求和

    2024年02月14日
    浏览(250)
  • 【服务治理①】软件架构服务治理的本质,当下最火的微服务到底是什么?利用AIGC学习微服务的第①弹

    治理讲究战术,自顶向下治理的方式、综合统筹的治理、分而治之的思想。服务治理就是治理服务(来自电源《年会不能停》解释名词的方法 😃),属于过程管理,即从服务的启动到服务的进行再到服务的终止期间发生的全生命周期的数据治理、规则管理、数据监控、安全

    2024年04月17日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包