java技术圈 为您找到相关结果 99

hbase关于flush和compact参数

hbase 2.2.6 3 hmasters ,400+ regionservers,about 80w regions, totoal hfiles compressed 20PB ,uncompressed 80P (cores40 内存187.4G 磁盘150T)/nodes 主要写入操作bulkload与put,日写入150T Regionserver 堆内存60G 1. hbase flush 和 compact对写的影响 简单说: 写数据时会先写到memstore 当memstore写满或达到其它flush触发条件,memstore刷写生成hfile 当flush时发现store下文件数超过该值hbase.hstore.blockingStoreFiles=16,会报too ma...阅读全文

博文 2023-09-21 14:59:28 jiazz's blog

重新认识 Java 中的内存映射(mmap)-腾讯云开发者社区

mmap 基础概念mmap 是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页到对应的文件磁盘上,即完成了对文件的操作而不必再调用 read,write 等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。mmap工作原理操作系统提供了这么一系列 mmap 的配套函数void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); int munmap( void * addr, size_t len); in...阅读全文

博文 2023-09-13 16:43:08 腾讯云

一招教你怎么用Java调用groovy脚本

为什么要聊groovy呢?其实Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python和Ruby许多强大的特性,Groovy代码能够与Java代码很好地结合,也能用于扩展现有代码。Groovy有哪些特点呢?为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变得非常简单。groovy中基本类型也是对象,可以直接调用对象的方法。支持函数式编程,不需要main函数。直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。OK,接下来切入整体,介绍一下怎么通过Java调用Groovy脚本。Java调用Groovy的几种方法工具:...阅读全文

博文 2024-04-15 17:33:12 知乎

OpenTelemetry-可观察性的新时代

有幸在2019KubeCon上海站听到Steve Flanders关于OpenTelemetry的演讲,之前Ops领域两个网红项目OpenTracing和OpenCensus终于走到了一起,可观察性统一的标准化已经扬帆起航。这篇文章旨在抛砖引玉,希望能够和更多的同学一起交流可观察性相关的内容。前世OpenTracingOpenTracing制定了一套平台无关、厂商无关的Trace协议,使得开发人员能够方便的添加或更换分布式追踪系统的实现。在2016年11月的时候CNCF技术委员会投票接受OpenTracing作为Hosted项目,这是CNCF的第三个项目,第一个是Kubernetes,第二个是Prometheus,可见CNCF对OpenTracing背后可观察性的重视。比如大名鼎鼎的Zipk...阅读全文

博文 2023-09-13 14:46:13 知乎

HBase原理 – 所有Region切分的细节都在这里了 – 有态度的HBase/Spark/BigData

Region自动切分是HBase能够拥有良好扩张性的最重要因素之一,也必然是所有分布式系统追求无限扩展性的一副良药。HBase系统中Region自动切分是如何实现的?这里面涉及很多知识点,比如Region切分的触发条件是什么?Region切分的切分点在哪里?如何切分才能最大的保证Region的可用性?如何做好切分过程中的异常处理?切分过程中要不要将数据移动?等等,这篇文章将会对这些细节进行基本的说明,一方面可以让大家对HBase中Region自动切分有更加深入的理解,另一方面如果想实现类似的功能也可以参考HBase的实现方案。 Region切分触发策略 在最新稳定版(1.2.6)中,HBase已经有多达6种切分触发策略。当然,每种触发策略都有各自的适用场景,用户可以根据业务在表级别选择不同的...阅读全文

博文 2023-09-21 14:20:13 hbasefly.com

一次鞭辟入里的 Log4j2 日志输出阻塞问题的定位

问题现象 线上某个应用的某个实例突然出现某些次请求服务响应极慢的情况,有几次请求超过 60s 才返回,并且通过日志发现,服务线程并没有做什么很重的操作。这种情况断断续续持续了半小时左右。 核心问题定位 由于半小时后,服务实例恢复正常,并且出现请求极慢的次数并不太多,没有能及时打印出现问题的时候线程堆栈采集相关信息。但是,我们有自己的法宝,JFR(关于 JFR,请参考我的另一系列JFR全解)。 JFR 非常适合用来事后复盘定位问题,并且配置得当的话,性能损耗极小,并且不像 APM 系统一样需要额外的采集以及需要统一的服务进程进行整合展现。我们随用随取即可,但是 JFR 面向的是单进程的问题定位,找到问题进程,定位跨进程业务问题链路追踪还是需要 APM 系统的。 我们通过如下命令采集对应时间段的...阅读全文

博文 2023-05-19 03:51:27 HeapDump性能社区

天翼云存储资源盘活系统HBlock,全面释放企业数据价值

