自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 xxl-job执行器在k8s中丢失日志问题和xxl日志读写原理

​   ​   最近公司的中台项目要使用 xxl-job做元数据采集,etl读取,数据加工等。但是遇到容器中日志丢失问题,本文章会主要分享两部分内容​  ​   1 xxl-job日志读写原理​  ​   2 日志丢失的解决思路 Xxl-job 日志读写原理:版本:xxl-job-2.3.0 一 xxl-job 写日志原理​   ​   Xxl-job写日志是在 执行器中执行的,核心类是 xxl-jo

2021-11-03 15:42:29 2916 1

原创 dolphinscheduler核心流程

概况​ 因为最近公司,要计划做数据中台,而我们要负责做一个 数据开发这一部分,主要功能是将数据加工,因为产品要加入一些业务上定制化的东西,所以目前是将dolphinscheduler进行一个二次开发。下面我会分享dolphinscheduler的整体架构,和一个核心流程。下面主要会分为三部分:1 主要架构2 代码结构3 任务执行过程的核心流程版本:Dolphinscheduler-1.3.8-release主要架构上图是从官网直接copy过来,是ds的架构图,ds的架构我觉得主要的

2021-11-02 19:14:37 913 3

原创 7 netty网络篇,netty拆包粘包和自定义协议

概况​  本篇文章会在应用层面分享一下netty怎么方便的解决拆包和粘包问题,和我会分享一个最常用于解决拆包和粘包的方案自定义协议的demo,其中还会涉及到自定义编解码器,这个以后有时间再分享​拆包粘包 ​ 解决拆包和粘包,最常见的方案有三种。​  1 消息定长,每个报文长度固定,如果不够,空位补0; ​ 2 使用分隔符,报文间使用分隔符识别;​  3 使用自定义协议,将消息分为消息头,和消息体,消息头记录着消息体的长度。​  netty提供很方便的handler实现上面的方案,其中 ​

2021-09-13 22:20:28 651

原创 6 netty网络篇,前置知识3,序列化

概况 ​ 这篇文章会讲一下序列化的重要性和序列化工具的选型。​​  我们在系统间接口的调用中,基本上都会用到序列化和反序列化。下图是订单中心从用户中心获取用户的场景,会发生以下动作。 ​ 1 用户中心先将User对象序列化为json字符串 ​ 2 然后通过网络将json字符串传送到订单中心 ​ 3 订单中心将json字符串反序列化为User对象,然后接着做下面的业务操作​ 在上面的例子中,序列化和反序列化主要影响有两点: ​ 1 序列化和反序列化的时间(或者说消耗的资源)​  2 序列化

2021-08-23 15:55:36 219

原创 5 深入理解netty,网络篇,粗谈TCP和UDP协议

概况 上篇文章简单描述了一下网络分层。这篇文章就分享一些TCP和UDP的一些内容,这篇文章会分享一些我觉得跟我们开发有直接关联的一些知识。文章内容分为两分部。 第一部分是 TCP的那些事 第二部分是 UDP的那些事TCP的那些事 TCP的内容很复杂,这里只是概述性的讲解它的优缺点,并不会详细描述它的各种算法,策略等。 TCP是成熟可靠的协议,它具有以下的功能。​ 1 保证网络包的顺序:​ TCP是受过seq序号来保证网络包的顺序问题的,TCP提供有序的传输,所以每个数据段都要标上一个

2021-08-17 12:38:34 1755

原创 4 深入理解netty,网络篇,粗谈网络分层

概况​ 在网络编程中,网络协议的选型是尤其重要,比如在物联网领域中,我们可能会选择UDP或者是MQTT,大多数的微服务间的通信中,我们多数会选择基于tcp的rpc协议。所以选择一个合适的协议很重要。​ 这篇文章会分享一些我觉得跟我们开发有直接关联的一些知识。文章内容分为两分部。​ 第一部分是 简单理解 TCP/IP 四层模型​ 第二部分是 网络包在公网上是怎么传输的简单理解TCP/IP四层模型下面是我用wireshark监听我本地电脑网卡截的一幅图,我们就以这幅图为例,来描述一下TCP/IP四

