视频地址:微服务(SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式)
微服务涉及的的知识
总结:
邮储的物联网项目实用的是apollo作为配置中心,nocos作为注册中心,feign进行服务间调用
SpringClould 与SpringBoot的版本兼容
clould-demo:demo 提取码:cocf
实现RestTemple也可以通过http进行服务间调用(非注册中心实现)
http远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可
服务关系是相对的
总结:
demo中的代码的http调用是以硬编码(写死)形式存在代码中,这样在多个提供者时候,不能每个提供地址都写在代码中
服务提供者会将服务薪资注册到注册中心中,当消费者需要调用服务者时候会拉取提供者的服务信息,当获取到之后就会在负载均衡的参与下远程调用服务者服务。服务者服务是以30秒的心跳进行注册的,所以不存在某服务突然宕机,调用不通情况
总结:
搭建步骤
1.引入: eureka不用指定版本信息
是因为在父工程中已经定义好了,点击去之后可以看到定义的版本信息
2.编写启动类:添加自动装配的开关
3.添加配置文件
eureka自己也要注册到注册中心中,后面到集群式服务时候,要把地址的信息以集群形式做配置
可以通过配置的地址,查看eureka的注册的服务
1.在要注册的服务下的pom文件引入eureka的客户端依赖
2.在配置文件中增加配置
要记的添加该服务的服务名称
其他服务做注册也是相同操作。也要记得增加该服务的服务名称
可以模拟多实例部署
总结:
1.以服务名称代替硬编码的IP地址(见P8)
2.增加负载均衡注解
总结:
Nacos是阿里巴巴的产品
nacos不仅可以进行服务的注册和发现还可以分布式配置
nacos不想eureka 通过地址直接访问。本地启动项目,或者本地测试时候要先安装nacos,启动后才可以注册服务
nacos安装:nacos安装指南 提取码:qxzt
1.下载nacos
2.解压。nacos的端口号默认的是8848,如果想要修改,可以在nacos 》conf 》application.properties中修改(server.port)
3.启动。(单机模式,还有集群模式)
//windoes命令启动
startup.cmd -m standalone
启动成功后会有地址提示,点击通过nacos: nacos进行登录
Eureka或Nacos作为注册中心时,注册服务是不需要变化的,变化的是基于两者配置的修改
总结:
nacos在服务和实例之间又引入了集群的概念,假如某个集群出现了问题,可以再访问别的集群
但是同一集群下要优先访问同集群的服务实例(上海的orderService访问上海的userService)
局域网内的访问距离端访问快,不同地区的集群,访问时间长。nacos引入集群概念也是避免不同的集群相互访问的情况。
根据上一节配置好。
需要在orderService也要配置好集群,但是配置好后,并不能直接可以用,还要配置负载均衡规则NacosRule
配置好后服务优先访问配置的集群 ,然后随机访问本集群下的服务实例。集群没有服务时候就会调用别的集群
总结:
有时需要配置不同的权重,对不同的服务实例进行访问 。可以通过配置实现
应用场景:如果要对某一个服务进行版本升级,可以对此服务权重配置成0,当升级好后,再将权重调的较小,可以验证后再将权重调高,优雅的实现升级。
总结:
namespace 》Group 》Service/Data 》集群 》实例
配置
namespace存在的意义可以是根据不同的环境进行隔离(开发环境,测试环境等)。不同namespace之间的服务是不可见的。
nacos会把拉取的服务以缓存的形式放到服务列表中,nacos也会通过主动推送的形式提醒消费者更改服务列表的缓存。nacos还可以配置成非临时实例,这种配置,会让nacos主动询问服务提供者的状态,并且在某个服务提供者实例挂掉后也不会把它从服务列表中踢出,而是通过主动推送消息的方式告诉服务消费者更新缓存列表,不去调用挂掉的服务实例。
临时实例和非临时实例的显示
配置