日总结十道题

1.总结eureka微服务创建的流程

1.构建eureka模块
在这里插入图片描述
2.导入依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
    <dependency>
        <groupId>com.krisswen.cloud</groupId>
        <artifactId>cloud-api-commons</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

3.编写application.yml配置文件

server:
  port: 7001

eureka:
  instance:
    hostname: localhost  # eureka 服务器的实例名称  127.0.0.1
  client:
    # false 代表不向服务注册中心注册自己,因为它本身就是服务中心
    register-with-eureka: false
    # false 代表自己就是服务注册中心,自己的作用就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
    # 设置与 Eureka Server 交互的地址,查询服务 和 注册服务都依赖这个地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

4.编写启动类

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)// exclude :启动时不启用 DataSource的自动配置检查
@EnableEurekaServer //开启Eureka服务
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

5.启动测试,访问 7001 端口
http://localhost:7001
在这里插入图片描述

2.如何搭建eureka集群

1.进入C:\Windows\System32\drivers\etc\hosts 添加如下:
在这里插入图片描述
**2.**创建一个与上个标题一样的eureka(步骤一样

3.这个时候 两个项目要相互利用 修改7001配置文件yml文件如下
在这里插入图片描述
在这里插入图片描述
4.分别启动两台eureka,开始看启动效果
在这里插入图片描述
在这里插入图片描述

3.服务提供方集群如何搭建

1.先建服务方项目
在这里插入图片描述
2.结构如下

在这里插入图片描述
3.pom文件

<dependencies>
        <!--eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--mysql-connector-java-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jiahui</groupId>
            <artifactId>jiahui-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

4.修改appplication.yml配置文件 端口为81
在这里插入图片描述
5.实现服务交互还有最重要的一步
在这里插入图片描述
在这里插入图片描述

4.RestTemplate如何使用?

指定restTemplate通过负载均衡调用
在这里插入图片描述

5.简述eureka的自我保护模式? 如何配置其自我保护模式

自我保护就是说 eurekaserver在一定时间内没有接收到某个微服务的跳
然后他就会消失 默认是90秒
当网络延时 或不好用的时候 他不会立即消失
会开启保护机制 给你保留 不会注销其微服务

6.什么是CAP理论? cp ap原则的含义

cpa分为三个东西
一致性、可用性 、分区容忍性

  • 一致性就是 对客户端 每次读到的 就是最新的,要么就读取失败,要么返回给咱们一个绝对一致的数据,要么索性就不返回
  • 一致性 强调的就是数据正确一致
  • 可用性 就是比较中和的 任何请求都会得到数据,不会出现响应错误,可用性说到底就是可用 一定会返回数据,但不保证数据最新,强调的是数据最新不出错
  • 容忍性:通过网络来实现,就是我可以容忍你哪怕你信息丢失和延迟了我都可以原谅,并返回数据,我会一直运行 不会挂掉无论发生任何数据的同步,反正我不会挂

cp 和ap

只有当网络发生分区或失败时,才会在C和A之间做出选择。

  • ap:
    这种方式其实是放弃了数据一致性。因为如果出现网络延迟,数据没有及时同步到从Mysql,那就导致了主Mysql值为李四,而从Mysql值为张三,导致数据不一致。但主从mysql照样可以提供服务,也就是保证了可用性A。
  • cp:
    这种方式保证了数据一致性,因为主从mysql更新数据都成功才算成功,但网络出现问题时,主mysql无法访问从节点,导致写操作一直不成功。其实就是放弃了可用性,只满足CP原则,系统只能提供读服务。

7.eureka 和zookeeper consul的区别?

  1. Eureka:
  2. AP原则,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化
  3. Zookeeper和Consul:
  4. CP设计,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性没法满足
  5. 如果要求一致性,则选择zookeeper、Consul,如金融行业
  6. 如果要去可用性,则Eureka,如电商系统

8.使用ribbon进行负载均衡的步骤

在这里插入图片描述
在这里插入图片描述
x通过@LoadBalanced 注解实现随机访问

9.ribbon负载均衡的策略有哪些?

1.引入依赖

在这里插入图片描述
2.在服务消费方开启负载均衡

在这里插入图片描述
3.测试负债均衡
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每次请求不一样 负债均衡就实现了

10.如何自定义负载均衡

在这里插入图片描述
大概就这几种
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新启动这个消费者,查看是否是随机访问的策略模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值