2021-08-17 10:34:29 657

原创 深入理解semaphore

概况​ 关于锁,我上次写了一篇ReentrantLock,目的是借助ReentrantLock来分析AQS的独占锁部分,今天我们来一起分析Semaphore,主要目的是借助Semaphore来分析AQS的共享锁部分。​ 下面文章分为三部分,第一部分介绍semaphore的作用,第二部分是分析semaphore 尝试获取资源的过程,第三部分是分析semaphore 释放资源的过程第一部分 semaphore的使用场景​ 信号量。从概念上讲,信号量维护一组许可,许可也可以理解为一组资源的使用权。其中获

2021-08-02 14:15:11 1237 3

原创 深入理解重入锁

本篇的内容介绍​ 本篇文章会详细分析reentrantlock的工作原理,会分为三部分讲解,第一部分是 reentrantlock 大体上的脉络,第二部分是分析公平锁的实现,第三部分再简单对比非公平锁的实现第一部分 reentrantlock 的一个大概设计我们简单的看一下reentrantlock 的一个大的设计是怎么样的,我们简单用一个伪代码表示public class ReentrantLock { public ReentrantLock(boolean fair) {

2021-07-26 12:50:04 422

原创 3 深入理解Netty, 线程篇2, 深入分析netty的线程模型

上篇讲了reactor的线程模型,我们说netty 是属于主从线程模型,下面我们一起来看看netty的线程模型。 本片文章分为两部分:第一部分是分析 netty的线程模型,这部分我只会贴关键源码,我觉得贴太多源代码会很难理解,所以我一般会用贴关键源代码和伪代码表示。 第二部分是分析几道关于这部分的面试题。第一部分: 我们先从一个服务端demo开始: public static void main(...

2021-07-10 17:33:05 435 1

原创 2 深入理解Netty, 线程篇1, 前置知识reactor模型

netty 是基于 java nio 上封装的框架,所以它的核心功能一定也是依赖 java nio的核心组件。因为原生java nio太原始,如果要在生产上使用,程序员要花大量的时间在非业务上的处理。如写半包,jdk select的空轮询等等。 netty 从 并行,池化,网络通信等方面帮助我们优化程序。并行可以让我们程序充分利用cpu,今天我们浅析一下netty的线程模型。这篇文章我们先讲讲什么是 reactor模型:reactor反应堆的...

2021-07-10 14:40:16 230

原创 1 深入理解Netty, 前置知识从java nio 到 hotspot 到 linux

select/poll机制 select/poll 是 epoll之前提出的一种多路复用机制,它大概的原理是在一个线程内,将用户层的fd集合拷贝进内核,进行遍历,然后返回 可读,可写的fd集合。由前一段可以看出select/poll的问题是,他每次遍历都需要将fd从用户态复制到内核态。如果连接数一多,对性能造成很大的影响。epoll机制:epoll 是基于事件通知机制 与 多路复用,在内核级别实现的机制。 ...

2021-07-05 11:43:08 241 3

原创 kubeadm 部署 k8s1.14

系统初始化资源 :* 镜像仓库* k8s-master01 k8s-node01 k8s-node021 设置 系统 主机名以及host文件的相互解析hostnamectl set-hostname k8s-node02hostnamectl set-hostname k8s-node01hostnamectl set-hostname k8s-ma...

2019-10-13 22:11:23 348

原创 flink本地模式简单入门

一 本地模式 flink 可以运行在 linux,mac os 和 windows上,flink需要工作在 java8以上得版本。window的用户,请参照 flink on windows的文档操作 下面是 我 虚拟机 的环境 及 JAVA 环境变量[root@localhost bin]# cat /etc/redhat-release CentOS L...

2019-04-08 23:49:56 3227

原创 jvm调优一些思路及分析堆快照

什么是吞吐量? 吞吐量:指在应用程序的生命周期内,应用程序所花费的时间 和 系统总 运行时间的比值。系统总运行时间=应用程序耗时+GC耗时。如果系统运行了100分钟,GC耗时1分钟,那么系统的吞吐量就是(100-1)/100 = 99%什么是停顿时间?停顿时间:指垃圾回收器正在运行时,应用程序的暂停时间。对于独占回收器而言,停顿时间可能比较长。使用并发的回收器时,由于垃圾...

2019-04-05 23:18:30 1420

原创 jvm运行时数据区与垃圾回收器的参数

一 运行时数据区-XSS 调整栈内存栈内存分配 1 保存参数,局部变量,中间计算过程和其他数据。退出方法的时候,修改栈顶指针就可以把栈帧中的内容销毁 2 栈的优点:存取速度比堆快,仅次于寄存器,栈数据可以共享 3 栈的缺点:存在栈中的数据大小,生存期是在编译时就确定的,导致其缺乏灵活性 决定了线程 的分配 假如 分配 20个 线程,那么 就要20...

2019-04-05 17:16:26 257

转载 GC一些长时间停顿问题排查及解决办法

原文 链接 https://mp.weixin.qq.com/s/9wXsMx98RogAWv93v9k2ew对于许多企业级应用,尤其是OLTP应用来说,长暂停很可能导致服务超时,而对这些运行在JVM上的应用来说,垃圾回收(GC)可能是长暂停最主要的原因。本文将描述一些可能碰到GC长暂停的不同场景,以及说明我们如何排查和解决这些GC停顿的问题。下面是一些应用在运行时,可能导致GC长...

2019-03-26 21:34:42 2708

原创 tcp滑动窗口,重传 的研究,网路接收发送流程,linux查看套接字信息

1 滑动窗口机制    滑动窗口机制,用于检测何时发生了数据包丢失,并调整数据传输率加以避免。滑动窗口机制利用数据接收方的接收窗口来控制数据流。     tcp通过ack包来声明己方的接收窗口,tcp发送端通过对端的接收窗口 来调整自己的发送窗口。    发送窗口的大小对性能的影响非常重要,发送窗口可以决定一次过可以发送多少字节,单位是MSS(单个TCP包最大能携带的字节)。在没有拥塞时,发...

2019-02-24 20:23:19 776

原创 wireshark分析功能窗口

        在平时,我们经常捕获到的文件都非常大,面对茫茫的数据包,我们不知道该如何下手,wireshark提供了非常多 的有用分析功能,让我们使用,下面我来列举几个 相对比较常用的 wireshark 的版本是 2.6.5 查看端点 statistics -> endpoints        在分析数据流量时,你可能会发现你可以将问题定位到网络中的一个特定端点上去。...

2019-02-24 17:35:16 2396

原创 安装 timescaledb 使用navcat连接 创建 hypertable

timescaledb 是 postgres 的 一个 扩展 插件 , 所以要安装 timescaledb 就 先要安装 postgres1 安装 postgreshttps://www.postgresql.org/download/linux/redhat/ yum install https://download.postgresql.org/pub/repos/yum/1...

2019-02-13 23:02:40 2381

原创 网络分析 之 浏览器访问网站的通信过程

         当浏览器访问一个网站时,浏览器会使用DNS协议去查找他具体的地址。知道了目标地址,浏览器就开始打包它的请求。对于普通的浏览请求,往往会使用HTTP协议;DNS,HTTP,HTTPS所在的层我们称为应用层。        经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过socket编程来实现,我们称为传输层。传输层有两种协议,一种是无连接的协议UDP,一种是面向...

2019-01-17 16:35:42 3372

原创 基准测试之 netperf

安装在 github 上 下载 你 需要 的版本 https://github.com/HewlettPackard/netperf我下载 的 是netperf-netperf-2.5.0.zip然后 解压unzip netperf-netperf-2.5.0.zip进去 根目录cd netperf-netperf-2.5.0./configure --prefix...

2019-01-10 20:34:41 495

原创 基准测试之 iozone

安装:进入 http://www.iozone.org/ 下载 iozone3_483.tar 然后 执行tar xvf iozone3_483.tarcd iozone3_483/src/current/make linux-AMD64  常用参数-a 全面测试-i N 用来选择测试项i 的 值 :  0=write/rewrite  ...

2019-01-08 13:07:31 458

原创 linux性能分析之 tcpdump

tcpdump 是用来捕捉 和 分析网络流量的工具。在linux下使用libpcap 库可以捕捉数据包。它们在一个网络适配器上通过混杂模式监控所有的流量,并且捕捉此适配器接收到的所有数据帧,这些命令应该由超级用户的特权执行。使接口处于混杂模式可以使用这些工具深入研究 网络相关的问题。可以找到TCP/IP 重传,窗口大小缩放,名称解析问题,网络配置错误等等 tcpdump 是一个简单...

2019-01-06 16:17:39 2549 5

原创 linux 性能分析之 pmap

pmap 命令用来报告一个进程或多个进程的内存映射。可以使用这个工具确定系统是如何为服务器上的进程分配内存的。 例如pmap -d 22679 mapped: 2697256K writeable/private: 1410788K shared: 128K 其中 :Mapped : 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小wri...

2019-01-03 16:53:53 2077

原创 linux 性能分析之 ps 命令 详解

当进行系统分析时,ps命令 是 最基本的常用命令之一,ps 显示有关选择的活跃进程的信息。ps命令提供当前已存在进程的列表。提供 比 top 命令 更详细 信息   默认情况下,ps选择具有与 当前用户 相同的 有效用户ID(euid), 并与使用相同终端作为调用程序相关联的所有进程。默认情况下 会 显示PID : 进程 IDTTY : 该进程 在 哪个终端上运行,...

2019-01-03 14:54:21 625

原创 linux 性能分析 之 top命令 详解

top 提供一个运行系统的动态实时视图。它可以显示系统摘要信息,以及目前正在由Linux内核管理的任务列表。默认情况下,它会显示运行在服务器上最占用CPU的任务,并按一定的时间间隔 更新 列表。可以通过进程标识符(PID),内存使用(%MEM),优先级(PR), 命令名称(COMMAND) 等对进程进行排序 其中top 是 程序的名称10:26:33 当前时间up 69...

2019-01-03 13:13:04 691

原创 linux性能优化之 pstack strace

solaris 操作系统提供了 pstack 工具,用来打印运行程序的线程堆栈信息。redhat 公司发行的linux操作系统(rhel,centos等等) 也提供了pstack工具,只要按照 gbd:yum install gdb 由于通过 pstack 获得的是快照形式的信息,因此不能判定是否一直是相同的状态。为了调查是否是相同的状态,需要同时 使用事件记录形式的工具来确认。另...

2018-12-24 23:40:05 481

原创 linux 性能分析之 free 和 top 查看内存

[root@izm5efwaqhukrqgsmh2vw4z 25680]# freetotal used free shared buff/cache availableMem: 8010196 2882820 2434428 544 2692948 4816648Swap: 0 0 0可以看到,free输出的是一个表格,其中的数值都默认以字节为单位。表格总共有两行六列,这两行...

2018-12-24 21:02:06 7896

转载 linux性能优化 之 perf

原文章  https://www.cnblogs.com/arnoldlu/p/6241297.html 测试环境:Ubuntu16.04 + Kernel:4.4.0-31 系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。代码优化的目标是针对具体性能问题而优化...

2018-12-22 23:31:19 773

原创 linux 性能优化之pstree

pstree 用于查看 进程 间 的 父子 关系在linux系统中,系统调用fork 可以创建子进程,通过子 shell 也可以创建子进程,liunx 系统中进程之间的关系天生就是一棵树,centos 7 树的根就是 pid为1 的 systemd 进程  pstree 查看进程树:[root@localhost ~]# pstreesystemd─┬─Network...

2018-12-22 22:22:03 303

原创 linux 性能分析之 sar 分析系统网络

sar 可以用来查看系统的网络收发情况,还有一个好处是,不仅可以观察网络收发的吞吐量(BPS,每秒收发的字节数),还可以观察网络收发的PPS,即每秒收发的网络帧数 例如-n DEV 表示显示网络收发的报告,间隔1秒输出一组数据[root@localhost ~]# sar -n DEV 1Linux 3.10.0-862.el7.x86_64 (localhost.locald...

2018-12-22 22:06:29 2434

原创 linux性能优化之pidstat

pidstat 被常用于监控全部 或 指定进程的cpu , 内存, 线程,设备IO等系统资源 的占用情况  pidstat --htlpUsage: pidstat [ options ] [ <interval> [ <count> ] ]Options are:[ -d ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [...

2018-12-22 21:24:19 1141

原创 linux性能优化之vmstat

vmstat 是一个常用 的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU上下文切换和中断的次数 我们来 --help 一下[root@localhost ~]# vmstat --htlpvmstat: unrecognized option '--htlp' Usage:vmstat [options] [delay [count]]其中...

2018-12-22 17:02:22 524

原创 linux 性能优化之 iostat

iostat  被常用于 分析 linux 磁盘IO的使用情况下面我来 分享一下 iostat 的 日常使用  [root@localhost ~]# iostat --helpUsage: iostat [ options ] [ <interval> [ <count> ] ]Options are:[ -c ] [ -d ] [ -h ] [ ...

2018-12-22 16:13:02 817

原创 记录一次 nginx udp无法打印日志问题

stream {log_format proxy '$remote_addr [$time_local] ''$protocol $status $bytes_sent $bytes_received ''$session_time "$upstream_addr" ''"$upstream_bytes_sent" "$upstream_bytes_received"''"$u...

2018-12-15 23:36:06 2145

原创 innodb数据多版本,回滚段,快照读

数据多版本数据多版本是一种能够进一步提高并发的方法,它的核心原理是:写任务发生时,将数据克隆一份,以版本号区分写任务操作新克隆的数据,直至提交并发读任务可以继续读取旧版本的数据,不至于阻塞  对应到innodb上,具体是怎么做的呢redo 日志数据库事务提交后,必须将更新后的数据刷到磁盘上,以保证ACID特性。磁盘随机写性能较低,如果每次都刷盘,会极大影响数据库...

2018-11-18 21:26:10 665

原创 innodb锁机制,七种类型的锁,事务隔离级别

1 共享/排他锁(shared and exclusive Locks)共享锁(Share Locks,记为S锁),读取数据时加S锁排他锁(eXclusive Locks,记为X锁) 修改数据时加X锁共享锁之间 不互斥,简单记为: 读读可以并行排他锁与任何锁互斥,简单记为:写读,写写,不可以并行共享/排它锁的潜在问题是,不能充分的并行,解决思路是数据多版本 2 意向锁(...

2018-11-18 21:24:37 438

原创 查看与调试死锁

查看区间锁(间隙锁,临键锁 是innodb 特有施加在索引记录区间的锁)是否关闭,它由innodb_locks_unsafe_for_binlog 参数控制ON,表示关闭区间锁,此时一致性会被破环OFF,表示开启区间锁 mysql> show global variables like "innodb_locks%";+--------------------------...

2018-11-18 21:21:13 394

原创 cAdvisor,prometheus

cAdvisor开源软件cadvisor 是用于监控容器运行状态的利器之一,它被用于多个与docker相关的开源项目中。在kubernetes 系统中,cAdvisor已经默认集成到了kubelet组件内,当kubelet服务启动时,它会自动启动cAdvisor服务,然后cAdvisor会实时采集所在节点的性能指标及在节点上运行的容器的性能指标。kubelet 的启动参数 --cadv...

2018-11-11 00:37:50 3246

原创 iptables/netfilter 与 路由表 docker 部署 flannel

iptables/netfilter我们知道,Linux 网络协议栈非常高效,同时比较复杂。如果我们希望 在数据的处理过程中对关心的数据进行一些操作该怎么做呢? Linux提供了一套机制来为用户实现自定义的数据包处理过程。在Linux 网络协议栈中一组回调函数 挂节点,通过这些挂接的钩子函数可以在Linux网络栈处理数据包的过程中对数据包进行一些操作,例如过滤,修改,丢弃等。整个挂...

2018-11-02 23:51:00 1357

空空如也

空空如也

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

TA关注的人

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