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

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

【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行多尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练与分类,实现对不同类型扰动的自动识别与准确区分。该方法充分发挥DWT在信号去噪与特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度与鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测与分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性与效率,为后续的电能治理与设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代码深入理解DWT的实现过程与特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值