自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Master-TJ的个人博客

https://github.com/Tjcug

  • 博客(256)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入浅出全面解析RDMA

RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。RDMA通过网络把资料直接传入计算机的内存中,将数据从一个系统快速移动到远程系统内存中,而不对操...

2018-06-04 11:36:54 78203 14

原创 一周一论文(翻译)——[SIGMOD 2015] TIMELY RTT-based Congestion Control for the Datacenter

本文主要解决的问题是在,基于优先级的拥塞控制PFC是一种粗粒度的机制,它主要是通过检测优先级队列的长度是否超过阈值,然后再发送PFC拥塞信号帧来进行流量控制。这种做法会带来不公平性以及行头阻塞等问题。作者表明,单的数据包延迟(以主机的往返时间来衡量)是一种有效的拥塞信号。因此作者通过对延迟梯度或排队随时间变化的微分做出反应,以在提供高带宽的同时保持较低的数据包延迟。Abstract...

2020-03-04 17:23:15 3639 3

原创 一周一论文(翻译)——[SIGMOD 2015] Congestion Control for Large-Scale RDMA

本文主要解决的问题是在RoCEv2体系中,基于优先级的拥塞控制PFC是一种粗粒度的机制。 它在端口(或端口加优先级)级别上运行,并且不区分流。PAUSE机制是基于每个端口(和优先级)的,而不是基于每个流的。 这将导致Unfairness和Victim flow等问题。为了解决这个问题,作者提出了DCQCN机制,DCQCN提供快速收敛以达到公平性,实现高链路利用率,确保低队列建立和低队列振荡。并且为...

2020-03-03 20:46:47 3092 1

原创 一周一论文(翻译)——[SIGMOD 2016] RDMA over Commodity Ethernet at Scale

本文主要解决的问题是在RoCEv2体系中,基于VLAN的PFC的拥塞控制是逐跳工作的,源和目的服务器之间可能有多跳,如果有持续的网络拥塞,PFC暂停帧会从阻塞点传播并返回到源,这就会导致诸如unfairness和victim flow的问题。因此作者提出了基于DSCP的优先级流量控制机制PFC,替换掉PCP和VID来确保大规模部署。Abstract 在过去一年半的时间,我...

2020-03-03 18:02:17 2782

原创 一周一论文(翻译)——[Acta 1996] The Log-Structured Merge-Tree (LSM-Tree)

