突击训练第一季(四)分布式

Java工程师面试突击第一季 redis dubbo 阅读详情

1.体验下分布式

单机

分布式

2.为什么要进行系统拆分?如何进行系统拆分?拆分后不用dubbo可以吗?

(3)拆分后不用dubbo可以吗?

3.说一下dubbo工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求的流程?

4.dubbo支持哪些通信协议?支持哪些序列化协议?

4.1 dubbo支持的协议

  • dubbo协议:默认就是走dubbo协议的,单一长连接,NIO异步通信,基于hessian作为序列化;适用传输数据量很小(每秒请求在100kb以内),但是并发量很高的场景。为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台机器,可能每天调用量达到上亿次!此时用长连接最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就100个连接,然后后面直接基于长连接NIO异步通信,可以支撑高并发请求。否则如果上亿次请求每次都是短连接的话,服务提供者会扛不住的,而且因为走的单一长连接,所以传输数据量太大的话,会导致并发能力降低。所以一般建议是传输数据量很小,支撑高并发访问。
  • rmi协议:走java二进制序列化,多个短连接,适用于提供者数量和费者数量差不多的情况,主要用于文件的传输。
  • hessian协议:走hessian序列化协议,多个短连接,适用于提供者数量比消者数量还多的情况,主要用于文件的传输。
  • http协议:走json序列化
  • webservice协议:走SOAP文本序列化

4.2 dubbo支持的序列化协议

dubbo实际基于不同的通信协议,支持hessian,java二进制序列化,json,SOAP文本序列化等序列化协议。hessian是默认的。

 

5.dubbo支持哪些负载均衡,高可用以及动态代理的策略?

5.1 dubbo负载均衡策略:

  • RandomLoadBalance:随机调用负载均衡,默认情况下,dubbo是随机嗲用实现负载均衡的,可以对provider不同实例设置不同权重,然后按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的策略。
  • RoundRobinLoadBlance:轮询调用,均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性能差的机器负载过高。
  • LeastActiveLoadBlance:最少活跃数调用,这个就是自动感知下,如果某个机器性能越差,那么接受的请求越少,越不活跃,此时就会给不活跃的性能差的机器更少的请求。
  • ConsistentHash LoadBalance:一致性Hash算法,相同参数的请求一定会分发到同一个provider上去,provide挂掉的话,会基于虚拟节点均匀分配剩余的流量,抖动不会太大。如果你需要的不是随机负载均衡,是一类请求都到一个特定的节点,那么可以选择这个策略。

5.2 集群容错策略

  • Failover Cluster - 失败自动切换,自动重试其它机器,默认策略,常用于读操作。
  • Failfast Cluster - 快速失败,一次调用失败就立即失败,常用于写操作。
  • Failsafe Cluster - 失败安全,出现异常时忽略掉,常用于不重要的接口调用。比如记录日志。
  • Failback Cluster - 失败自动恢复,失败了后台记录请求,然后定时重发,比较适合写消息队列。
  • Forking Cluster - 并行调用多个服务提供者,只要一个成功就立即返回。
  • Broadcast Cluster - 传播,逐个调用所用的服务提供者。

5.3 dubbo动态代理策略

默认使用javassist动态字节码生成,创建代理类。也可以通过spi扩展机制配置自己的动态代理策略。

6.SPI时啥思想?dubbo的SPI机制时怎么玩的?

一脸懵逼,知道大概思想意思,具体实现还是不太懂,后续还得深入理解下

官方定义:

SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。

总结:

其核心就是根据配置找到接口对应的实现类

  • 比如java中定义的jdbc接口,但是没有实现类的,使用的时候mysql和oracle相应jar引入实现。
  • dubbo的不同网络协议 protocol接口,META-INF/dubbo/internal/com.alibaba.rpc.Protocol文件里面配置了不同协议实现类
  • 自行覆盖,在META-INF/services 文件夹下创建一个接口全限定名一样的文件,文件里面配置自己的接口实现。

7.基于dubbo如何做服务治理,服务降级以及重试?

                       (3)失败重试

8.分布式系统中接口的幂等性该如何保证?比如不能重复扣款?

9.分布式系统中的接口调用如何保证顺序性?

10.如何设计一个类似dubbo的rpc框架?架构上如何考虑?

11.说说zookeeper一般都有哪些使用场景?

12.分布式锁时啥?对比下redis和zk两种分布式锁的优劣?

12.1 redis分布式锁

方案一: SETNX

方案二: RedLock

