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

SpringCloud-5_模块集群化

避免一台Server挂掉,影响整个服务,搭建server集群

创建e-commerce-eureka-server-9002微服务模块【作为注册中心】

创建步骤参考e-commerce-eureka-server-9001

修改pom.xml,加入依赖

同9001

创建resources/application.yml

  • 9002的yml

server:
#  修改端口号port: 9002
eureka:instance:
#    创建主机域名(别名)hostname: eureka9002.comclient:#不向注册中心注册自己register-with-eureka: false#表示自己就是注册中心,作用就是维护注册服务实例,不需要去检索服务fetch-registry: falseservice-url:#设置与eureka-server9001交互的模块defaultZone: http://eureka9001.com:9001/eureka/

创建主启动类EurekaApplication9002.java

类似9001

修改e-commerce-eureka-sever-9001微服务模块

  • 修改9001的yml。只保留了修改部分

#    修改成域名的形式,需要host文件的映射支持hostname: eureka9001.com:9001service-url:#设置与eureka-server9002交互的模块,defaultZone: http://eureka9002.com:9002/eureka/

修改hosts.文件

1.文件:C:\Windows\System32\drivers\etc\host

2.文件可以先拷贝到桌面,修改后,再拷贝回去

3.加入内容:

#eureka主机名和ip映射
127.0.0.1 eureka9001.com
127.0.0.1 eureka9002.com

完成测试

启动9001和9002

打开浏览器,分别输入eureka9001.com和eureka9002.com,查看服务列表里面是否有对方服务

将member-service-provider-10000注册到EurekaServer集群(目前2台)

  • 9001的域名改了,重新配置

  • 新增了9002的服务群,用逗号“,”分隔后添加

eureka:client:service-url:#表示将自己注册到哪个eureka-serverdefaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka

将member-service-consumer-80注册到EurekaServer集群(目前2台)

同上


搭建会员中心服务提供方-provider集群

创建member-service-provider-10002

1.参考member-service-provider-l0000来创建member-service-provider-10002即可

2.创建好后,使用nember-service-provider-10000的源码和配置替换member-service-provider-10002生成的代码(不要到磁盘整体拷贝,会出现关联到member-service-provider-10000的问题,很麻烦,可以创建好新项目的包,然后再拷贝对应包下的文件,就不会出问题)

3.提醒,拷贝时不要忘记拷贝resources/mapper/MemberMapper.xml这些Xxx.xml文件

创建resources/application.yml

修改端口为:10002,name: member-service-provider-10002

修改主启动类名

改为带有10000和10002的类名,便于区分

完成测试

启动eureka server集群(目前2台)

启动member-service-provider--10000

启动member-service-provider-10002

测试页面

注意事项和细节

  1. 因为member.-service-provider-10000和member-service-provider-10002作为一个集群提供服务,因此需要将spring.application.name进行统一,都改为:

name: member-service-provider

  1. 这样消费方通过统一的别名进行负载均衡调用


配置服务消费端consumer-80使用会员中心服务集群

修改MemberConsumerController.java

说明:

1.MEMBER-SERVICE-PROVIDER就是服务提供方【集群】,注册到Eureka Server的名称

2.也就是服务提供方provider【集群】对外暴露的名称为MEMBER-SERVICE-PROVIDER

3.MEMBER-SERVICE-PROVIDER目前有两个Availability Zones member-service-provider:10000

还有一个member-service-provider:10002

需要增加一个注@LoadBalanced赋予RestTemplate负载均衡的能力,也就是会根据你的负载均衡

来选择某个服务去访问,默认是轮询算法,当然我们也可以自己配置负载均衡算法

//private static final String MEMBER_SERVICE_PROVIDER_URL="http://localhost:10000";private static final String MEMBER_SERVICE_PROVIDER_URL="http://MEMBER-SERVICE-PROVIDER";

修改CustomizationBean.java

说明:配置注入RestTemplate bean/对象

这里的@LoadBalanced就是赋予RestTemplate负载均衡的能力

默认是使用轮询算法来访问远程调用接口/地址

    @Bean@LoadBalancedpublic RestTemplate getRestTemplate(){

为了看到测试效果,修改服务提供方

完成测试

启动eureka server集群(目前2台)

启动member-service-provider-10000

启动member-service-provider-10002

不急,先测试:

http://localhost:10000/member/query/1

http://localhost:10002/member/query/1

启动member-service-consumer-80

浏览器访问:http://localhost/member/consumer/query/1

  • 这儿没有端口号是因为,localhost的缺省端口就是80

交替访问member服务说明:

1.注解@LoadBalanced底层是Ribbon支持算法

2.Ribbon和Eureka整合后consumeri直接调用服务而不用再关心地址和端口号,且该服务还有负载功能


获取Eureka Server服务注册信息-DiscoveryClient

需求分析

  • 这里我们以服务消费方,去获取Eureka Server的服务注册信息为例

  • 当然也可以在服务提供方获取Eureka Server的服务注册信息

代码实现

member-service-consumer-80/MemberConsumerController.java

调用getServices()获取服务列表,返回discoveryClient即可在网页显示。其余都是日志显示,用处不大。

    @Resourceprivate DiscoveryClient discoveryClient;@GetMapping("/member/discovery")public Object discovery(){List<String> services = discoveryClient.getServices();for (String service : services) {log.info("服务={}",service);List<ServiceInstance> instances = discoveryClient.getInstances(service);for (ServiceInstance instance : instances) {log.info("服务号={},主机号={},端口号={},uri={}",instance.getInstanceId(),instance.getHost(),instance.getPort(),instance.getUri());}}return discoveryClient;}

测试

浏览器地址栏输入:http://localhost/member/discovery

注意事项和细节说明

1.在引入DiscoveryClientl时,不要引入错误的包

正确的包,是一个接口:import org.springframework.cloud.client.discovery.DiscoveryClient;

错误的包,是一个类:import com.netflix.discovery.DiscoveryClient;

2.演示的是在服务消费方使用DiscoveryClient来完成服务发现,同样,在服务提供方模块也OK


至此,服务与发现已经完成。接下来是Ribbon负载均衡

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

相关文章:

  • AQS底层源码深度剖析-BlockingQueue
  • Kotlin协程:Flow的异常处理
  • qt下ffmpeg录制mp4经验分享,支持音视频(h264、h265,AAC,G711 aLaw, G711muLaw)
  • C#读取Excel解析入门-1仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在
  • 一起Talk Android吧(第五百一十八回:在Android中使用MQTT通信五)
  • 100种思维模型之混沌与秩序思维模型-027
  • Java开发 - Redis初体验
  • Python - 使用 pymysql 操作 MySQL 详解
  • 机器学习-卷积神经网络CNN中的单通道和多通道图片差异
  • 考研复试——计算机组成原理
  • 硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)
  • PTA:C课程设计(2)
  • 第四章:面向对象编程
  • Linux 安装npm yarn pnpm 命令
  • linux SPI驱动代码追踪
  • Ls-dyna材料的相关学习笔记
  • Arrays方法(copyOfRange,fill)
  • AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)
  • RHCSA-文件的其他命令(3.7)
  • 多线程update导致的mysql死锁问题处理方法
  • SpringBoot 如何保证接口安全?
  • 英伟达驱动爆雷?CPU占用率过高怎么办?
  • 链表经典面试题【典中典】
  • Java泛型深入
  • 体验Linux USB 驱动
  • servlet 中的ServletConfig与servletContext
  • Hadoop3.1.3单机(伪分布式配置)
  • HBase---浅谈HBase原理
  • 学习笔记四:dockerfile
  • 微服务里的小问题