9月6日,天翼云与科技媒体InfoQ联合举办的以“存储难题新解法,揭秘极/致易用的HBlock”为主题的线上技术分享会圆满落幕。天翼云国际业务事业部研发专家武志民与存储产品线总监魏玮以“天翼云存储资源盘活系统 HBlock,深挖独创技术亮点与实战演练”为主题,分享了HBlock在安装部署、数据可靠性和安全性保障、混沌测试与性能分析等内容。安装部署超易用,打造企业数据存储底座随着数字经济的蓬勃发展,数据作为核心生产要素,已成为数字经济发展的重要基石。与此同时,数据规模持续爆炸性增长,数据类型不断丰富,企业对数据处理与分析速度要求越来越高,带来了一系列存储的新挑战。尽管市场上的分布式存储产品和解决方案层出不穷,但如何提高企业存储资源利用率,同时满足安全可靠、高性能、方便易用、降本增效等需求并不容...阅读全文

博文 2023-09-15 11:03:43 Tianyiyun

Spring WebFlux-入门

webflux是什么 webflux是spring推出的响应式web框架,它的对标产品为spring-mvc, 与传统的spring-mvc相比较,webflux是完全非阻塞式的。spring官网上的这张图向我们展示了两者之间的主要差别: 编程模式:命令式编程(mvc:imperative) VS 声明式编程(webflux:declarative) 在mvc中,我们在方法为单位,组织我们的每一条命令,虚拟机按照我们的编排,顺序地执行这些命令,程序执行 流程易于理解,编程和debug较为简单 在webflux中,我们以操作符(operator)串起来的流来定义我们想让程序如何执行,但这只是一个声明,就好 像我们写的是一个菜谱,没有原材料来的话,它就是一个静态的菜谱,在webflux中,这个材...阅读全文

博文 2023-05-11 10:06:41 掘金

C++从0实现百万并发Reactor服务器[完结13章]