12.2 zookeeper分布式锁

12.3redis分布式锁和zk分布式锁的对比

13.说说你们的分布式session方案时啥?怎么做的?

13.1tomcat+redis

13.2 spring session + redis

依赖:

spring 配置:

web.xml

14.了解分布式事务方案吗?你们都咋做的?有什么坑?

单机事务:

分布式事务:

14.1 两阶段提交方案/XA方案

14.2 TCC方案

14.3 本地消息表

14.4 可靠消息最终一致性方案

14.5 最大努力通知方案

15.如何设计要给高并发的系统架构

 

申明:内容来自网络,仅供学习使用
参考:https://apppukyptrl1086.pc.xiaoe-tech.com/detail/p_5d3114935b4d7_CEcL8yMS/6

2021春招面试突击手册:框架+性能优化+微服务+分布式(10W字) 导言 今年似乎因为疫情影响,时间过得特别快,对于需要跳槽换工作的人来,更觉得有些突然,似乎金三银四和金九银四还没开始准备好,就匆匆过去。加上今年的大环境不佳,所以大部分的人在今年的招聘旺季都没有收获到好的结果。 今天分享的主题则是由 一位阿里P7的面试心得,通过32天的高效突击训练,成功拿下offer的学习方法。 篇章分为三大章节,可以根据自己所需来阅读内容和下载资料: 起始篇:梳理路线(自制思维脑图) 进阶篇:深度学习(阅读阿里P8大神手写笔记) 突击篇:面试考点(开源框架+性能优化+微服务架 阅读详情

相关推荐

Benchmark系列——基本概念和分类

本文主要介绍了Benchmark的基本概念和分类情况。

Bluetangos的博客 8433

Java SPI从精通到陌生

1.什么是SPI SPI全称Service Provider Interface,是一种服务发现机制。SPI就是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类 2.好处 小王八:说了这么多,我感觉没有鸟用啊!而且我直接用API接口在本项目实现不行吗? **老王八:**它可以在运行的时候动态替换实现类啊,可拔插啊,每个实现接口的jar就像插件一样,不该调用方代码,直接替换!!!! [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4dQANdaC

qq_40495860的博客 722

体验灵雀云-创建基于Docker的云服务

今天体验了一下灵雀云,创建了第一个基于Docker的云服务。 1.登录灵雀云 2.开始使用 登录之后,从"控制台"进入操作界面,开始创建服务。 首先需要选择一个镜像。灵雀云已经为您提供了一些常用的镜像列表。请在“常用镜像”列表中,选择“其它”,然后找到“alauda/hello-world”镜像,点击它右侧的“选择”按钮,进入服务参数配置页面。 选择完要创建的

tomcat的专栏 3233

Java SPI 学习

什么是java SPI SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。目前市面上有很多框架都是用它来做服务的扩展发现,大家耳熟能详的...

pxc_1994的博客 225

大模型-高通qnn基础

提供较低级别、高度可定制的统一API,通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时(包括Qualcomm Neural Processing SDK、TensorFlow Lite和ONNX运行时)委派工作负载。一个支持异构计算、系统级配置的一体化SDK,旨在将AI工作负载引导到我们平台上的所有加速器核心。为开发人员提供灵活性,包括核心间协作支持和其他高级功能。是一个为训练好的神经网络模型提供高级量化和压缩技术的库。

点滴的岁月 4082

echarts实现折线图上下限区域展示

效果图: 画这种区域中主要是利用了series的两个属性: 思路:上下限都画上区域,然后折线利用图形透明度隐藏,给上区域加上颜色,给下区域加上白色(echarts图背景是啥色,就加啥色) lineStyle: { opacity: 0 }, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形 areaStyle: { color: 'rgba(0,122,255,0.1)' }, // 填充的颜色 我的需求是最大天数、最小天数、

小太阳的博客 1万+

zookeeper 分布式锁原理

笔记来源: Java工程师面试突击专栏 https://apppukyptrl1086.pc.xiaoe-tech.com/detail/p_5d3114935b4d7_CEcL8yMS/6 获取锁的时候, 尝试去创建一个临时节点 . 如果这个临时节点不存在, 那么代表该分布式锁创建成功.

Java持续实践 493

智能家居DIY:用51单片机实现三合一环境监测(温湿度+烟雾+自动灭火)

本文详细介绍了如何利用STC89C52单片机打造智能家居三合一环境监测系统,集成温湿度检测、烟雾报警和自动灭火功能。从硬件选型、电路设计到软件编程,提供完整的DIY方案,帮助读者构建高性价比的家庭安全防护系统,特别适合智能家居爱好者和电子DIY初学者。

yhn4567890的博客 689

突击训练第一季(五)分库分表

1.咱们聊一下你们公司怎么玩分库分表的? (1) 什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?) 2.你们当时是如何把系统不停机迁移到分库分表的? 3.如何设计可以动态扩容缩容的分库分表方案? 步骤: 4.分库分表后,全局id咋生成? 5.说说mysql读写分离的原理?主从同步延时怎么解决? 申明:内容来自网络,仅供学习使用 参考:https://apppukyptrl1086.pc.xiaoe-tech.com/.

java_shm的专栏 217

医学图像处理实战:利用OpenSlide解析病理SVS切片的完整解决方案

本文介绍了使用openslide处理病理SVS切片的完整流程,从基础安装到科研应用。主要内容包括:1)SVS切片特点及openslide工具简介;2)环境配置与软件安装;3)基础操作:读取切片、查看信息、可视化不同层级图像;4)进阶操作:坐标裁剪与批量处理;5)科研方向拓展:结合AI模型进行病理分割分类、量化分析及可视化报告。教程提供了完整的代码示例,帮助毕业设计学生快速掌握病理图像分析的核心技能。

