SpringCloud学习笔记(四)Eureka集群环境搭建 与 服务提供者集群搭建

为什么需要搭建集群?

注册中心作为微服务架构中的核心功能,其重要性不言而喻。在实际生产中,都会去搭建应用的集群来保证服务高可用。Eureka Server注册中心集群中每个节点都是平等的,集群中的所有节点同时对外提供服务的发现和注册等功能。同时集群中每个Eureka Server节点又是一个微服务,也就是说,每个节点都可以在集群中的其他节点上注册当前服务。又因为每个节点都是注册中心,所以节点之间可以相互注册当前节点中已注册的服务,并发现其他节点中已注册的服务。

Eureka集群环境搭建

1、修改本地localhost映射

修改 C:\Windows\System32\drivers\etc 底下的 host文件
添加

		127.0.0.1       eureka7001.com	
		127.0.0.1       eureka7002.com

如果电脑内存够用的话,也可以添加多个。电脑内存有限这里就先配置两个。

2、新建module – cloud-eureka-server7002

配置方面与之前的EurekaServer7001 如出一辙,copy就完事了

复制EurekaServer7001

复制pom、Main启动程序、WebSecurityConfig

application.yml

yml文件我们需要做一些改动,包括我们之前的Eureka7001项目

Eureka7001 的 application.yml

server:
  port: 7001

spring:
  security:
    user:
      name: admin  # 用户名
      password: 123456   # 用户密码

eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7002.com:7002/eureka/

Eureka7002 的 application.yml

server:
  port: 7002

spring:
  security:
    user:
      name: admin  # 用户名
      password: 123456   # 用户密码

eureka:
  instance:
    hostname: eureka7002.com #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 单机版
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7001.com:7001/eureka/ #集群版,如果集群数有多个可以后面继续添加,‘,’号分隔
   

改动说明:
hostname 改成了 我们本地映射的两个地址
defaultZone 改成非本身的EurekaServer 注册地址
互相注册,相互守望

3、启动程序测试

在这里插入图片描述
可以看到我们访问的EurekaServer已经互相注册成功,并且之前的订单服务以及支付服务也都注册正常。

服务提供者集群搭建

1、新建module – 服务提供者

cloud-provider-payment8002
相关代码从cloud-provider-payment8001进行copy就可以
留意一下yml文件的端口号改为8002

2、修改服务调用

在这里插入图片描述
创建完成后,我们启动项目,查看EurekaServer,可以看到两个支付服务已经全部完成创建了

回顾订单服务80的调用,当时是写死的调用地址,现在我们改为调用微服务名
下图中PAYMENT-PROVIDER-SERVICE就是我们服务提供者的微服务注册码
在这里插入图片描述
接下来我们进行调用服务,会发现报错了
在这里插入图片描述
这是正常现象,因为我们漏了一步。
消费者要想能够正常通过restTemplate调用提供者,需要加上一个注解
需要加上@LoadBalanced注解

    //RestTemplate并且开启了客户端负载均衡功能
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

加上之后,就可以正常通过微服务名去调用我们的服务了
在这里插入图片描述

服务调用成功,但是支付服务PaymentService已经部署了集群,我们可以修改Controller使返回值加上端口号,看看是哪个端口为我们提供了服务

 	@Value("${server.port}")
    private String port;

返回值中加上port就可以了

3、测试

在这里插入图片描述
在这里插入图片描述
功能测试完毕,可以发现负载均衡也已经实现,默认为轮询策略

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值