![1.png](http://static.itsharecircle.com/240130/b0c07642d8e8837d138ca05fd631160f.png) 一、reactor是什么?怎么理解? reactor是一种设计模式, 是服务器的重要模型, 是一种事件驱动的反应堆模式, 高效的事件处理模型。 reactor 反应堆: 事件来了才执行,事件类型可能不尽相同,所以我们需要提前注册好不同的事件处理函数。事件到来就由 epoll_wait 获取同时到来的多个事件,并且根据数据的不同类型将事件分发给事件处理机制 (事件处理器), 也就是提前注册的哪些接口函数。 reactor模型的设计思想和思维方式:它需要的是事件驱动,相应的事件发生,根据事件自动的调用相应的函数,所以需要提前注...阅读全文

博文 2024-01-30 10:06:55 feilipu2023nui

图文轻松说透 K8S Pod 各种驱逐场景

图文轻松说透 K8S Pod 各种驱逐场景 Kubernetes Pod 被驱逐是什么意思? 它们被终止,通常是没有足够资源的结果。但是为什么会这样呢? 驱逐是指派给节点的Pod 被终止的过程。Kubernetes 中最常见的情况之一是Preemption,为了在资源有限的节点中调度新的 Pod,需要终止另一个 Pod 以释放资源。 此外,Kubernetes 会不断检查资源并在需要时驱逐 Pod,这个过程称为节点压力驱逐。 在本文中,您将发现: Pod 被驱逐的原因:抢占和节点压力抢占式驱逐Pod 调度Pod 优先级优先级示例节点压力驱逐服务质量等级其他类型的驱逐API 发起的驱逐基于污点的驱逐node 级别排空(drain)Prometheus 中的 Pod 驱逐监控结论说明 Pod 被...阅读全文

博文 2023-09-21 10:35:37 知乎

使用SpringSecurity设置角色和权限的注意点_51CTO博客_springsecurity权限控制

目录​​SpringSecurity设置角色和权限​​​​概念​​​​使用mock代码​​​​在controller中为方法添加权限控制​​​​Security角色和权限的概念​​Security中一些可选的表达式SpringSecurity设置角色和权限概念在UserDetailsService的loadUserByUsername方法里去构建当前登陆的用户时,你可以选择两种授权方法,即角色授权和权限授权,对应使用的代码是hasRole和hasAuthority,而这两种方式在设置时也有不同,下面介绍一下:角色授权:授权代码需要加ROLE_前缀,controller上使用时不要加前缀权限授权:设置和使用时,名称保持一至即可使用mock代码@Componentpublic class MyU...阅读全文

博文 2023-09-13 14:18:18 blog.51cto.com

Linux系统性能监控工具:tsar 安装、配置、以及使用 - 宇宙神奇

介绍tsar 是淘宝自己开发的一个监控工具,可用于收集和汇总系统信息,例如CPU,负载,IO和应用程序信息,例如nginx,HAProxy,Squid等。结果可以存储在本地磁盘或发送到Nagios。tsar 可以通过自己开发模块轻松扩展,这使得它成为一个强大的监控工具。 总体架构Tsar是基于模块化设计的程序,程序有两部分组成:框架和模块。框架程序源代码主要在src目录,而模块源代码主要在modules目录中。框架提供对配置文件的解析,模块的加载,命令行参数的解析,应用模块的接口对模块原始数据的解析与输出。 模块提供接口给框架调用。tsar依赖与cron每分钟执行采集数据,因此它需要系统安装并启用crond,安装后,tsar每分钟会执行tsar –cron来定时采集信息,并且记录到原始日志文...阅读全文

博文 2023-09-13 14:48:05 博客园

prometheus中step或resolution的含义_iceman1952的博客

prometheus官方文档对resolution的解释真是语焉不详,只有下面寥寥几句话 https://prometheus.io/docs/prometheus/latest/querying/examples/ Subquery Return the 5-minute rate of the http_requests_total metric for the past 30 minutes, with a resolution of 1 minute. rate(http_requests_total[5m])[30m:1m] 由于官方文档的缺失,想了解也无从看起。网上有两篇文章解释的比较清楚: https://blog.csdn.net/weixin_33778778/articl...阅读全文

博文 2023-07-12 11:35:24 CSDN博客

Java中RandomAccessFile用法

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 文章目录 介绍 RandomAccessFile 使用 创建对象 写方法 读取方法 介绍 java.io.RandomAccessFile 1、读写文件的工具 2、将文件中的字节数据,当作数组,用下标访问指定位置的字节值 RandomAccessFile 既可以读取文件内容,也可以向文件输出数据。同时,RandomAccessFile 支持“随机访问”的方式,程序快可以直接跳转到文件的任意地方来读写数据。 由于 RandomAccessFile 可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,而不是把文件从头读到尾,使用 RandomAccessFile 将是更好的选择。 RandomAccessFile 允许自由定义文...阅读全文

博文 2023-05-15 06:07:21 掘金

Hbase-之Bloom Filter布隆过滤器 & hbase请求交互_hbase client 开启布隆

Hbase-之Bloom Filter布隆过滤器&Hbase 1 BloomFilter是什么? 布隆过滤器,以它的创始人Burton Howard Bloom的名字命名,首先明确一个点,它只是一个数据结构,这个数据结构最开始被设计成预测一个给定的元素在某个数据集中是否存在,它有如下特点: 精确的结果不一定准确,也就是返回的a存在于集合A结果不一定是准确的;不精确的结果一定是对的,即a不存在与集合A那是约等于100%是准确的。 布隆过滤器很适用于类似于Hbase这样的大数据集,如果想了解更多Bloom Filer可以参阅:布隆过滤器具体算法实现 在Hbase中,BloomFilter提供了一个轻量级的数据结构减少Disk上目标rowkey所在文件Storefiles的读取次数,BloomFi...阅读全文

博文 2024-01-09 17:38:57 CSDN博客

响应式编程入门之 Project Reactor

本文目标理解响应式编程前言之前的 《聊聊 IO 多路复用》 中,我们理解了非阻塞 IO 的意义。但是 Spring MVC 并不能完美的应用非阻塞编程,于是 Spring 团队开发了 WebFlux,而 WebFlux 的基础正是本文要讲到的 Project Reactor(下文简称为 Reactor)本文以 Reactor 为例带大家入门响应式编程版本 io.projectreactor reactor-core 3.4.6 什么是 Reactor Reactor 是 JVM 的非阻塞响应式编程基础,支持背压。 它...阅读全文

博文 2023-05-11 10:09:37 知乎

各类数据库 如何不输出执行结果只显示执行时间 / 执行计划_千里马临时数据库只显示当天的

进行sql优化时有些sql输出巨长,一执行疯狂刷屏。这里列一个小汇总,记录各类数据库如何不输出执行结果只显示执行时间 / 执行计划。 Oracle set autotrace trace set timing on -- 恢复输出 set autottrace off SqlServer 其实SqlServer基本没有这个需求,SqlServer主要都是用图形化的工具 --实际执行计划 set statistics profile on --返回执行时间和CPU时间 set statistics time on --输出语句物理读和逻辑读数目 set statistics io on PG EXPLAIN ANALYZE sql语句 在pg中查看sql的解析时间 van=# set log_...阅读全文

博文 2023-09-13 16:40:25 CSDN博客

Nginx工作原理

本文分享自天翼云开发者社区《Nginx工作原理》,作者:王****秀Nginx的进程模型Nginx服务器由一个Master进程和多个Worker进程组成:Master进程:管理Worker进程。对外接口:接收外部的操作(信号);对内转发:根据外部操作的不同,通过信号管理Worker;监听:监控Worker进程的运行状态,Worker进程异常终止后,自动重启Worker进程。Worker进程:所有Worker进程都是平等的,用于处理网络请求。进程数量:在nginx.conf中配置,一般设置为核心数,充分利用CPU资源,同时,避免进程数量过多,避免进程竞争CPU资源,增加上下文切换的损耗。HTTP连接建立和请求处理过程Nginx启动时,Master进程加载配置文件。Master进程,初始化监听的...阅读全文

博文 2023-10-30 16:07:23 Tianyiyun

万字长文详解HBase读写性能优化_51CTO博客_hbase 读写性能

一、HBase 读优化 1. HBase客户端优化 和大多数系统一样,客户端作为业务读写的入口,姿势使用不正确通常会导致本业务读延迟较高实际上存在一些使用姿势的推荐用法,这里一般需要关注四个问题: 1) scan缓存是否设置合理? 优化原理:在解释这个问题之前,首先需要解释什么是scan缓存,通常来讲一次scan会返回大量数据,因此客户端发起一次scan请求,实际并不会一次就将所有数据加载到本地,而是分成多次RPC请求进行加载,这样设计一方面是因为大量数据请求可能会导致网络带宽严重消耗进而影响其他业务,另一方面也有可能因为数据量太大导致本地客户端发生OOM。在这样的设计体系下用户会首先加载一部分数据到本地,然后遍历处理,再加载下一部分数据到本地处理,如此往复,直至所有数据都加载完成。数据加载...阅读全文