Abstract高性能事务系统通常会通过向一个历史表中插入记录以追踪各项活动行为;与此同时事务系统也会因系统恢复的需要而生成日志记录。这两种类型的生成信息都可以从高效的索引方式中获益。众所周知的一个例子,TPC-A benchmark{TPC是Transaction Processing Performance Council的简称,是一个专门针对数据库系统性能benchmark的非盈利性组织...

2020-01-17 17:54:52 1441

原创 高阶数据结构:SSTable

1. 前言最近在组会上面通过小组讨论论文时,发现了SSTable这个数据结构。课后为了深入分析和学习这个数据结构,我做了一些资料查阅。在查询相关分布式的书籍后,找到了SSTable的数据结构,现将其作为笔记记录下来。之前整理的BigTable论文里面提及到了SStable,但是当时并没有引起我的注意。现在将深入理解这个数据结构——SSTable。2. SSTable的定义Google SST...

2020-01-09 20:34:18 4228

原创 Kafka:Zero-Copy零拷贝

1. 前言前一段时间研究了大规模日志流高吞吐并行存储,通过深入研究Kafka的底层存储机制。我们发现Kafka的Zero-Copy零拷贝技术采用的是Java底层FileTransferTo方法,后期我们尝试了对TransferTo性能及其并行性能进行测试。以及后面在Kafka上面实现了并行TransferTo方法,并应有到了Apache Kafka系统中。2. 消息存储机制Kafka是一个分...

2020-01-05 12:56:16 2721

原创 Kafka:Kafka核心概念

1 消息系统简介1.1 为什么要用消息系统 ?解耦 各位系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在;冗余 部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险;灵活性和消除峰值 在访问量剧增的情况下,应用仍然需要继续发挥作用,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃;(节省资源)可恢复性 系统中部分组件失效并不会影响整...

2020-01-05 12:51:46 1711

原创 Kafka:分布式消息队列的抽象模型

最基础的分布式队列编程抽象模型是点对点模型,其他抽象构架模型居于改基本模型上各角色的数量和交互变化所导致的不同拓扑图。具体而言,不同数量的发送者、分布式队列以及接收者组合形成了不同的分布式队列编程模型。消息中间件的主要功能是**消息的路由(Routing)和缓存(Buffering)**。Java Message Service,**JMS**,指的是面向消息中间件(MOM),用于在两个应用程...

2020-01-05 12:49:36 627

原创 一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing

Abstract弹性分布式流处理系统能够动态地适应工作负载的变化。通常,这些系统通过向上或向下扩展来对输入数据的速率或资源利用水平做出反应。目标是优化系统的资源使用,从而降低其运营成本。但是,这种扩展操作会自行消耗资源,从而为每个扩展操作引入一定的资源使用开销,从而降低成本。此外,由扩展操作引起的迁移不可避免地导致简短的处理差距。因此,应避免过多的扩展操作。 我们通过防止不必要...

2019-09-19 10:54:22 984 1

原创 一周一论文(翻译)——[SIGMOD 19] Elasticutor:Rapid Elasticity for Realtime Stateful Stream Processing

Abstract弹性非常适用于流系统,以保证针对工作负载动态的低延迟,例如到达率的激增和数据分布的波动。现有系统使用以resource-centric的方法实现弹性,该方法在并行实例(即执行程序)之间重新分配Key,以平衡工作负载和扩展Operator。然而,这种Operator级别的重新分区需要全局同步并且禁止快速弹性。我们提出了一种以executor-centric的方法,它避免了Oper...

2019-09-18 22:12:38 1066 3

原创 一周一论文(翻译)——[IEEE 14] Elastic scaling for data stream processing

Abstract本文讨论与通用分布式数据流处理应用程序的自动并行化相关的盈利问题。自动并行化涉及在应用程序的数据流图中定位区域,这些区域可以在运行时复制以应用数据分区,以实现扩展。为了使自动并行化在实践中有效,需要回答盈利问题:有多少并行通道提供最佳吞吐量?此问题的答案根据运行时的工作负载动态和资源可用性而变化。在本文中,我们提出了一种弹性自动并行化解决方案,可以动态调整用于实现高吞吐量的通道...

2019-09-18 17:09:38 705

原创 一周一论文(翻译)——[ICDCS 15] DRS: 在快速流下实时计算分析的动态资源调度系统

Abstract在数据流管理系统(DSMS)中,用户注册连续查询,并在数据到达和到期时接收结果更新。 我们专注于具有实时约束的应用程序,其中用户必须在更新发生后的给定时间段内接收每个结果更新。 为了处理快速数据,DSMS通常位于云基础架构之上。 由于实时流速到达等流属性可能无法预测地波动,因此必须动态配置和调度云资源以确保实时响应。 对于现有系统或未来发展而言,必须具备根据当前工作负载动态调度...

2019-09-17 17:50:27 1499

原创 一周一论文(翻译)——[PVLDB 17] Dhalion: 基于Heron自适应调整的流处理系统

Abstract近年来,大规模实时分析需求激增,并且已开发出大量流处理系统来支持此类应用。 即使遇到硬件和软件故障,这些系统也能够继续进行流处理。 然而,这些系统并未解决其Operator面临的一些关键挑战:手动,耗时且容易出错的调整各种配置旋钮以实现服务水平目标(SLO)以及SLO维护的任务。 面对突然的,不可预测的负载变化以及硬件或软件性能下降。在本文中,我们介绍了自适应调节流处理系统...

2019-09-17 11:08:55 1143

原创 一周一论文(翻译)——[VLDB 18] Chi:分布式流处理系统下可扩展的、可编程的控制计划模块

Abstract流处理工作负载和现代共享集群环境表现出高度的可变性和不可预测性。 结合大量参数空间和各种用户SLO,这使得现代流处理系统非常难以静态配置和调整。 为了解决这些问题,在本文中,我们研究了一种新颖的控制平面设计Chi,它支持连续监测和反馈,并支持动态重新配置。 Chi利用在数据平面通道中嵌入控制平面消息,为流处理系统实现低延迟和灵活的控制平面。Chi引入了新的反应式编程模型和设...

2019-09-16 15:57:50 939

原创 云计算的三种服务模式:IaaS,PaaS,SaaS

1. 简介IaaS, PaaS和SaaS是云计算的三种服务模式。“云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用,数据,或者服务。任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的,分别是Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Software...

2019-07-02 15:27:33 5633

原创 Cloud Programming Simplifie : A Berkeley View on Serverless Computing

Abstract 无服务器云计算几乎处理所有系统管理操作,使程序员更容易使用云。 它提供了一个极大简化云编程的接口,代表了从汇编语言到高级编程语言的过渡。 本文简要介绍了云计算的历史,包括对2009年伯克利云计算视图的预测进行了说明,解释了无服务器计算的动机,描述了扩展无服务器当前限制的应用程序,然后列出了障碍和研究机会 无服务器计算需要充分发挥其潜力。 就像2009年的论文确定了云的挑...

2019-07-02 14:55:17 1461 1

原创 Spark详解(十四):Spark SQL的Join实现

1. 简介Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余、更新容错等。而建立表和表之间关系的最佳方式就是Join操作。Join连接是大数据处理的重要手段,它基于表之间的共同字段将来自两个或多个表的行结合起来。如今Spark SQL(Dataset/DataFrame)已经成为Spark应用程序开发的主流,作为开发者,我们有必要了解Join在...

2019-06-17 19:14:08 6303 1

原创 Linux基础:配置ntp时间服务器

1. 概述大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,如E-MAIL信息、文件创建和访问时间、数据库处理时间等。大数据系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,若计算机时间不同步,这些应用或操作或将无法正常进行。大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的...

2019-05-27 12:21:17 5526

原创 计算机网络:WebSocket协议详解

1. 概述一直以来,网络在很大程度上都是围绕着HTTP的请求/响应模式而构建的。所有的HTTP通信都是由客户端控制的,这就需要用户进行互动或者定期轮询,以便从服务器加载数据。长期以来存在着各种技术让服务器得知有新数据可用时,立即将数据发送都客户端,这些技术种类繁多,例如推送或则“Comet”。但是这些解决方案都存在一个相同的问题:由于HTTP协议的开销,导致他们不适合做低延迟的应用。为了解决这...

2019-05-22 11:52:16 1388

原创 计算机网络:详解HTTP协议

1. 概述HTTP(超文本传输协议)是建立在TCP传输协议之上的应用层协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范...

2019-05-22 11:08:08 1612

原创 Netty详解(七):Netty 编解码以及消息头编解码器

1. MessagePack 概述MessagePack是一个高效的二进制序列化框架,像JSON一样支持不同语言间的数据交换,速度更快,序列化之后的码流更小。MessagePacke优点编解码高效,性能高序列化后的码流小支持跨语言1.1 MessagePack Java API 介绍<dependencies> ... <dependency>...

2019-05-22 09:32:55 2738

原创 Netty详解(四):Netty 整体架构

1. 概述Netty是JBoss出品的高效的Java NIO开发框架,本文将主要分析Netty实现方面的东西。Netty总体架构图:2. Bufferorg.jboss.netty.buffer包的接口及类的结构图如下:2.1 Channel Buffer的种类Netty使用ChannelBuffer来存储并操作读写的网络数据。ChannelBuffer除了提供和ByteBuffe...

2019-05-21 11:14:47 1120

原创 Netty详解(六):Netty 编解码技术

1. 概述基于Java提供的对象输入/输出流ObjectInputStream和ObjectOutputStream,可以直接把Java对象作为可村粗的字节数组写入文件,也可以传输到网络上去。Java序列化的目的主要有两个:网络传输对象持久化当进行远程进程服务调用时,需要把传输的Java对象编码为字节数组或者ByteBuffer对象。当远程服务读取到ByteBuffer对象或者字节...

2019-05-21 10:37:23 792

原创 Netty详解(五):Netty TCP粘包 拆包

1. 概述无论是服务端还是客户端,我们读取或者发送消息的时候,都需要考虑TCP底层的粘包和拆包机制。下面我们来通过Netty来详解TCP底层的粘包和拆包机制。2. TCP底层的粘包和拆包机制TCP是一个“流”协议,所谓流,就是没有界限的一串数据。大家可以想想河里的水流,它们是连城有一片的,期间没有界限。TCP底层并不了解上层业务数据的具体含义,他会根据TCP缓冲区的实际情况进行包的划分,所以...

2019-05-21 10:22:16 1465

原创 Netty详解(三):Netty 入门应用

1. Netty服务端开发TimeServer.javapackage com.basic.netty.bio;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.nett...

2019-05-21 09:16:07 424

原创 NIO详解(十三):Java IO 和NIO 总结

1. 概述下面总结了Java NIO和IO之间的主要差别IONIO面向流面向缓冲阻塞IO非阻塞IO无选择器2. Java IO和 NIO的主要区别2.1 面向流和面向缓冲区Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 JJava IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被...

2019-05-20 19:48:03 1521

原创 NIO详解(十二):AsynchronousFileChannel详解

1. 概述Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,他总是运行在阻塞模式下。在Java 7中,AsynchronousFileChannel被添加到Java NIO。AsynchronousFileChannel使读取数据,并异步地将数据写入文件成为可能。2. 创建一个AsynchronousFile...

2019-05-20 19:17:00 2749 4

原创 NIO详解(十一):线程间通信管道Pipe

1. 概述Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。下面是Pipe原理的图示:当有两个线程ThreadA和ThreadB需要进行线程间通信时,ThreadA可以通过SinkChannel向Pipe中写入数据。ThreadB可以通过SourceChannel从Pipe中读取数据。2....

2019-05-20 18:45:18 1062

原创 NIO详解(九):Selector详解

1. 概述Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。在I/O编程中,当需要同时处理多个客户端接入请求的时候,可以利用多线程或者I/O多路复用技术来进行处理。I/O多路复用技术是通过I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程...

2019-05-20 17:00:39 943

原创 NIO详解(九):Channel详解

1. Channel概述Java NIO的通道类似流,但又有些不同。Channel既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。Channel通道可以异步地读写。Channel通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。1.1 Channel ...

2019-05-20 16:28:56 2032

原创 NIO详解(五):Buffer详解

1. 概述Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。ByteBuffer是NIO里用得最多的Buffer,它包含两个实现方式:HeapByteBuffer是基于Java堆的实现...

2019-05-20 15:35:32 874

原创 NIO详解(四):NIO编程

1. NIO类库简介1.1 缓冲区BufferBuffer是一个对象,它包含了一些要写入或者要读出的数据。在NIO类库中加入Buffer对象,体现了新库和原来I/O的一个重要区别。在NIO库中,所有的数据都是用缓冲区处理的。在读取数据时,它是直接读取到缓冲区中的;在写入到缓冲区时。任何时候访问NIO中的数据,都是通过缓冲区进行操作。缓冲区实质上是一个数组。通常它是一个字节数据(ByteBuf...

2019-05-20 11:44:29 637 1

原创 Netty详解(二)Linux 网络IO模型

1. Linux I/O基础知识针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。有了用户空间和内核空间,整个linux内部结构可以分为三部分,从最底层到最上层依次是:硬件–>内核空间–>用户空间。...

2019-05-20 10:04:55 663

原创 Redis:一致性Hash算法

1. 前言在Redis 集群模式Cluster中,Redis采用的是分片Sharding的方式,也就是将数据采用一定的分区策略,分发到相应的集群节点中。但是我们使用上述HASH算法进行缓存时,会出现一些缺陷,主要体现在服务器数量变动的时候,所有缓存的位置都要发生改变!具体来讲就是说第一当缓存服务器数量发生变化时,会引起缓存的雪崩,可能会引起整体系统压力过大而崩溃(大量缓存同一时间失效)。第二当缓...

2019-05-09 09:20:15 14716 12

原创 Redis:Redis集群模式(Cluster)原理

1.前言由于Redis主从复制模式和Redis哨兵模式采用的都是复制Master节点的数据,实现读写分离。但是这种设计存在一个严重的问题,它没有真正意义上实现数据分片。两个模式都有一个问题,不能水平扩容,并且这两个模式的高可用特性都会受到Master主节点内存的限制。Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。所有Redis集群模式就是用来解决这个问题。2. Redi...

2019-05-09 00:47:43 1621

原创 Redis:哨兵模式(Sentinel)原理

1. 前言Redis主从复制模式不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。Redis哨兵模式就解决了Redis主从复制模式不具备容错和恢复的功能问题。Sentinel(哨兵)进程是用于监控redis集群中Master主服务器工作的状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保...

2019-05-08 22:08:35 1701

原创 Redis:主从复制原理

1. 前言Redis是一个高性能的K-V内存数据库。对于Redis来说,当访问读请求的并发量增加的时候,Redis主服务器会成为一个性能瓶颈。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。2. Redis主从复制2.1 全量复制当Slave机器连接到Redis集群中时,...

2019-04-03 18:12:06 384

原创 UML类图与类的关系详解

1. UML语法简介虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又...

2019-04-03 12:04:47 344

原创 Netty详解(一):Reactor模型

1. Reactor模型简介在Java进行网络通信时,通常有两种体系结构,分别为:thread-based architecture(基于线程)、event-driven architecture(事件驱动)1.1 thread-based architecture基于线程的体系结构通常会使用多线程来处理客户端的请求,每当接收到一个请求,便开启一个独立的线程来处理。这种方式虽然是直观的,但是...

2019-04-02 12:18:07 2346 1

公司工资管理系统

公司工资管理系统

2015-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除