SpringCloud⾼频重点⾯试题,看这⼀篇就够了。
⽂章⽬录
Spring Cloud 相关组件
1. Eureka基础知识
json文件怎么提取图片1.1 什么是服务治理
教程的英文缩写SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理
在传统的RPC远程调⽤框架中,管理每个服务与服务之间依赖关系⽐较复杂。因为管理⽐较复杂,所以需要使⽤服务治理,来管理服务与服务之间依赖关系,这样就可以实现服务调⽤、负载均衡、容错等,实现服务发现与注册。
1.2 什么是服务注册与发现
Eureka采⽤了CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中⼼。
⽽系统中的其他微服务,使⽤Eureka的客户端连接到Eureka Server并维持 ⼼跳链接 。这样系统的维护⼈员就可以通过Eureka Server来监控系统中各个微服务是否正常运⾏。
1. 在服务注册与发现中,有⼀个注册中⼼。当服务器启动的时候,会把当前⾃⼰服务器的信息(⽐如:服务地址、通讯地址等)以别名
⽅式注册到注册中⼼中。
2. 另⼀⽅(消费者/服务提供者),以该别名的⽅式去注册中⼼上获取到实际的服务通讯地址,然后再实现本地RPC调⽤。
RPC远程调⽤框架核⼼设计思想:在于注册中⼼,因为使⽤注册中⼼管理每个服务与服务之间的依赖关系(服务治理概念)。在任何RPC 远程框架中,都会有⼀个注册中⼼(存放服务地址相关信息(接⼝地址))
下左图是Eureka系统架构,右图是Dubbo系统架构
1.3 Eureka包含两个组件:Eureka Server 和 Eureka Client
1. Eureka Server提供服务注册中⼼
各个微服务节点通过配置启动后,会在EurekaServer中进⾏注册,这样EurekaServer中的服务注册表中将存储所有可⽤服务节点的信息,服务节点的信息可以在界⾯中直观看到。
2. Eureka Client通过注册中⼼进⾏访问
是⼀个Java客户端,⽤于简化Eureka Server的交互,客户端同时也具备⼀个内置的、使⽤轮询(round-robin)负载算法的负载均衡器。在应⽤启动后,将会向Eureka Server发送⼼跳(默认周期为30秒)。如果Eureka Server在多个⼼跳周期内没有接收到某个节点的⼼
跳,Eureka Server将会从服务注册表中表把这个服务节点移除(默认90秒)
1.4 单机Eureka构建步骤
1.4.1 服务端
引⼊依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
启动类上加注解:@EnableEurekaServer
/**
* @author LongXi
* @create 2021-04-29 22:21
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001 {
public static void main(String[] args){
SpringApplication.run(EurekaMain7001.class,args);
}
}
写配置⽂件
server:
port:7001
eureka:
instance:
hostname: localhost
client:
register-with-eureka:false
fetch-registry:false
service-url:
defaultZone: ${eureka.instance.hostname}:{server.port}/eureka/个人主页网页设计源代码
1.4.2 客户端
将Eureka Client端中的服务提供端注册进Eureka Server作为Service Provider 引⼊依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置⽂件
port:8001
spring:
application:
name: cloud-payment-service # ⼊驻Eureka服务注册中⼼的服务名称
matlab怎么用imread导入图片datasource:
type:DruidDataSource # 当前数据源操作类型
driver-class-name:Driver # mysql驱动包
url: jdbc:mysql://localhost:3306/cloud20?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
eureka:
client:
#表⽰是否将⾃⼰注册进EurekaServer默认为true。
register-with-eureka:true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点⽆所谓,集必须设置为true才能配合ribbon使⽤负载均衡 fetchRegistry:true
service-url:
#单机版
mysql面试题常问defaultZone: localhost:7001/eureka # ⼊驻的服务注册中⼼地址
mybatis:
mapperLocations: classpath:mapper/*.xml
type-aliases-package: cn.ities # 所有Entity别名类所在包
启动类加注解:@EnableEurekaClient
/**
* @author LongXi
* @create 2021-04-25 22:02
*/
@SpringBootApplication
@EnableEurekaClient
public class PaymentMain8001 {
public static void main(String[] args){
SpringApplication.run(PaymentMain8001.class, args);
}
}
1.4.3 将Eureka Client端中的服务消费端注册进Eureka Server称为Service Consumer
配置⽂件
server:
port:80
spring:
application:
name: cloud-order-service
eureka:
client:
#表⽰是否将⾃⼰注册进EurekaServer默认为true。
register-with-eureka:false
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点⽆所谓,集必须设置为true才能配合ribbon使⽤负载均衡 fetchRegistry:true
service-url:
#单机
defaultZone: localhost:7001/eureka
package;
import SpringApplication;
import SpringBootApplication;
import EnableEurekaClient;
/**
* @author sher6j
*/
@SpringBootApplication
@EnableEurekaClient
public class OrderMain80 {
public static void main(String[] args){
SpringApplication.run(OrderMain80.class);
}
网站门户html代码}
此时,再回看最开始的Eureka系统架构,在服务注册中⼼和服务提供者没有集的情况下,7001端⼝的微服务就对应了服务注册中⼼,⽽该服务不需要向服务注册中⼼注册⾃⼰,8001端⼝的微服务作为服务提供⽅⼊住到服务注册中⼼,8002端⼝的微服务作为服务消费⽅也同样注册到服务注册中⼼
1.5 集Eureka构建步骤
1. Eureka集原理说明
服务注册中⼼Eureka Server中分为 服务注册 和 服务发现,
服务注册过程将服务信息注册进服务注册中⼼,
服务发现过程从服务注册中⼼上获取服务信息,⽽这个过程的实质就是:将服务名作为key存储,然后
根据value取得服务的调⽤地址。整个Eureka的过程如果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论