Eureka

1.编写Eureka入门案例

(1)@EnableEurekaServer注解的作用是什么?

通过注解在Spring Boot项目启动时启动Eureka Server。

2.创建集群版的Eureka注册中心

(1)创建一个Maven的jar项目。

在这里插入图片描述

(2)修改POM文件,添加Eureka Server启动器。

<!--Eureka注册中心-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

(3)修改POM文件,添加Spring Boot的Web启动器。

<!--启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

(4)修改全局配置文件,添加注册中心配置。

spring.application.name=eureka-server
server.port=8761

#设置eureka的实例名称,以配置文件的变量为主
eureka.instance.hostname=eureka1

(5)修改全局配置文件,添加其他配置中心地址。

#设置服务注册中心地址,指向另一个服务
eureka.client.service-url.defaultZone=http://user:123456@eureka2:8761/eureka/

(6)添加Logback配置文件。

<?xml version="1.0" encoding="UTF-8" ?>
 <configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->  
    <property name="LOG_HOME" value="${catalina.base}/logs/" />  
    <!-- 控制台输出 -->   
    <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender">
       <!-- 日志输出编码 -->  
        <layout class="ch.qos.logback.classic.PatternLayout">   
             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   
            </pattern>   
        </layout>   
    </appender>   
    <!-- 按照每天生成日志文件 -->   
    <appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>   
        <layout class="ch.qos.logback.classic.PatternLayout">  
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   
            </pattern>   
       </layout> 
        <!--日志文件最大的大小-->
       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>10MB</MaxFileSize>
       </triggeringPolicy>
    </appender>     

    <!-- 日志输出级别 -->
    <root level="DEBUG">   
        <appender-ref ref="Stdout" />   
        <appender-ref ref="RollingFile" />   
    </root> 



<!--日志异步到数据库 -->  
<!--     <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        日志异步到数据库 
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
           连接池 
           <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
              <driverClass>com.mysql.jdbc.Driver</driverClass>
              <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
              <user>root</user>
              <password>root</password>
            </dataSource>
        </connectionSource>
  </appender> -->

</configuration>

3.Eureka集群部署

(1)项目打包命令是什么?

Install

(2)启动项目是如何加载不同的配置文件?

在启动脚本文件给定不同配置文件的变量名称

(3)如何修改Linux的Host文件?

Vim /etc/hosts
192.168.70.134 eureka1
192.168.70.135 eureka2

4.创建provider服务

(1)@EnableEurekaClient注解的作用是什么?

通过注解在Spring Boot项目启动时启动微服务

5.注册服务并测试接口

(1)启动Provider。
(2)在注册中心管理页面中,查看是否含有Provider服务。
(3)启动浏览器,访问Provider服务做接口测试。

在这里插入图片描述

6.创建consumer服务

(1)创建一个Maven的jar项目。

在这里插入图片描述

(2)修改POM文件,添加Eureka启动器。

(3)修改POM文件,添加Spring Boot的Web启动器。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

(4)修改全局配置文件,添加注册中心集群配置。

spring.application.name=eureka-consumer
server.port=9091

#设置服务注册中心地址,指向另一个服务
eureka.client.service-url.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

(5)在Service中通过LoadBalancerClient完成对服务的调用。

@Service
public class UserService {

    @Autowired
    //ribbon负载均衡器,根据其他服务的名称返回服务的实例
    private LoadBalancerClient loadBalancerClient;

    public List<User> getUser(){
        //1.获取服务实例:si:eureka-provider服务的实例。封装了服务的基本信息:IP,端口
        ServiceInstance si = this.loadBalancerClient.choose("eureka-provider");
        //2.拼接访问服务的 URL
        //http://localhost:9090/user
        StringBuffer sb=new StringBuffer();
        sb.append("http://").append(si.getHost()).append(":").append(si.getPort()).append("/user");

        //3.通过springMVC的 RestTemplate请求服务
        RestTemplate rt=new RestTemplate();
        //获取返回类型
        ParameterizedTypeReference<List<User>> type=new ParameterizedTypeReference<List<User>>() {};
        //4.ResponseEntity:封装了返回值信息:参数为url,请求方法,null,返回类型
        ResponseEntity<List<User>> response=rt.exchange(sb.toString(), HttpMethod.GET,null,type);
        List<User> list = response.getBody();

        return list;
    }
}

(6)创建Controller,在Controller中注入Service对象。

@RestController
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/consumer")
    public List<User> getUser(){
        return this.userService.getUser();
    }
}

7.在consumer中调用provider服务

(1)启动Consumer服务。
(2)测试Consumer服务,查看调用Provider所返回的数据。
在这里插入图片描述

8.Eureka架构图原理

(1)请描述Eureka架构原理。

在这里插入图片描述
Register(服务注册):把自己的 IP 和端口注册给 Eureka。
Renew(服务续约):发送心跳包,每 30 秒发送一次。告诉 Eureka 自己还活着。
Cancel(服务下线):当 provider 关闭时会向 Eureka 发送消息,把自己从服务列表中删除。防
止 consumer 调用到不存在的服务。
Get Registry(获取服务注册列表):获取其他服务列表。
Replicate(集群中数据同步):eureka 集群中的数据复制与同步。
Make Remote Call(远程调用):完成服务的远程调用。

9.什么是CAP定理

(1)什么是CAP原则?

CAP 原则又称 CAP 定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

(2)C、A、P分别表示什么?

在这里插入图片描述

(3)CA、CP、AP分别表示什么含义?

在这里插入图片描述

10.ZooKeeper与Eureka的区别

(1)Zookeeper与Eureka有哪些区别?

在这里插入图片描述

11.Eureka的服务自我保护

(1)什么是自我保护模式?

在这里插入图片描述

(2)为什么要启动自我保护?

在这里插入图片描述

12.关闭Eureka的服务自我保护

(1)如何关闭自我保护?

修改 Eureka Server 配置文件
#关闭自我保护:true:开启自我保护,false:关闭
eureka.server.enable-self-preservation=false
#清理间隔(单位:毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms=60000

13.服务的优雅停服

(1)如何实现优雅停服?

1.添加坐标
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2.修改配置文件
#配置优雅停服
management.endpoints.web.exposure.include=shutdown
#启动shutdown
management.endpoint.shutdown.enabled=true

3.访问URL:http://ip:port/actuator/shutdown

(

2)访问优雅停服的URI是什么?

http://ip:port/actuator/shutdown

14.开启Eureka注册中心的安全认证

(1)实现Eureka安全认证的步骤是什么?

1.添加坐标
<!--Eureka注册中心的安全认证-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.修改配置文件
#注册中心安全认证
spring.security.user.name=user
spring.security.user.password=123456
3.注册地址改为
#设置服务注册中心地址,指向另一个服务
eureka.client.service-url.defaultZone=http://user:123456@eureka2:8761/eureka/

4.启动启动类,访问注册中心则需用户名密码

(2)如果开启安全认证,注册中心在集群环境下各个节点访问时,如何传递用户名与密码?

eureka.client.service-url.defaultZone=http://user:123456@eureka1:8761/eureka/, http://user:123456@eureka2:8761/eureka/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值