博文 2024-01-11 19:59:06 blog.51cto.com

重新认识 Java 中的内存映射 mmap

mmap 基础概念mmap 是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页到对应的文件磁盘上,即完成了对文件的操作而不必再调用 read,write 等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。操作系统提供了这么一系列 mmap 的配套函数void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); int munmap( void * addr, size_t len); int msync(...阅读全文

博文 2023-05-15 03:54:19 知乎

Java IO学习笔记三:MMAP与RandomAccessFile - Grey Zeng

作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和FileReader/Writer 普通的Reader和Writer只能顺序读写数据,RandomAccessFile提供了一个独有的seek方法,可以修改文件内容的指针,从而可以方便读取和修改文件中的任意位置。示例: import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import static java.nio.charset.Standar...阅读全文

博文 2023-05-12 16:32:23 博客园

Linux 查看磁盘IO并找出占用IO读写很高的进程-腾讯云开发者社区

背景-线上告警线上一台服务器告警,磁盘利用率 disk.util > 90,并持续告警。登录该服务器后通过 iostat -x 1 10 查看了相关磁盘使用信息。相关截图如下:1 # 如果没有 iostat 命令,那么使用 yum install sysstat 进行安装 2 # iostat -x 1 10复制由上图可知,vdb磁盘的 %util【IO】几乎都在100%,原因是频繁的读取数据造成的。其他字段说明Device:设备名称 tps:每秒的IO读、写请求数量,多个逻辑请求可以组合成对设备的单个I/O请求。 Blk_read/s (kB_read/s, MB_read/s):从设备读取的数据量,以每秒若干块(千字节、兆字节)表示。块相当于扇区,因此块大小为512字节。 Blk_wrt...阅读全文

博文 2023-11-06 18:57:33 腾讯云

Java IO 基础知识总结

# IO 流简介IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。# 字节流# InputStream(字节输入流)InputStream用于从源头(通常是文件)读取数据(字节信息)到内存中,java.io....阅读全文

博文 2023-05-18 09:18:21 JavaGuide(Java面试 + 学习指南)

保姆级别的 PromQL 教程-腾讯云开发者社区

这篇文章介绍如何使用 PromQL 查询 Prometheus 里面的数据。包括如何使用函数,理解这些函数,Metrics 的逻辑等等,因为看了很多教程试图学习 PromQL,发现这些教程都直说有哪些函数、语法是什么,看完之后还是很难理解。比如 [1m] 是什么意思?为什么有的函数需要有的函数不需要?它对 Grafana 上面展示的数据有什么影响?rate 和 irate 的区别是什么?sum 和 rate 要先用哪个后用哪个?经过照葫芦画瓢地写了很多 PromQL 来设置监控和告警规则,我渐渐对 PromQL 的逻辑有了一些理解。这篇文章从头开始,通过介绍 PromQL 里面的逻辑,来理解这些函数的作用。本文不会一一回答上面这些问题,但是我的这些问题都是由于之前对 PromQL 里面的逻辑...阅读全文

博文 2023-09-13 14:50:00 腾讯云

linux环境常用的性能监控和协助开发调试工具_s1mba的博客

linux有诸多优秀的工具帮助我们分析服务器各项性能指标和协助开发调试工作。下面只列举比较基础的命令,且一般是集成在linux环境中而不需再次安装的命令。更多更详细的命令可以参考 https://github.com/brendangregg/perf-tools A 、CPU进程相关 常用工具列举下:uptime、ps、top、mpstat、pidstat等 uptime: 查看系统运行时间,平均负载等。 ps:可查看某个进程占用CPU资源百分比;查看线程信息 ps -eLf top/htop/atop:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示; top -Hp pid(主线程id) 可以看到多线程程序中所有线程的状态。 mpstat: 可以查...阅读全文

博文 2023-05-15 08:57:04 CSDN博客

HBase如何实现write写入优化_云数据库HBase版

HBase基于LSM模式,写是写HLOG及Memory的,也就是基本没有随机的IO,所以在写链路上性能高效还比较平稳。很多时候,写都是用可靠性来换取性能。 批量写 也是为了减少rpc的次数HTable.put(List) Auto Flush autoflush=false可以提升几倍的写性能,但是还是要注意,直到数据超过2 M(由hbase.client.write.buffer决定)或用户执行了hbase.flushcommits()时才向regionserver提交请求。需要注意并不是写到了远端。 HTable.setWriteBufferSize(writeBufferSize)可以设置buffer的大小。 服务端优化 WAL Flag 不写WAL可以成倍提升性能,因为不需...阅读全文

博文 2023-05-16 08:11:25 阿里云帮助中心

iostat的深入理解 - yuyue2014

问题背景 iostat -xdm 1 通常用来查看机器磁盘IO的性能。 我们一般会有个经验值,比如,ioutil要小于80%, svctm要小于2ms。 前几天碰到一个奇怪的现象:有一台SSD机器,磁盘的iops在1万多,吞吐量在100多M,看来压力并不大,但是ioutil一直在90%以上。SSD的磁盘怎么会只能承受这么点压力? 下面是当时tsar的数据: 针对这个问题的结论 ioutil是繁忙度的一个度量(非空闲时间)。对于后面有多块磁盘支撑的虚拟设备意义不大。所以对于SSD,并不能说ioutil到了100%了,磁盘就到达最大极限性能了。 官方文档的描述 Percentage of elapsed time during which I/O requests were issued to ...阅读全文

博文 2023-11-01 16:05:51 博客园

云电脑:IO虚拟化实现的技术分析

本文分享自天翼云开发者社区《云电脑:IO虚拟化实现的技术分析》,作者:大利云电脑是一种基于云计算技术的虚拟化电脑,它通过网络将物理硬件资源虚拟化成多个虚拟机,每个虚拟机都拥有独立的操作系统和应用程序。IO虚拟化技术是实现云电脑的关键技术之一,它可以实现网络和存储等资源的虚拟化。本文将从专业论述的角度来探讨云电脑中IO虚拟化技术的实现原理、分类和应用场景。一、IO虚拟化技术的实现原理IO虚拟化技术是一种将硬件资源虚拟化的技术,它可以在虚拟机中模拟真实的网络和存储设备,使得虚拟机可以像真实的计算机一样进行网络访问和数据存储。IO虚拟化技术的实现原理主要包括以下几个方面:1.硬件资源的虚拟化:IO虚拟化技术通过在物理硬件资源上添加虚拟化层,将物理硬件资源划分为多个虚拟资源,每个虚拟资源都有独立的内...阅读全文

博文 2023-12-04 16:37:27 Tianyiyun

Kafka之ISR机制的理解

Kafka对于producer发来的消息怎么保证可靠性? 每个partition都给配上副本,做数据同步,保证数据不丢失。 副本数据同步策略 和zookeeper不同的是,Kafka选择的是全部完成同步,才发送ack。但是又有所区别。 所以,你们才会在各种博客看到这句话【kafka不是完全同步,也不是完全异步,是一种ISR机制】 这句话对也不对,不对也对(谜语人......) 首先笔者认为:Kafka使用的就是完全同步方案。 完全同步的优点 同样为了容忍 n 台节点的故障,过半机制需要 2n+1 个副本,而全部同步方案只需要 n+1 个副本, 而 Kafka 的每个分区都有大量的数据,过半机制方案会造成大量数据的冗余。(这就是和zookeeper的不同) 完全同步会有什么问题? 假设就有这么...阅读全文

博文 2023-12-26 15:42:49 CSDN博客

初识 NIO, 你了解io 和nio吗? 了解直接缓冲区和非直接缓冲区的区别吗?_兮家小二的博客

一、nio 是什么? 1、Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始) 2、Java NIO提供了与标准IO不同的IO工作方式。 3、nio 主要面向于网络编程 二、nio 和 io 的区别? 1、IO基于字节流和字符流进行操作的 2、NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 3、NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。 io 流实现过程 数据传递是单向的,写数据只管把数据往文件丢,读也是同理 并且 io 基本都是非直接缓冲区传递(速度慢) nio 实现过程 先...阅读全文

