首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/752765

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

HBase中scan的ReadType探究

背景知识 Linux层面 linux对于文件的读取,提供了不同的函数,引用资料如下: 当对同一文件句柄(在Windows下)或是文件描述符(在Linux下)进行随机读写操作时,会存在文件指针的定位与读/写俩个步骤,但由于这不是一个原子操作,就可能产生如下问题:进程A对某文件先定位到 f1 处,然后被中断,然后进程B对同一文件定位到 f2 处,然后被中断,进程A再次执行,从文件的当前指针处开始读或是写,于是这便产生了不是期望的结果了。(这里要注意,对同一文件的俩次打开,得到的将是俩个不同的句柄或是描述符,所以不用担心这种情况会出问题) 解决办法: 在Linux下,pread函数就好像是专门为上面的问题服务的,它本身就是原子性的操作,定位文件指针与读操作一气呵成,而且读操作并不改变文件指针。 总体来说,常用的有seek()+read() 和 pread()这2种方式,优劣如下: seek()+read()非线程安全,但由于利用了文件描述符所保存的文件指针,不需要每次读取时都去定位,因此读取效率较高,应用层面多线程访问时则需要做同步; pread()是原子操作,线程安全,但由于每次都需要定位...

HBase rpc框架介绍

概述 总体结构如下: 客户端 模块介绍 调度执行 该模块主要提供接口转换、错误重试、服务分组等能力; 1:接口转换 服务层定义的服务接口与用户层不同,比如put/delete/increment/append等操作底层都是调用的mutate接口,而batch相关的操作,无论是读还是写都调用multi接口; 转换逻辑封装为一个callable对象,交由RpcRetryingCaller处理; 2:错误重试 RpcRetryingCaller负责与服务代理模块直接交互 ,以及错误时的重试; 3:服务分组 batch相关的操作可能会涉及到多个rs,需要按照rs进行分组,然后多线程并发请求,这些逻辑是在AsyncProcess中; 对于非batch类请求则直接使用RpcRetryingCaller进行调用,AsyncProcess的内部实际上也是依赖了该类来执行单个rs请求; 服务代理 服务代理通常叫stub,即桩的意思,其实现了与服务端同样的接口;对调度执行模块而言,调用stub的方法就相当于调用远程的服务,而不必关心实现细节; 这部分依赖protobuf组件,通过在proto文件中定义se...

相关文章

发表评论

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。