服务注册
- 通常我们会有一个注册中心,所有的服务单元都向注册中心登记注册自己提供的服务,将主机,端口,版本号,通信协议等一些信息告诉注册中心,这样注册中心就能形成一张列表,称为微服列表清单
- 服务中心会以心跳包的方法去监听清单中的服务是否可用,如果不可以就会从清单中剔除
服务发现
- 服务调用方向服务中心获取所有的服务清单,如果假如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个服务,他们就是“服务治理”。那接下来就能将服务提供者注册到两台注册中心当中
再次刷新查看注册中心控制台信息:
鄙人不才,在您面前献丑只愿与您结伴而行,文章若有不当之处,望大佬指点一二;如果我对您有帮助的话,还希望您能点赞分享,成长是一场苦涩的独自修行,我很需要您的陪伴与支持,这也是不断前行的根本动力,让我们在互相陪伴见证彼此生长的同时能够感染身边最亲近的人一同成长,在此叩谢!