博文 2023-09-13 16:43:52 CSDN博客

深入浅出分析LSM树(日志结构合并树)

零、前言最近在调研NoSQL数据库,发现RocksDB、LevelDB、HBase以及Prometheus等,其底层的存储引擎都是基于LSM树,于是决定花时间彻底吃透LSM树这一数据结构。不幸的是,在查阅资料学习的过程中,发现网上各种文章汗牛充栋、抄来抄去,不是文不对题就是不知所云。一气之下决定自己写一篇出来消消气,便有了这篇文章。。。PS:学了这么多数据结构,LSMTree应该是最年轻的一个,它在1996年被设计出来(属老鼠的),年纪比我还小~相比于B/B+树或者倒排索引,LSMTree采用了“疯狂到不顾一切”的干啥都磁盘顺序写的方案,赋予了它无与伦比的写吞吐量。一、LSM树数据结构定义查阅了一些资料,LSM树并没有一种固定死的实现方式,更多的是一种将:“磁盘顺序写” + “多个树(状数据...阅读全文

博文 2023-05-11 09:07:03 知乎

7-文件IO

1. 阻塞 IO通常来说,从普通文件读数据,无论你是采用 fscanf,fgets 也好,read 也好,一定会在有限的时间内返回。但是如果你从设备,比如终端(标准输入设备)读数据,只要没有遇到换行符(’\n’),read 一定会“堵”在那而不返回。还有比如从网络读数据,如果网络一直没有数据到来,read 函数也会一直堵在那而不返回。read 的这种行为,称之为 block,一旦发生 block,本进程将会被操作系统投入睡眠,直到等待的事件发生了(比如有数据到来),进程才会被唤醒。系统调用 write 同样有可能被阻塞,比如向网络写入数据,如果对方一直不接收,本端的缓冲区一旦被写满,就会被阻塞。1.1 阻塞读终端实验代码// 文件名:blockdemo.c#include 阅读全文

博文 2023-05-15 10:06:01 阻塞与非阻塞IO_51CTO博客_阻塞io和非阻塞io区别

java使用nio读写文件_使用nio读取文件_小码农叔叔的博客

IO原理 最近在研究 JAVA NIO 的相关知识,学习NIO,就不能提到IO的原理和事项,必经NIO是基于IO进化而来 IO涉及到的底层的概念大致如下: 缓冲区操作。2) 内核空间与用户空间。3) 虚拟内存。4) 分页技术 一,虚拟存储器 虚拟存储器是硬件异常(缺页异常)、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。 虚拟存储器的三大能力: ①将主存看成是一个存储在磁盘上的地址空间的高速缓存。 ②为每个进程提供了一个一致的地址空间。 ③保护每个进程的地址空间不被其他进程破坏。 虚拟内存的两大好处: ① 一个以上的虚拟地址可指向同一个物理内存地址。 ② 虚拟内存空间可大于实际可用的硬件内存。 二,用户空间与内核空间 设虚拟地址为32位...阅读全文

