商汤
1.
简历写什么问什么,注意所用技术产品的同类产品生态及对比。
2.
kafka数据分区和消费者的关系,kafka的数据offset读取流程,kafka内部如何保证顺序,结合外部组件如何保证消费者的顺序
1、kafka数据分区和消费者的关系:1个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果
2、kafka的数据offset读取流程
1. 连接ZK集群,从ZK中拿到对应topic的partition信息和partition的Leader
的相关信息2.连接到对应Leader对应的broker
3.
consumer将自己保存的offset发送给Leader
4.
Leader根据offset等信息定位到segment(索引文件和日志文件)
5.
根据索引文件中的内容,定位到日志文件中该偏移量对应的开始位置读取相应长度的数据并返回给consumer
3、kafka内部如何保证顺序:
kafka只能保证partition内是有序的,但是partition间的有序是没办法的。爱奇艺的搜索架构,是从业务上把需要有序的打到同一
个partition。
4、
3.
cms垃圾回收机制
1、概念:CMS全称 Concurrent Mark Sweep,是一款并发的、使用标记
-
清除算法的垃圾回收�,
2、使用场景:GC过程短暂停,适合对时延要求较高的服务,用户线程不允许长时间的停顿。
3、缺点:
1、服务长时间运行,造成严重的内存碎片化。
2、算法实现比较复杂(如果也算缺点的话)。
4、实现机制:根据GC的触发机制分为:
1、周期性Old
GC(被动):2s执行一次;
2、主动Old GC:触发条件:
i.
YGC过程发生Promotion
Failed,进而对老年代进行回收
ii. 比如执行了System.gc(),前提是没有参数ExplicitGCInvokesConcurrent
iii.
其它情况...
4.
springcloud各个组件功能,内部细节,与dubbo区别,dubbo架构,dubbo负载策略
1、springcloud各个组件功能:
a. Ribbon,客户端负载均衡,特性有区域亲和、重试机制。
b. Hystrix,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。
c. Feign,声明式服务调用,本质上就是Ribbon+Hystrix
d. Stream,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。
e. Bus,消息总线,配合Config仓库修改的一种Stream实现,
f. Sleuth,分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。
g. Eureka,服务注册中心,特性有失效剔除、服务保护。
h. Dashboard,Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集�Turbine配合。
i. Zuul,API服务网关,功能有路由分发和过滤。
j. Config,分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式,
2、dubbo负载策略: