SpringCloud之Eureka集群以及Ribbon负载均衡包含自定义负载均衡策略初体验

本文介绍了如何将Eureka设置为集群模式以提高服务的高可用性,并详细讲解了Ribbon作为客户端负载均衡器的配置,包括默认策略和自定义负载均衡策略的实现。通过实例展示了在微服务架构中,如何利用Eureka集群和Ribbon实现服务间的健康均衡调用。
摘要由CSDN通过智能技术生成

本篇紧接着上一篇, 在搭好了我们微服务整体体系的情况下, 将Eureka增加为集群的工作模式, 以及加入Ribbon的客户端负载均衡配置以及进行自定义负载均衡策略的操作.
回顾上篇我们是如何搭建微服务架构的
:SpringCloud之Eureka初接触

为何需要配置Eureka集群,这里有我们需要掌握的一些知识点:
首先要了解CAP原则,即: 强一致性 可用性 分区容错性

我们之前聊过Zookeeper,这是一种专注AP(强一致性和分区容错性)服务治理与发现工具,而Eureka则是一种专注于CP(可用性和分区容错性)的工具,简单的说就是,Zookeeper在主从模式中, 主机一旦宕机, 整个服务都会拉胯, 需要类似Redis集群的哨兵模式去选择新主机, 这会导致一段时间的服务不可用, 能够明显的发现Zookeeper没有达到高可用的需求, 而Eureka可以很好地应对因为网络故障而导致失去部分节点的情况,保证了服务的高可用.

ok,在对Eureka有了一定了解之后, 开始搭建我们的 Eureka集群, 集群顾名思义, 是一堆Eureka服务的意思,因此,我们再额外增加两个Eureka服务, 简单的复制出两份新的Eureka服务,
在这里插入图片描述
三个Eureka服务端口号分别是:7001,7002,7003

导入和7001端口的Eureka服务一样的pom依赖

在修改各自yml文件前,我们先修改一下本机127.0.0.1 ip配置 以便接下来更简单的编写我们需要的配置,在这个目录下的hosts文件
在这里插入图片描述
增加
在这里插入图片描述
紧接着 继续修改新创建的两个Eureka的yml文件

server:
  port: 7001

#eureka配置

eureka:
  instance:
    hostname: eureka7001.com   #eureka服务端的实例名字
  client:
    register-with-eureka: false   #表示是否向eureka中心注册自己  服务器自己不用注册
    fetch-registry: false        #false  表示自己为注册中心
    service-url: #监控页面
      #单机的情况下是这样子的 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      #集群(配置多个关联)  在7001中挂在7002  7003
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

以7001的Eureka配置文件为例, 我们要让7001的defaultZone持有7002和7003的url, 7002和7003一样, 都配置自己缺少的url

ok 启动三个Eureka服务,查看是否成为了一个集群.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到三个Eureka服务相互都有各自的DS 副本,说明集群创建好了

接下来我们配置负载均衡,首先了解一下Ribbon, 这是一款为客户端提供负载均衡的工具, 消费者就是我们的客户端, 所以说要在消费者微服务上去配置Ribbon的相关内容, 它主要为客户提供一些常见的负载均衡算法, 比如轮询, hash, 随机等loadBalanced算法.

那么, 什么是负载均衡呢? 负载均衡简单地说就是: 将用户的请求通过均摊的方式发到各个服务器上,从而达到高可用的目的. 常见的还有像Nginx和lvs, 我们的SpringCloud的支持负载均衡策略的自定义.

ok, 此时我们用ribbon来实现微服务的负载均衡, 因为上篇, 我们只有一个服务提供者, 消费者选来选去也就只有一个提供者可以使用, 体现不了负载均衡的特点, 也没有体现微服务的各个服务都对应各自的数据库,因此,我们还需要增加服务提供者的数量,并且建立其各自的数据库.

我们再创建两个新的数据库db02, db03
表的内容和db01一样,只不过Database我们让其各自都选为各自的db,方便我们分辨是由那个提供者提供的服务

在这里插入图片描述
ok 创建好了新的数据库之后,我们创建和提供者1一样的服务各两个

在这里插入图片描述
记得更改各自的端口号和数据库名等一些配置信息即可

#eureka的配置  服务注册到哪里?  配一个地址就好了
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:     #改eureka 服务的默认描述
    instance-id: springcloud-provider-dept8001

这里的defaultZone也要配置成三个Eureka的地址,能够都注册进去,

ok 这时我们启动三个Eureka集群,三个提供者,进入治理页面查看情况
在这里插入图片描述
可以看到三个提供者都被注册了进来

这里没问题了之后就可以为我们的消费者配置ribbon负载均衡功能了

<!--        ribbon-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
<!--        需要eureka-->
        <dependency>
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值