m0_71589036的博客 308

Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

英伟达™(NVIDIA®)Jetson 是一系列嵌入式计算板卡,旨在为边缘设备带来加速的 AI(人工智能)计算。这些小巧而功能强大的设备围绕英伟达™(NVIDIA®)的GPU架构打造,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板卡通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用中。此外,这些板卡基于 ARM64 架构,与传统 GPU 计算设备相比运行功耗更低。英伟达™(NVIDIA®)JetPack SDK。

机器人控制与仿真应用 3875

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

问题二十二:Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?问题十一:表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为主,将该字段拆成子表的好处是什么?今天分享的主题则是由 一位阿里P7的面试心得,通过32天的高效突击训练,成功拿下offer的学习方法。问题二十三:、Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?

m0_63437643的博客 911

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 Var 变量篇】

例如我们已经知道一个符号(可能是变量或者函数)的地址,怎么确定这个地址是一个变量还是一个函数呢?如果是变量的话,变量名是啥?变量定义的位置在哪?如果是函数,函数名是啥?函数定义的位置又在哪呢?查看结构体变量 str_t32 的值。例如我们已经知道了一个符号的地址为。在map文件中的地址为。

CodingCos的博客 2349

太良心了!Java面试高效突击从框架、性能优化、分布式开始,起始篇+进阶篇+突击篇,缺一不可!

导言 今年似乎因为疫情影响,时间过得特别快,对于需要跳槽换工作的人来,更觉得有些突然,似乎金三银四和金九银四还没开始准备好,就匆匆过去。加上今年的大环境不佳,所以大部分的人在今年的招聘旺季都没有收获到好的结果。 今天分享的主题则是由 一位阿里P7的面试心得,通过32天的高效突击训练,成功拿下offer的学习方法。 篇章分为三大章节,可以根据自己所需来阅读内容和下载资料: 起始篇:梳理路线(自制思维脑图) 进阶篇:深度学习(阅读阿里P8大神手写笔记) 突击篇:面试考点(开源框架+性能优化+微服务架

如果频繁就私信一下呢 165

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

突击训练第一季(二)全文检索之ES

1.es的分布式架构原理能说明一下么(es是如何实现分布式的)? es设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。 其核心思想就是在多台机器上启动多个es进程实例,组成一个es集群。接着你搞一个索引,这个索引可以拆分成多个shard,每个shard存储部分数据。 2.es写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊? 3.es在数据量很大的情况下(数十亿级别)如何提高查询性能啊? 4.es生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概

java_shm的专栏 275

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

金三银四Java面试如何一周突击?技术专家模拟面试!上岸有望了!

2026年金三银四Java面试突击攻略:针对1-3年经验者,提供7天高强度备考方案。核心策略聚焦高频考点(Java基础/并发/Spring/MySQL/Redis),采用"80%时间攻克20%重点"原则,强调项目经验与场景题准备。每日计划涵盖知识背诵、项目打磨和AI模拟面试,重点攻克JVM内存结构、分布式锁等高频问题。资源推荐JavaGuide、小林coding等实用资料,建议通过录音/互测强化表达。攻略指出,扎实的项目讲解能力比八股文更重要,一周突击可提升中小厂面试通过率至70%。

m0_57545130的博客 474

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

突击训练第一季(一)消息队列

1.你在系统里面用过消息队列吗?那你说一下你们在项目中是怎么用消息队列的?那你们为什么要用消息队列啊? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦,异步,消峰 1.1解耦: A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统有要发送第二种数据了呢?A系统负责人濒临奔溃中。。。A系统要时时刻刻考...

java_shm的专栏 288

突击训练第一季(三)缓存redis

1.在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果? 1.1 项目中缓存是如何使用的? 项目场景: 1.2为啥在项目里要用缓存呢? 用缓存,主要两个用途,高性能和高并发 (1)高性能 (2)高并发 1.3 用了缓存之后会有什么不良后果? 2.redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程得但是还可以支撑高并发)? 2.1.red..