博文 2023-05-15 10:50:14 CSDN博客

Java序列化框架Kryo

Kryo 是一个Java序列化框架,它以其高效和快速的性能而闻名,通常用于高性能场景如网络通信、缓存、持久化存储以及大数据处理等。Kryo 通常比 Java 内置的序列化机制更快并且产生的序列化数据更小。以下是 Kryo 序列化库的一些关键特性:高效的性能:Kryo 是为了高性能而设计的,它在速度和序列化结果的尺寸上通常优于许多其他序列化库。易用性:Kryo 提供了一个简单的API,这使得进行序列化和反序列化操作变得容易。灵活的配置:Kryo 允许用户对序列化过程进行自定义配置,例如可以选择是否注册类,是否使用字段名进行序列化等。可插拔的序列化策略:可以为不同的类型指定不同的序列化器,也可以自定义序列化器。前向/后向兼容的版本控制:通过配置,可以允许不同版本的类之间相互序列化。Kryo 在 ...阅读全文

博文 2024-05-12 12:31:11 zhidiantech

深入讲解 linux 中 inode、硬链接、软链接的原理_软链接是怎么实现的 inode

inode定义 inode 是 linux 系统中用作数据索引的标识符。 简单来说,inode 指示了一个文件的基本信息,如inode编号、修改时间、文件的位置等,就如同一本书的目录,会直接告诉你想看的章节是在第几页。不同的是,书是以页为单位的,而 linux 文件存取是以“块”为单位的。 操作系统在读取硬盘的时候,会一次性读取一个“块”(一个“块”的大小往往是4KB,包含了连续8个扇区,每个扇区存储512个字节)。而inode就告诉了文件位于哪个“块”,于是系统就会从这个“块”开始读取内容,我们就可以看到这个文件的内容。 每个文件都有对应的inode,存储着关于这个文件的基本信息。linux 系统不使用文件名,而使用 inode 号来识别文件。对于使用者,我们是通过文件名打开的文件;但是对...阅读全文

博文 2024-02-28 10:53:51 CSDN博客

磁盘满了对日志打印(Logback)的影响_linux空间满了导致日志不打印怎么办

背景 我们生产环境有一个服务半夜报警:磁盘剩余空间不足10%,请及时处理。排查后发现是新上线的一个功能,日志打太多导致的,解决方法有很多,就不赘述了。领导担心报警不及时、或者报警遗漏,担心磁盘满了对线上业务有负面影响,甚至不可用,令我研究一下该情况下对服务的影响。 正文 注:我们线上的应用使用Logback日志框架进行打印,所以log4j、log4j2或其它日志框架不在本次研究的范围。 实验研究 实验步骤 启动服务,观察各项指标正常(模拟正常工作的服务以及环境状态)将磁盘写满观察应用服务、宿主机各项指标,查看服务响应是否正常(包括功能以及性能)将大文件删除(恢复)重复第3步 实验过程 第1、3、5步重在观测,不赘述。 第2步的模拟磁盘写满,使用linux的fallocate命令。 将磁盘写满...阅读全文

博文 2024-06-05 19:23:14 CSDN博客

nvme磁盘故障注入方法

