1.什么是微服务?
一个大的项目,由多个微服务组成,每个服务都有单一的业务职责,每个服务都要相对独立,每个服务都要向外暴露rest风格的服务接口,每个服务都访问各自的数据库,并且都可以单独的部署
2.服务间的调用方式有哪些?
RPC:
特点:并发能力强
代表框架:dubbo
HTTP:
特点:更轻量,更灵活
代表框架:HttpClient、UrlConnection、OkClient
spring提供了整合:RestTemplate
3:什么是SpringCloud?
SpringCloud是目前国内使用最广泛的微服务框架,集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配
4.SpringCloud中的核心组件?
服务注册中心: eureka nacos Day01
负载均衡: ribbon Day01
熔断器: hystrix、sentinel
服务调用: feign
API网关: gateway
配置中心: nacos
5.SpringBoot、SpringCloud、微服务三者间关系?
SpringCloud是集成微服务功能组件的一款框架,并且SpringCloud底层是依赖于SpringBoot的自动装配原理,但是SpringCloud与SpringBoot二者之间有版本兼容关系
6.什么是注册中心?
注册中心是实现服务管理的核心组件,主要用来存储服务信息,提供了服务和服务地址的映射关系
7.注册中心的作用?
在配置注册中心后,每个服务在调用另外服务的时候,只需要知道服务名称就可以,而注册中心会通过名称获取具体的服务地址进行调用.
同时注册中心分为服务注册和服务发现
一:
搭建eureka-server
1): 创建独立的eureka-server服务
2): 引入eureka依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3):编写启动类
4):编写配置文件:
server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
5):启动:
http://127.0.0.1:10086
二:服务注册
1)引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2)配置文件
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
三:服务发现
1)引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2)配置文件
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
3):服务拉取和负载均衡
@LoadBalanced
修改service方法:
服务注册到nacos
1) 引入依赖(版本锁定)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在每个服务中分别引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)配置nacos地址
spring:
cloud:
nacos:
server-addr: localhost:8848
10.什么是Ribbon? 作用?
Ribbon是一个组件
作用:为我们实现了负载均衡的功能
11.Ribbon的工作原理?
SpringCloudRibbon底层其实就是采用了一个拦截器,拦截了客户端所发出的请求,RibbonLoadBalancerClient会从请求的url中获取服务名称,DynamicServerListLoadBalancer
会根据获取的服务名称获取去eureka中拉取服务列表,而Irule利用其内置的负载均衡规则,从服务列表中选取一个地址.
12.Ribbon支持的负载均衡策略?
Irule中定义了10中不通的负载均衡策略,有随机获取,轮询获取,以区域可用的服务器为基础进行服务器的选择,权重获取,等
13.Ribbon如何配置修改负载均衡策略?
1):代码方式:定义一个新的IRule
@Bean
public IRule randomRule(){
return new RandomRule();
}
2):配置文件方式:
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
14:Ribbon如何设置饥饿加载?
Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载
ribbon:
eager-load:
enabled: true
clients: userservice