- 博客(175)
- 收藏
- 关注
转载 Java并发(九)【转载】不可不说的Java“锁”事
转载自 美团技术团队,原文链接不可不说的Java“锁”事前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分...
2019-09-13 10:26:00
284
转载 Java并发(八)计算线程池最佳线程数
目录 一、理论分析 二、实际应用为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务。并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行。在高并发的情况下采用线程池,可以有效降低线程创建释放的时间花销及资源开销,如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及“过度切换”(在JVM中采用的处理机制为时间片轮转,减少了线程间...
2019-05-06 23:38:00
495
转载 Sharding-JDBC(三)3.1.0版本实践
目录 一、Sharding-JDBC依赖 二、代码实践 三、源码分析在上一篇博文中,介绍了Sharding-JDBC的分片策略、分片键和分片算法的基本概念,以及2.0.3版本可以支持和无法支持的使用场景。可以支持的场景:支持对SQL语句中的=、IN和BETWEEN AND的分片操作,但前提是分片键必须存在于SQL和数据表结构中。无法支持的场景:分片键不...
2019-05-04 09:15:00
579
转载 Sharding-JDBC(二)2.0.3版本实践
目录 一、Sharding-JDBC依赖 二、分片策略 1. 标准分片策略 2. 复合分片策略 3. Inline表达式分片策略 4. 通过Hint而非SQL解析的方式分片的策略 5. 不分片的策略 三、分片键 四、分片算法 1. 精确分片算法 2. 范围分片算法 3. 复合分片算法...
2019-05-01 22:39:00
368
转载 Sharding-JDBC(一)简介
转载自:ShardingSphere官网目录 一、介绍 1. Sharding-JDBC 2. Sharding-Proxy 3. Sharding-Sidecar(TBD) 4. 混合架构 二、功能列表 1. 数据分片 2. 分布式事务 3. 数据库治理 三、规划线路图在介绍S...
2019-04-28 23:00:00
239
转载 Java并发(六)线程池监控
目录 一、线程池监控参数 二、线程池监控类 三、注意事项在上一篇博文中,我们介绍了线程池的基本原理和使用方法。了解了基本概念之后,我们可以使用Executors类创建线程池来执行大量的任务,使用线程池的并发特性提高系统的吞吐量。但是,线程池使用不当也会使服务器资源枯竭,导致异常情况的发生,比如固定线程池的阻塞队列任务数量过多、缓存线程池创建的线程过多导致内...
2019-04-21 21:08:00
356
转载 Java并发(五)线程池使用番外-分析RejectedExecutionException异常
目录 一、入门示例 二、异常场景1 三、异常场景2 四、解决方法之前在使用线程池的时候,出现了java.util.concurrent.RejectedExecutionException,原因是线程池配置不合理,导致提交的任务来不及处理。接下来用一个简单的例子来复现异常。Exception in thread "main" java.uti...
2019-04-21 21:07:00
899
转载 Java并发(四)线程池使用
上一篇博文介绍了线程池的实现原理,现在介绍如何使用线程池。目录 一、创建线程池 二、向线程池提交任务 三、关闭线程池 四、合理配置线程池 五、线程池的监控 线程池创建规范一、创建线程池我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maxim...
2019-04-21 15:55:00
111
转载 Java并发(三)线程池原理
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗;2. 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行;3. 提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会...
2019-04-17 23:22:00
199
转载 Java并发(二)异步转同步
目录 前置条件:构造一个异步调用 一、使用wait和notify方法 二、使用条件锁 三、Future 四、使用CountDownLatch 五、使用CyclicBarrier 总结在Java并发编程中,经常会因为需要提高响应速度而将请求异步化,即将同步请求转化为异步处理,这是很自然能想到的一种处理方式。相反,在有些场景下也需要将异步处...
2019-04-14 21:15:00
199
转载 分布式计算(五)Azkaban使用
在安装好Azkaban后,熟悉Azkaban的用法花了较长时间,也踩了一些坑,接下来将详细描述Azkaban的使用过程。目录 一、界面介绍 二、Projects 1. 创建Command类型单一Job示例 1)创建一个Project,填写名称和描述 2)点击Create Project之后 3)创建Job ...
2019-04-10 21:39:00
605
转载 分布式计算(四)Azkaban安装
Azkaban是一个批量工作流任务调度器,使用Java语言开发。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。目录 一、Azkaban优点 二、Azkaban安装模式 三、Azkaban安装 1. 准备 2. 下载源码 ...
2019-04-10 16:46:00
149
转载 分布式计算(三)Azkaban介绍
转载自:Azkaban学习之路 (一)Azkaban的基础介绍目录 一、为什么需要工作流调度器 二、工作流调度实现方式 三、常见工作流调度系统 四、各种调度工具对比 五、Azkaban 与 Oozie 对比 1. 功能 2. 工作流定义 3. 工作流传参 4. 定时执行 5. 资源管理 ...
2019-04-10 15:30:00
222
转载 分布式计算(二)使用Sqoop实现MySQL与HDFS数据迁移
近期接触了一个需求,业务背景是需要将关系型数据库的数据传输至HDFS进行计算,计算完成后再将计算结果传输回关系型数据库。听到这个背景,脑海中就蹦出了Sqoop迁移工具,可以非常完美的支持上述场景。当然,数据传输工具还有很多,例如Datax、Kettle等等,大家可以针对自己的工作场景选择适合自己的迁移工具。目录 一、介绍 二、架构 三、安装 1. 下载...
2019-04-09 23:08:00
340
转载 MySQL(六)创建用户与授权
转载自:MySQL创建用户与授权目录 一、创建用户 二、授权 三、设置和更改用户密码 四、撤销用户权限 五、删除用户一、创建用户命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';说明:username:你将创建的用户名host:指定该用户在...
2019-04-09 17:46:00
120
转载 分布式计算(一)Ubuntu搭建Hadoop分布式集群
最近准备接触分布式计算,学习分布式计算的技术栈和架构知识。目前的分布式计算方式大致分为两种:离线计算和实时计算。在大数据全家桶中,离线计算的优秀工具当属Hadoop和Spark,而实时计算的杰出代表非Flink莫属了。Hadoop算是分布式计算的鼻祖,又是用Java代码实现,我们就以Hadoop作为学习分布式计算的入门项目了。目录 一、环境 二、创建Hadoop用户 ...
2019-04-09 13:56:00
527
转载 Linux SSH免密登录
SSH无密码登录要使用公钥与私钥。Linux可以用ssh-keygen生成公钥/私钥对,下面以Ubuntu为例说明配置过程。有两个节点:node01(172.17.0.14)和node02(172.17.0.17),node01节点想通过ssh免密登录到node02节点。1. 在node01节点生成公钥/私钥对ubuntu@node01:~$ ssh-keygen ...
2019-04-08 18:28:00
197
转载 Java并发(一)并发编程的挑战
目录一、上下文切换1. 多线程一定快吗2. 测试上下文切换次数和时长3. 如何减少上下文切换4. 减少上下文切换实战二、死锁三、资源限制的挑战四、本章小结并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死...
2018-09-11 23:16:00
206
转载 Kafka设计解析(二十三)关于Kafka监控方案的讨论
转载自huxihx,原文链接关于Kafka监控方案的讨论目前Kafka监控方案看似很多,然而并没有一个“大而全”的通用解决方案。各家框架也是各有千秋,以下是我了解到的一些内容:一、Kafka managerGithub地址: https://github.com/yahoo/kafka-manager。 这款监控框架的好处在于监控内容相对丰富,既能够实现br...
2018-08-28 23:57:00
129
转载 Kafka设计解析(二十二)Flink + Kafka 0.11端到端精确一次处理语义的实现
转载自huxihx,原文链接【译】Flink + Kafka 0.11端到端精确一次处理语义的实现本文是翻译作品,作者是Piotr Nowojski和Michael Winters。前者是该方案的实现者。原文地址是An Overview of End-to-End Exactly-Once Processing in Apache Flink® (with Ap...
2018-08-28 23:41:00
176
转载 Kafka设计解析(二十一)Kafka水位(high watermark)与leader epoch的讨论
转载自huxihx,原文链接Kafka水位(high watermark)与leader epoch的讨论本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的。简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份进度。后面我们会详细讨论两种机制的差异。不过首先先做一些基本...
2018-08-27 23:12:00
313
转载 Kafka设计解析(二十一)关于Kafka幂等producer的讨论
转载自huxihx,原文链接关于Kafka幂等producer的讨论众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS)。Kafka的EOS主要体现在3个方面:幂等producer:保证发送单个分区的消息只会发送一次,不会出现重复消息事务(transaction):保证原子性地写入...
2018-08-26 22:55:00
520
转载 Kafka设计解析(二十)Apache Flink Kafka consumer
转载自huxihx,原文链接Apache Flink Kafka consumerFlink提供了Kafka connector用于消费/生产Apache Kafka topic的数据。Flink的Kafka consumer集成了checkpoint机制以提供精确一次的处理语义。在具体的实现过程中,Flink不依赖于Kafka内置的消费组位移管理,而是在内部自行记...
2018-08-26 22:43:00
168
转载 Kafka设计解析(十九)Kafka consumer group位移重设
转载自huxihx,原文链接Kafka consumer group位移重设本文阐述如何使用Kafka自带的kafka-consumer-groups.sh脚本随意设置消费者组(consumer group)的位移。需要特别强调的是, 这是0.11.0.0版本提供的新功能且只适用于新版本consumer。在新版本之前,如果要为已有的consumer group调...
2018-08-26 22:24:00
438
转载 Kafka设计解析(十八)Kafka与Flink集成
转载自huxihx,原文链接Kafka与Flink集成Apache Flink是新一代的分布式流式数据处理框架,它统一的处理引擎既可以处理批数据(batch data)也可以处理流式数据(streaming data)。在实际场景中,Flink利用Apache Kafka作为上下游的输入输出十分常见,本文将给出一个可运行的实际例子来集成两者。目录一、目标...
2018-08-26 22:07:00
271
转载 Kafka设计解析(十七)Kafka 0.11客户端集群管理工具AdminClient
转载自huxihx,原文链接Kafka 0.11客户端集群管理工具AdminClient很多用户都有直接使用程序API操作Kafka集群的需求。在0.11版本之前,kafka的服务器端代码(即添加kafka_2.**依赖)提供了AdminClient和AdminUtils可以提供部分的集群管理操作,但社区官网主页并没有给出这两个类的使用文档。用户只能自行查看源代码和...
2018-08-26 20:36:00
379
转载 Kafka设计解析(十六)Kafka 0.11消息设计
转载自huxihx,原文链接【原创】Kafka 0.11消息设计目录一、Kafka消息层次设计1. v1格式2. v2格式二、v1消息格式三、v2消息格式四、测试对比Kafka 0.11版本增加了很多新功能,包括支持事务、精确一次处理语义和幂等producer等,而实现这些新功能的前提就是要提供支持这些功能的新版本消息格式,同时也要...
2018-08-26 18:02:00
221
转载 Kafka设计解析(十五)Kafka controller重设计
转载自huxihx,原文链接Kafka controller重设计目录一、Controller是做什么的二、Controller当前设计三、Controller组成四、Controller当前问题1. 需要在多线程间共享状态2. 代码组织混乱3. 管理类请求与数据类请求未分离4. Controller同步写Zookeeper且是一个分...
2018-08-26 16:48:00
119
转载 Kafka设计解析(十四)Kafka producer介绍
转载自huxihx,原文链接Kafka producer介绍Kafka 0.9版本正式使用Java版本的producer替换了原Scala版本的producer。本文着重讨论新版本producer的设计原理以及基本的使用方法。目录一、基本数据结构1. ProducerRecord2. RecordMetadata二、工作流程1. 基本设计特点...
2018-08-26 15:03:00
259
转载 Kafka设计解析(十三)Kafka消费组(consumer group)
转载自huxihx,原文链接Kafka消费组(consumer group)一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少。最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本,笔者也觉得时机成熟了,于是写下这篇文章讨论并总结一下新版本consumer的些许设计理念,希望能把con...
2018-08-26 14:10:00
138
转载 Kafka设计解析(十二)Kafka 如何读取offset topic内容 (__consumer_offsets)
转载自huxihx,原文链接Kafka 如何读取offset topic内容 (__consumer_offsets)众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_grou...
2018-08-25 23:00:00
539
转载 Kafka设计解析(十一)Kafka无消息丢失配置
转载自huxihx,原文链接Kafka无消息丢失配置目录一、Producer端二、Consumer端Kafka到底会不会丢数据(data loss)? 通常不会,但有些情况下的确有可能会发生。下面的参数配置及Best practice列表可以较好地保证数据的持久性(当然是trade-off,牺牲了吞吐量)。笔者会在该列表之后对列表中的每一项进行讨论,有...
2018-08-25 15:31:00
95
转载 Kafka设计解析(十)Kafka如何创建topic
转载自huxihx,原文链接Kafka如何创建topic?目录一、命令行部分二、后台逻辑部分Kafka创建topic命令很简单,一条命令足矣:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topi...
2018-08-25 15:12:00
169
转载 Kafka设计解析(九)为何去掉replica.lag.max.messages参数
转载自huxihx,原文链接Kafka副本管理—— 为何去掉replica.lag.max.messages参数在Kafka设计解析(二)Kafka High Availability (上)文中的ACK前需要保证有多少个备份小节说到,如果一个Follower宕机,或者落后太多,Leader将把它从ISR(即in-sync Replica)中移除。这里所描述的“落后...
2018-08-25 14:18:00
500
转载 Kafka设计解析(八)Exactly Once语义与事务机制原理
转载自技术世界,原文链接Kafka设计解析(八)- Exactly Once语义与事务机制原理本文介绍了Kafka实现事务性的几个阶段——正好一次语义与原子操作。之后详细分析了Kafka事务机制的实现原理,并介绍了Kafka如何处理事务相关的异常情况,如Transaction Coordinator宕机。最后介绍了Kafka的事务机制与PostgreSQL的MVCC...
2018-08-23 23:36:00
148
转载 Kafka设计解析(七)Kafka Stream
转载自技术世界,原文链接Kafka设计解析(七)- Kafka Stream本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream。接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以及主要的两种数据集KStream和KTable。并且分析了Kafka Stream如何解决流...
2018-08-23 01:40:00
134
转载 Kafka设计解析(六)Kafka高性能架构之道
转载自技术世界,原文链接Kafka设计解析(六)- Kafka高性能架构之道本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能。包含Kafka如何利用Partition实现并行处理和提供水平扩展能力,如何通过ISR实现可用性和数据一致性的动态平衡,如何使用NIO和Linux的sendfile实现零拷贝以及如何通过顺序读写和数据压缩实现磁盘的高效利用。...
2018-08-22 23:30:00
104
转载 Kafka设计解析(五)Kafka性能测试方法及Benchmark报告
转载自技术世界,原文链接Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告摘要本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka的性能测试报告。目录一、性能测试及集群监控工具1. Kafka性能...
2018-08-22 22:23:00
143
转载 Kafka设计解析(四)Kafka Consumer设计解析
转载自技术世界,原文链接Kafka设计解析(四)- Kafka Consumer设计解析目录一、High Level Consumer1. Consumer Group2. High Level Consumer Rebalance三、Low Level Consumer四、Consumer重新设计1. 设计方向摘要本文主要介绍了Ka...
2018-08-19 21:27:00
180
转载 Kafka设计解析(三)Kafka High Availability (下)
转载自技术世界,原文链接Kafka设计解析(三)- Kafka High Availability (下)摘要本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Broker failover,Controller failover,Topic创建/删除,Broker启动,Follower从Leader fetch数据...
2018-08-19 11:45:00
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人