本文分享自天翼云开发者社区《nvme磁盘故障注入方法》,作者:曹****飞在存储系统中,磁盘的故障是很可能出现的问题。存储软件的设计需要对故障进行处理,提高系统的健壮性。然而磁盘的故障是不可控的,当我们想测试软件故障处理的分支时,不是很方便。用软件模拟的方法能覆盖的场景比较少,而且和实际故障的差距会比较大。因此,如果能让故障下沉到磁盘,尽可能的靠近磁盘,才能构造出尽可能真实的故障场景。本文针对nvme磁盘,在磁盘驱动这一层调研了几种可以注入磁盘故障的方法。1. write uncorrectable通过向nvme控制器发送write uncor命令,标记指定的LBA范围为invalid,当读到这个LBA范围时,ctrl会返回Unrecovered Read Error错误。可以用于模拟读的m...阅读全文

博文 2024-08-09 16:16:35 Tianyiyun

云原生可观测框架 OpenTelemetry 基础知识(架构/分布式追踪/指标/日志/采样/收集器) - 为少

什么是 OpenTelemetry? OpenTelemetry 是一个开源的可观测性框架,由云原生基金会(CNCF)托管。它是 OpenCensus 和 OpenTracing 项目的合并。旨在为所有类型的可观测信号(如跟踪、指标和日志)提供单一标准。 https://opentelemetry.io https://www.cncf.io https://opencensus.io OpenTelemetry 指定了如何收集遥测数据并将其发送到后端平台。通过提供通用的数据格式和 API, OpenTelemetry 使组织更容易共享和重用遥测数据,从而与各种可观测性工具和平台集成。 OpenTelemetry 架构促进了灵活性、互操作性和可扩展性,使开发人员能够采用满足其特定需求和环境的...阅读全文

博文 2024-07-18 10:48:52 博客园

弹性云主机实例怎么选?

本文分享自天翼云开发者社区《弹性云主机实例怎么选?》,作者:大风吹来的胖狗通过使用弹性云主机,可以轻松构建计算资源,分秒交付、快速部署,无需采购硬件设置,无额外运维成本,按量使用/包年购买灵活选择。使用弹性云主机好处这么多,那我们到底应该怎么选择最适合、性价比最高的实例类型呢?天翼云弹性云主机有S/M/C/G等系列,不同系列的主机核数和内存也不尽相同。我们购买任意一件商品之前,首先要考虑的一个问题是“我的需求是什么?”,在购买云服务产品的时候也是如此。新手小白在进行云主机选型之前,可以先对业务场景和需求进行分析。​通用型弹性云主机通用型弹性云主机(S2/M2/S3/S6/S7)主要提供基本水平的vCPU性能、平衡的计算、内存和网络资源,可以用在资源需求平衡的场景。通用计算增强型云主机通用计算...阅读全文

博文 2024-07-05 18:00:37 Tianyiyun

rbd常用的配置参数

本文分享自天翼云开发者社区《rbd常用的配置参数》,作者:l****nrbd的基本介绍rbd的架构如下图所示:​rbd采用CRUSH算法实现数据的随机分布。CRUSH算法,即Controlled Replication Under Scalable Hashing,是一种基于哈希的数据分布算法。CRUSH算法以数据唯一标识符、当前存储集群的拓扑结构以及数据备份策略作为CRUSH的输入,可以随时随地通过计算获取数据所在的底层存储设备并直接通信获取或者写入数据,从而避免查表操作,实现去中心化和高度并发,将数据均衡的存储到各个存储节点,实现数据存储的负载均衡;另外去中心化以及哈希的数据随机分布,使得rbd存储在理论上具备无限的可扩展性。CRUSH算法支持数据的多种备份策略,支持可配置副本数,支持存...阅读全文

博文 2024-07-16 16:08:32 Tianyiyun

“软件系统三高问题”高并发、高性能、高可用系统设计经验

总的来说解决三高问题核心就是 “分字诀” 业务分层、系统分级、服务分布、数据库分库/表、动静分离、同步拆分成异步、单线程分解成多线程、原数据缓存分离、分流等等。。。。直观的表述就是:从前端用的CDN、动静分离,到后台服务拆分成微服务、分布式、负载均衡、缓存、池化、多线程、IO、分库表、搜索引擎等等。都是强调一个“分”字。 原文地址: 【高并发、高性能、高可用】系统设计经验 软件开发通常会提到一个名词 “三高”,即高并发、高性能、高可用。 具体的指标定义,如:高并发方面要求QPS 大于 10万;高性能方面要求请求延迟小于 100 ms;高可用方面要高于 99.99%。 接下来,我们重点来介绍这 三高 一、高并发 我们使用 QPS(Queries Per Second,每秒查询率)来衡量系统承载...阅读全文

博文 2024-06-19 15:48:56 阿里云开发者社区

ceph数据重构原理

本文分享自天翼云开发者社区《ceph数据重构原理》,作者:x****n在分布式存储系统Ceph中,硬盘故障是一种常见问题。为了保证数据安全,当发生硬盘故障后,分布式存储系统会依据算法对故障硬盘上的数据进行数据重构及转储。和一般分布式系统一样的是,Ceph同样使用多副本机制来保证数据的高可靠性(注:EC在实现层面可以理解为副本机制的一种),给定一份数据,Ceph在后台自动存储多份副本(一般使用3个副本),从而使得在硬盘损毁、服务器故障、机柜停电等故障情况下,不会出现数据丢失,甚至数据仍能保持在线。不过在故障发生后,Ceph需要及时做故障恢复,将丢失的数据副本补全,以维系持续的数据高可靠性。一.PG和PGLogCeph中对象数据的维护由PG(Placement Group)负责,PG作为Ceph...阅读全文

