关联巧记原理---框架原理

1 篇文章 0 订阅
1 篇文章 0 订阅

------------------Dubbo---------------

Dubbo通讯协议实现的RPC调用的真正原理?(最重点)

巧记版:
1)客户端用唯一ID与请求报文+callback放入全局ConcurrentHashMap,然后再封装ID+报文进连接对象发起异步调用,然后当前线程A开始wait等待服务端的回调。
2)服务端收到请求后把带这个ID的结果返回给客户端。
3)客户端socket连接里,专门监听消息的线程收到消息后,拿到ID从ConcurrentHashMap取出callback,并把返回结果放进callback,然后通过notifyAll()唤醒之前客户端等待的线程A,线程A醒了之后,重新执行callback.get()去抓取刚刚放进去的结果,整个调用完成。

009、看过Dubbo源码吗?说说Dubbo的底层架构原理?(附10层)

dubbo 工作原理10层:
第一层:service 层,接口层,给服务提供者和消费者来实现的
第二层:config 层,配置层,主要是对 dubbo 进行各种配置的
第三层:proxy 层,服务代理层,无论是 consumer 还是 provider,dubbo 都会给你生成代理,代理之间进行网络通信
第四层:registry 层,服务注册层,负责服务的注册与发现
第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务
第六层:monitor 层,监控层,对 rpc 接口的调用次数和调用时间进行监控
第七层:protocal 层,远程调用层,封装 rpc 调用
第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步
第九层:transport 层,网络传输层,抽象 mina 和 netty 为统一接口
第十层:serialize 层,数据序列化层

------------------zk---------------

过半选举算法实现原理

 

 

------------------redis---------------

 

------------------MQ---------------

 

 

------------------ES---------------
ES是java写的,看完源码后

14_分布式搜索引擎的架构是怎么设计的?为啥是分布式的?

15_分布式搜索引擎增删查改的工作流程及原理是什么样的?(读写的原理--写详细原理也介绍了

参考:https://yq.aliyun.com/articles/706605

1、单条数据的写和读的简单过程:

都会拿docid做hash,得到对应的分片编号,然后再去找此分片编号下的主或副本分片

2、全文收索的简单过程

3. ES 删除数据的执行流程
将对应doc在.del文件里标识为deleted态,那么搜索的时候根据.del文件就知道该doc已被删除,不会返回,merge磁盘文件时也会把标记在.del里的真正的从磁盘上删除

4.ES 更新数据的执行流程
原来的doc标识为deleted状态,然后新写入一条数据

5、写的详细原理-----结合四大核心讲解:有4个底层的核心概念,refresh、flush、translog、merge------
以写底层原理为例讲解:
1、refresh---写时直接生成数据文件,先存入buffer(这里是不能被搜索到),数据默认每1s刷到os cache(refresh)才能被收索到,并且有数据才refresh.---解决延迟1S方案:可以通过ES的RESRful API或者Java API,手动执行一次refresh,即手动将buffer中数据刷入os cache
2、flush----30分钟(或translog到达阀值)一次,先refresh到os cache做一次,将os cache中所有数据都fsync到磁盘,然后把磁盘记录的新文件通过commit point标识写到磁盘,且清空translog
3、translog---写时直接生成数据日志translog,直接进入os cache,translog默认每5s刷到磁盘(flush)---解决宕机丢5秒数据的方案:设置每次写入一条数据都flush translog操作
4、merge---segment file磁盘文件达到阀值时,会merge,此时就会将标识为deleted的doc给物理删除。(del文件里标记了删除的docid)
 

ES的持久化、延迟和数据丢失问题讲一下?


持久化:就是translog的作用就是持久化,如果os cache和buffer丢了,可以用5秒前写入物理磁盘的那些translog做恢复(5秒内还没写入磁盘,自身也有丢失风险)

延迟问题:1、refresh---写时直接生成数据文件,先存入buffer(这里是不能被搜索到),数据默认每1s刷到os cache(refresh)才能被收索到,并且有数据才refresh.---解决延迟1S
方案1:可以通过ES的RESRful API或者Java API,手动执行一次refresh,即手动将buffer中数据刷入os cache
方案2:
通过参数index.refresh_interval修改这个刷新间隔时间
附:
间隔设置成-1来临时关闭refresh,不自动刷新入os cache

丢失问题:
translog---写时直接生成数据日志translog,直接进入os cache,translog默认每5s刷到磁盘(flush)---解决宕机丢5秒数据的方案:设置每次写入一条数据都flush translog操作
 

ES调优讲一下?

 

 

 

------------------JVM---------------

讲一下类加载器原理的理解?


 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java_爱吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值