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

  1. @Bean
  2. public IRule randomRule(){
  3. return new RandomRule();
  4. }

2、配置文件方式:在order-service的application.yml文件里,添加新配置也可以修规则

  1. userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  2. ribbon:
  3. 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配置文件,添加集群配置

  1. spring:
  2. cloud:
  3. nacos:
  4. server-addr: localhost:8848
  5. discovery:
  6. 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方式