java_shm的专栏 235

面试突击训练营

为了让大家更好的找到工作,所以我从 2019 年就开始写面试专栏了,到现在已经更新到第 4 版了。从最早的图文专栏,到现在的【视频 + 图文专栏】,面试题的质量和讲解的方式也越来越完善,并且受到了学员的一致好评,也顺利帮助几百名同学找到了理想的工作。而现在为了让“他”发挥更大的作用,所以我把这门面试课做成了面试训练营。什么是面试训练营?面试训练营和面试课最大的区别在于“就业服务”,面试课是单向知识...

磊哥聊Java 296

最新史上最好的Java面试突击课程第一季视频教程

目录 ├─01_先来看一个互联网java工程师的招聘JD.zip ├─02_互联网Java工程师面试突击训练课程第一季的内容说明.zip ├─03_关于互联网Java工程师面试突击训练课程的几点说明.zip ├─04_体验一下面试官对于消息队列的7个连环炮.zip ├─05_知其然而知其所以然:如何进行消息队列的技术选型?.zip ├─06_引入消息队列之后该如何保证其高可用性?.zip ├─07...

weixin_44283616的博客 1867

【昇腾CANN训练营】从单兵突击到军团会战:Ascend C 算子开发之分布式通信(HCCL)实战

2025年昇腾CANN训练营第二季推出系列课程,助力开发者提升算子开发技能,完成认证可获证书及华为奖品。训练营重点讲解昇腾AI异构计算架构中的HCCL通信组件,这是实现多机多卡协同训练的关键技术。文章详细解析了HCCL的核心通信原语(如AllReduce、Broadcast等),并通过分布式累加器案例展示了Host侧通信编排方法。同时介绍了如何将自定义算子与PyTorch分布式框架(DDP/TP)结合使用,让开发者既能专注于算子计算,又能利用现有分布式能力。掌握HCCL可使算子具备处理万亿参数模型的扩展能力

2401_82857325的博客 1166

25天高效突击:3200字总结面试必备(开源框架/性能优化/微服务/分布式)

导言 今天分享的主题则是由 一位阿里P7的面试心得,通过25天的高效突击训练,成功拿下offer的学习方法。 篇章分为三大章节,可以根据自己所需来阅读内容和下载资料: 起始篇:梳理路线(自制思维脑图) 进阶篇:深度学习(阅读阿里P8大神手写笔记) 突击篇:面试考点(开源框架+性能优化+微服务架构+分布式) 点击传送门即可打包所有pdf...... 起始篇:梳理路线(自制思维脑图) 脑图①:JVM和性能调优 脑图②:并发编程(java并发体系) ...

Java6888的博客 283

2019年后,Java岗面试快速突击指南

大家好。这篇文章给大家分享一下如何获得一个可以去参加面试的最小可行知识(Minimal Viable Knowledge)!我自己在就基本上靠文章中的策略在找实习的时候拿到了头条阿里的offer。所以,突击就完事了。包括以下这些部分: 计算机基础、Java基础、网络基础等等基础知识的突击方法 算法题的突击方法 项目的优化方法 最后的一个Bonus。分享一个让面试官一开始就对你留下好印象的...

Java码农那些事 719

30天Java面试突击,秋招成功上岸Java高开岗!(Java面试题及答案分享)

针对秋招Java高级岗位面试,本计划分为4个阶段,覆盖核心知识点+高频面试题+实战技巧,助你高效突击!重点内容:JVM原理并发编程 核心框架:Spring中间件高频考点: 最后冲刺建议:

程序员高级码农的博客 1371
上一篇: dubbo(一)基础知识
下一篇: 突击训练第一季(五)分库分表
夜未眠shm
博客等级 码龄14年 15粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值