springCloub容易忽略问题总集

SpringCloud版本名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序

springCloud对应的版本:
spring-cloud-dependencies 版本列表可查看:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies

在这里插入图片描述
springboot对应的版本:
spring-boot-starter-parent 版本列表可查看:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent

在这里插入图片描述
**其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误,比如eureka注册了结果找不到服务类啊,比如某些jar导入不进来啊,等等这些错误
**

Spring Cloud Spring Boot
Angel版本 兼容Spring Boot 1.2.x
Brixton版本 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
Camden版本 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
Dalston版本、Edgware版本 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Finchley版本 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
Greenwich版本 兼容Spring Boot 2.1.x
Hoxton.SR1 版本 兼容Spring Boot 2.2.0 - 2.2.3

服务注册

  • 通常我们会有一个注册中心,所有的服务单元都向注册中心登记注册自己提供的服务,将主机,端口,版本号,通信协议等一些信息告诉注册中心,这样注册中心就能形成一张列表,称为微服列表清单
  • 服务中心会以心跳包的方法去监听清单中的服务是否可用,如果不可以就会从清单中剔除

服务发现

  • 服务调用方向服务中心获取所有的服务清单,如果假如A服务-支付服务有多个,当调用A服务时,服务消费者会以某种轮询的机制取出一个位置的A服务进行调用,也就是我们说的负载均衡

在这里插入图片描述

上图创建了2个支付微服务,在实际电商网站当中,当用户去支付的时候,并发访问量比较高,所有我们在项目当中需要搭建多台支付微服务,以应对访问量比较大的操作

我们的服务器5对应的是商场,例如淘宝商场页面
在这里插入图片描述
我们在微服务架构当中又是如何进行微服务的调用,也就是具体的功能实现呢?
例如淘宝商场页面有登录操作,购物车操作,登录操作属于用户微服务下的,也就是服务器4上的微服务,我们在登录的时候,那这个商场微服务就会去调用用户微服务,也就是说这个商场微服务就是服务消费者,用户微服务就是服务提供者,而服务的提供者我们一般都是以Restful风格来开发接口,这样就能对外提供接口
在这里插入图片描述
再说,当我们将商品添加的购物车的时候,这个商场微服务就会去调用库存微服务,所以说这个库存微服务就是服务提供者
在这里插入图片描述
实际电商网站的开发当中,存在许多的微服务,而这些微服务提供者就将自己的信息注册到服务注册中心当中,以便服务消费者去发现服务提供者,并进行调用消费。

在IDEA上实现eureka服务的高可用操作步骤:

在这里插入图片描述
项目工程当中已经存在一个服务注册中心,我们不需要再复制一份,springboot有更好的方式来创建类似的服务注册中心。

修改host文件,作用就是可以使用域名访问

管理员权限编辑
C:\Windows\System32\drivers\etc
在这里插入图片描述

修改eureka-server模块的yml

“- - -” 是springboot特有的功能,相当于又有一个配置文件yml,在一个配置文件当中配置了两个环节

server:
  port: 8761

eureka:
  instance:
    hostname: eureka-server1
  client:
    serviceUrl:
      defaultZone: http://localhost:8762/eureka/

spring:
  application:
    name: first-server
  profiles: eureka-server1


---
server:
  port: 8762

eureka:
  instance:
    hostname: eureka-server2
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

spring:
  application:
    name: second-server
  profiles: eureka-server2

以上配置:
端口号为8761的注册中心向端口号为8762的注册中心去注册,同时自己将自己的信息注册到自己的服务当中(register-with-eureka,默认为true),端口号为8762的注册中心向端口号为8761的注册中心去注册,同时自己将自己的信息注册到自己的服务当中(register-with-eureka,默认为true)。
profiles属性可以知道读取那一部分的数据信息,
spring.application.name 属性值就是注册中心的显示的Application实例名称
eureka.instance.hostname 属性值就是我们在hosts文件当中配置的信息,也就是域名

配置启动eureka-server1

在这里插入图片描述
在这里插入图片描述
同理配置第二台注册中心:
在这里插入图片描述

以上配置完成之后,首先启动一个注册中心服务EurekaServerApplication-Server1,查看控制器报错信息:
在这里插入图片描述
出现报错的原因是因为,我们配置了注册中心1会向注册中心2注册自己的信息,但是注册中心2并没有启动,所有会出现以上错误,当我们启动注册中心2,异常会自动消失

访问两个注册中心

在这里插入图片描述

在这里插入图片描述
另外我们也可以这样服务,不需要使用localhost:
在这里插入图片描述

我们发现,每个注册中心都有2个服务,他们就是“服务治理”。那接下来就能将服务提供者注册到两台注册中心当中
在这里插入图片描述
再次刷新查看注册中心控制台信息:
在这里插入图片描述

鄙人不才,在您面前献丑只愿与您结伴而行,文章若有不当之处,望大佬指点一二;如果我对您有帮助的话,还希望您能点赞分享,成长是一场苦涩的独自修行,我很需要您的陪伴与支持,这也是不断前行的根本动力,让我们在互相陪伴见证彼此生长的同时能够感染身边最亲近的人一同成长,在此叩谢!

猜你喜欢

转载自blog.csdn.net/qq_44316726/article/details/105801662