Nacos和Eareka依赖之间只能有一个
Nacos要先打开 nacos\bin - cmd- startup.cmd -m standalone
微服务
一:简单认识微服务:第二个视频
1、单一职责:每个服务对应唯一的业务能力、避免重复业务开发:order服务 订单相关操作、商品服务提供接口get/goods/1
2、面向服务:对外暴露业务接口
3、自治:团队、技术、数据、部署独立
4、隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题
提问重点: 微服务概念???需要自己描述出来!!!需要课下理解
二:微服务结构:第三个视频
三:SpringCloud:第四个视频
(seata :是解决分布式事物的)
(spring就是整合比较强、粘合剂,springboot 封装能力强,)
今天学习:
a:主要学习两个注册中心:Eureka、Nacos
b:统一配置管理:Nacos
c:服务远程调用:OpenFeign(http调用客户端 get/user/01、灵活(java、python、c))、Dubbo(RPC协议 并发能力特强 两遍得以相同的…,不够灵活)
d:统一网关路由:
提问重点:微服务、Springboot、SpringCloud 三者关系???(视频有说)
架构风格、SpringCloud依赖于springboot
四:服务拆分及远程调用:
服务拆分注意事项:
1、单一职责:
微服务远程调用关系:
服务提供者:一次业务中,被其他微服务调用的对象(暴露接口给其他微服务调用)
服务消费者:被微服务调用的对象(调用其他微服务提供的接口)
提供者与消费者角色是相对性
一个服务可以同时是服务提供者和服务消费者
五:Eureka注册中心
Eureka作用: 注册!发现!状态监控!!
Eureka架构中,微服务角色有两个:服务端(单独部署)、客户端(引入微服务)
eureka-server 注册中心81\82\80
1、服务提供者user-service8081、user-service8082:到注册中心,注册服务信息 (服务名称、注册中心地址)
2、服务消费者order-service8080 :到注册中心,拉取服务 user-service的信息
3、服务消费者order-service8080:负载均衡(一定要加上这个注解@LoadBalanced) )
user-service:
locahost:8081
locahost:8082
4、服务消费者到服务提供者:远程调用(http://uservice/user/id)
5、服务提供者到注册中心:提供心跳,约30S一次
a:搭建EurekaServer
aa:引入eureka-server依赖
ab:@添加EnableEurekaServer注解
ac:application.yml中配置eureka地址
order-service完成注册中心:
在yml配置文件里,写上 订单微服务起个名称,价格注册中心地址配置,订单微服务重启一下,到注册中心看一下
总结:
1、服务注册
引入eureka-client依赖
在yml中配置eureka地址
2、无论是消费者还是提供者,引入eureka-client依赖、知道eureka地址后,都可以完成服务注册
负载均衡靠的是一个主键
下午:
注册中心是一个最主要的:主键 (11视频-上午回顾)
怎么认识的微服务、和eareka怎么建成的
六:负载均衡主键:Ribbon(12视频)
负载均衡流程:
内置负载均衡规则类:(面试可能会问到的一些问题)
ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
RoundRobinRule:简单轮询服务列表来选择服务器。
自定义负载均衡策略:
通过IRule实现可以修改负载均衡规则,有两种方式
1、代码方式在order-service中的OrderApplication类中,定义一个IRule
@Bean
public IRule randomRule(){
return new RandomRule();
}
2、配置文件方式:在order-service的application.yml文件里,添加新配置也可以修规则
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
七:饥饿加载(14视频)
Ribbon默认是采用懒加载,即第一次访问时才会去创建:
实现负载均衡调用(获取服务名称,拿到规则(IRule),调用规则接口),先写名称再写规则(userservice/xxxxx/goodsservice)
八:Nacos注册中心:(15视频)
这一步就是安装一下安装包 去官网下载一下,然后去一个无中文路径下解压然后启动就成
服务注册到Nacos:
Nacos服务分级存储模型:
一个服务可以有多个实例,例如我们的user-service,可以有:
- 127.0.0.1:8081
- 127.0.0.1:8082
- 127.0.0.1:8083
假如这些实例分布于全国各地的不同机房,例如:
- 127.0.0.1:8081,在上海机房
- 127.0.0.1:8082,在上海机房
- 127.0.0.1:8083,在杭州机房
Nacos就将机房内的实例,划分为一个集群
实例》》集群》》服务
user-service是服务,一个服务包含多个集群,如上海、北京、广州,每个集群下有多个实例,形成分级模型,当本集群内不可用时,才访问其它集群。
服务跨集群调用问题:
九:给user-service配置集群
修改user-service的yml配置文件,添加集群配置
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
十:Nacos注册中心 环境隔离
1、每个namespace都有唯一id
2、服务设置namespace时要写id而不是名称
3、不同namespace下的服务互相不可见
十一:nacos注册中心细节分析
一天的总结:精简版
添加@EnableEurekaServer注解
在application.yml中配置eureka地址
服务注册
引入eureka-client依赖
在application.yml中配置eureka地址
无论是消费者还是提供者,引入eureka-client依赖、知道eureka地址后,都可以完成服务注册
在启动类里加上这个注解
@LoadBalanced //— day01 开启负载均衡功能
负载均衡调用就使用 ==微服务名称==
RandomRule() 为随机调用
Nacos和Eareka依赖之间只能有一个
Nacos要先打开 nacos\bin - cmd- startup.cmd -m standalone
CAP
C一致性
A可用性
P分区容错性(一定保证) (三选其二)
Eureka:AP CP
Nacos :AP
Nacos与eureka的共同点
- 都支持服务注册和服务拉取
- 都支持服务提供者心跳方式做健康检测Nacos与Eureka的区别
- Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
- 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
- Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
- Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式