互联网技术面试题(一) --- Eureka

[TOC]

一、Eureka

1、什么是微服务/微服务的特点

  • 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
  • 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但"五脏俱全"
  • 独立:服务间互相独立,互不干扰
    • 团队独立:每个服务都是一个独立的开发团队,人数不能过多。
    • 技术独立:面向服务,提供Rest接口,使用什么技术没有别人干涉
    • 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC,移动开发不同的接口
    • 数据库分离:每个服务都使用自己的数据源
    • 部署独立,服务间虽然有调用,但能做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护,易集群Docker部署服务

2、不使用Eureka注册中心的情况下,分布式服务必然面临的问题有哪些?

  • 服务管理
    • 如何自动注册和发现服务
    • 如何实现服务状态的监管
    • 如何实现动态路由,从而实现负载均衡
  • 服务如何实现负载均衡
  • 服务如何解决容灾问题
  • 服务如何实现统一配置

3、什么是高可用?什么是分布式?什么是集群?什么是负载均衡?

高可用?

答:就算是在极端环境下,也可以正常提供服务,哪怕是网线坏了

如何实现高可用?

答:集群(集群中的一些服务器挂了,也可以继续提供服务)

分布式、集群、负载均衡的关系?

答:分布式:把一个大项目,根据业务需求拆分成多个服务,最终部署的时候,也就是分布式部署

集群:把同一份代码,部署在N台服务器上

负载均衡:把请求分摊到多台服务器上

集群之后,必须负载均衡;想要负载均衡,必须集群。

4、Eureka的工作原理

  • Eureka:服务注册中心(可以是一个集群),对外暴露自己的地址
  • 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

5、什么是服务注册

服务提供者在启动时,会向EurekaServer发送一次请求,将自己注册到Eureka注册中心中去

6、什么是服务续约

在注册服务完成以后,服务提供者会维持一个心跳(每30s定时向EurekaServer发送请求),告诉EurekaServer:"我还活着"。这个我们称为服务的续约(renew);

之前的博客写了一篇Eureka服务续约里面有详细介绍

7、什么是失效剔除

在有些时候,我们的服务提供方并不一定会正常下线,可能因为内存溢出、网络故障等原因导致服务无法正常工作。Eureka Server需要将这样的服务剔除出服务列表。因此它会开启一个定时服务,每隔60s对所有失效的服务(超过90秒未响应)进行剔除

8、什么是自我保护

当一个服务未按时进行心跳续约时,在生产环境下,因为网络延迟等原因,此时就把服务剔除列表并不妥当,因为服务可能没有宕机。Eureka就会把当前实例的注册信息保护起来,不予剔除。生产环境下这很有效,保证了大多数服务依然可用。

9、简述什么是CAP,并说明Eureka包含CAP中的哪些特性?

CAP理论:一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。

由于分布式系统必须保证分区容错性,因此我们只能在一致性(Consistency)和可用性(Availability)之间进行权衡。

eureka 遵守 AP(可用性、分区容错性)

Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。Eureka的客户端在向某个Eureka注册时,如果发现连接失败,则会自动切换至其它节点。只要有一台 Eureka还在,就能保证注册服务可用(保证可用性),但查到的信息可能不是最新的(不保证一致性)。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Starter Eureka Server is a starter dependency that provides the Eureka Server module of the Spring Cloud Netflix project. Eureka Server is a service registry that enables microservices to discover and communicate with each other. With Eureka, each microservice registers itself with the Eureka Server and queries the Eureka Server to find other microservices it depends on. The Spring Cloud Starter Eureka Server provides an easy way to set up an Eureka server instance in a Spring Boot application. It includes all the necessary dependencies and configuration to enable the Eureka Server and register services. To use Spring Cloud Starter Eureka Server, you can add the following dependency to your project: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> ``` After adding the dependency, you can annotate your main Spring Boot application class with `@EnableEurekaServer` to enable the Eureka Server: ``` @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } ``` Once you have the Eureka Server set up, you can register microservices with it using the `@EnableDiscoveryClient` annotation in your microservice application. Overall, the Spring Cloud Starter Eureka Server provides an easy and efficient way to set up an Eureka Server in a Spring Boot application and enable microservice communication.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值