总结:绘上一张Kakfa架构思维大纲脑图(xmind)
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
GitHub地址:https://github.com/abel-max/Java-Study-Note/tree/master
作用:服务治理(服务注册与发现)
两个概念:
服务注册:每个服务单元向注册中心登记自己提供的服务,注册的信息含括主机与端口号、版本号、通信协议等。服务中心会维护一个服务清单,同时使用心跳的方式检测清单中的服务是否可用,若不可用则需要从服务清单中剔除,以达到排除故障服务的效果。
服务发现:微服务下的服务治理框架下,服务之间的相互调用不再通过具体的实例地址进行直接调用,而是通过向服务名发起请求调用实现。一般的逻辑是这样的,A想调用B,但是A刚开始不知道B在哪,所以A向服务中心发起请求获取B的实例地址,服务中心将所有的B实例地址给到A,A调用B的时候会从服务中心返回的B实例列表中通过某种轮询策略获取一个位置来进行服务调用,从而也就是实现了客户端负载。这里的解释只是一个思路,实际上A不会每次都去服务中心查取B地址的,并且不同的应用场景下在缓存和服务剔除机制上也会有一些不同的实现策略
Eureka的服务治理机制
Eureka服务治理基础架构下的三个核心要素
服务注册中心
服务提供者
服务消费者
很多时候,客户端既是服务提供者又是服务消费者
服务提供者
服务注册
服务提供者在启动的时候通过发送REST请求的方式将自己注册到EurecaServer上,同时带上自身元数据信息。 Eureca Server接收到这个REST请求之后,将元数据的信息储存在一个双层结构的Map中,第一层map的key为服务名,第二层的key为具体服务的实例名。
服务续约(Renew)
注册完服务之后,服务提供者会维持一个心跳告诉Eureca Server :“我是一个活着的健康实例”,从而防止Eureca Server的“剔除任务”从服务列表中排除该实例。 eureka.instance.lease-renewal-interval-in-seconds:心跳任务的调用时间,默认三十秒 eureka.instance.lease-expiration-duration0in-seconds:服务时效时间,默认九十秒
服务消费者
获取服务
服务消费者启动的时候会发送一个REST请求给注册中心,获取已注册的服务清单。 为了性能考虑,EurecaServer会维护一份只读的服务清单来返回给 客户端,同时该缓存清单会隔三十秒刷新一次。 eureka.client.fetch-registry:获取服务,默认为true eureka.client.registry-fetch-interval-seconds:缓存清单的更新时间,默认三十秒
调用服务
消费者获取清单之后,就可以获得服务者的实例名和元数据信息。 Ribbon默认使用轮询的方式调用,从而实现客户端负载均衡
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
a03fab5e56a57acb)收录**