博文 2024-07-31 11:32:53 Tianyiyun

阿里 P7二面:Redis 执行 Lua,到底能不能保证原子性?

你好,我是猿java。 Redis 和 Lua,两个看似风流马不相及的技术点,为何能产生“爱”的火花,成为工作开发中的黄金搭档?技术面试中更是高频出现,Redis 执行 Lua 到底能不能保证原子性?今天就来聊一聊。 要想弄清楚这个问题,需要对“原子性”这个概念有一个清晰的认识,因此,首先要分析的是原子性的概念。 一、原子性通常意义的原子性通常意义上,我们说的原子性是指关系型数据库 RDBMS(比如 MySQL)的原子性,也就是 ACID(Atomicity、Consistency、Isolation、Durability)中 Atomicity这一项特性。 ACID 中的原子性指:事务中的所有操作要么全部执行,要么全部不执行。 这里以银行转账,账户A 给账户B 转账100元为例来解释原子性...阅读全文

博文 2024-08-22 17:32:15 猿java

DPDK简介和原理

本文分享自天翼云开发者社区《DPDK简介和原理》,作者:s****nDPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。什么是中断了解DPDK之前,首先需要先了解什么是中断,其实中断就是电信号,中断分两种:硬中断和软中断。什么是硬中断?硬中断是由与系统相连的外设(比如网卡、硬盘)自动产生的,主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。什么是软中断?软中断为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。硬中断和软中断有...阅读全文

博文 2024-08-23 10:14:22 Tianyiyun

到底什么是Java AIO?为什么Netty会移除AIO?一文搞懂AIO的本质!-IM开发/专项技术区

本文由得物技术团队Uni分享,即时通讯网收录时有内容修订和大量排版优化。 1、引言 关于Java网络编程中的同步IO和异步IO的区别及原理的文章非常的多,具体来说主要还是在讨论Java BIO和Java NIO这两者,而关于Java AIO的文章就少之又少了(即使用也只是介绍了一下概念和代码示例)。 在深入了解AIO之前,我注意到以下几个现象: 1)2011年Java 7发布,它增加了AIO(号称异步IO网络编程模型),但12年过去了,平时使用的开发框架和中间件却还是以NIO为主(例如网络框架Netty、Mina,Web容器Tomcat、Undertow),这是为什么?2)Java AIO又称为NIO 2.0,难道它也是基于NIO来实现的?3)Netty为什么会舍去了AIO的支持?(点此查看...阅读全文

博文 2024-08-21 17:06:15 即时通讯开发者社区!

一体机场景ceph高可用介绍

本文分享自天翼云开发者社区《一体机场景ceph高可用介绍》,作者:b****n一体机场景使用ceph开源架构作为存储系统的主体架构,原生方案支持存储数据高可用性,包括副本数可以灵活控制/支持故障域分隔,数据强一致性/多种故障场景自动进行修复自愈/没有单点故障,自动管理。部署形态​存储引擎组件部署形态​IO高可用-流程​组件高可用-心跳​存储数据高可用-备份​ 图像 小部...阅读全文

博文 2024-11-11 16:27:02 Tianyiyun

弹性存储关键技术介绍

本文分享自天翼云开发者社区《弹性存储关键技术介绍》,作者:1****m关键技术:(1)一致性HASH算法,保证数据分片尽量均衡在不同的故障域上,提升存储数据的安全可靠性。以数据唯一标识符、当前存储集群的拓扑结构以及数据备份策略作为一致性HASH算法的输入,可以随时随地通过计算获取数据所在的底层存储设备并直接通信获取或者写入数据,从而避免查表操作,实现去中心化和高度并发,将数据均衡的存储到各个存储节点,实现数据存储的负载均衡去中心化以及哈希的数据随机分布,使得弹性存储底座在理论上具备无限的可扩展性一致性HASH 算法支持数据的多种备份策略,支持可配置副本数,支持存储节点故障域定义与划分,从而使整个系统具备了高可靠性和高可用性。(2)增加盘级缓存,提升引擎读写性能。为每个存储节点配置两块SSD盘...阅读全文

linux查看磁盘读写性能(iostat命令)的方法_Happy_wtg的博客

在linux中查看或监控磁盘的读写性能,可以用到iostat命令,本节介绍下其具体用法。 1,硬盘读写性能, #查看TPS和吞吐量信息 iostat -d -k 1 10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 14.54 417.21 368.06 15719357562 13867444535 dm-0 104.60 415.64 366.87 15660312829 13822621684 dm-1 0.69 1.57 1.19 59041280 44822840 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 dm-0 0.00...阅读全文

博文 2023-05-26 11:21:07 CSDN博客