邋遢的流浪剑客
码龄5年
  • 869,302
    被访问
  • 300
    原创
  • 2,416
    排名
  • 715
    粉丝
关注
提问 私信

个人简介:成长中的基础架构攻城狮

  • 目前就职: 信也科技
  • 加入CSDN时间: 2017-09-24
博客简介:

hxt的博客

查看详细资料
  • 6
    领奖
    总分 2,766 当月 118
个人成就
  • 获得1,161次点赞
  • 内容获得269次评论
  • 获得3,162次收藏
创作历程
  • 12篇
    2022年
  • 57篇
    2021年
  • 66篇
    2020年
  • 185篇
    2019年
成就勋章
TA的专栏
  • 框架&中间件源码解析
    22篇
  • Java面试复习总结
    25篇
  • 微服务相关技术详解
    34篇
  • 分布式协议与算法
    5篇
  • 消息队列
    16篇
  • Redis
    18篇
  • 高性能MySQL
    14篇
  • Java多线程
    34篇
  • Java虚拟机
    20篇
  • Spring&SpringBoot
    19篇
  • Docker
    10篇
  • Kubernetes
    14篇
  • NIO&Netty
    4篇
  • ZooKeeper
    10篇
  • 时序数据库
    1篇
  • ClickHouse
    3篇
  • Java核心技术
    21篇
  • 数据结构与算法
    23篇
  • 计算机网络
    14篇
  • 计算机操作系统
    5篇
  • Nginx
    2篇
  • 设计模式
    8篇
  • MyBatis
    4篇
  • 后端的前端笔记
    6篇
兴趣领域 设置
  • 编程语言
    javagolang
  • 大数据
    mysqlredis时序数据库
  • 后端
    springgolangspring boot架构
  • 云原生
    云原生微服务容器服务发现kubernetesservice_mesh
  • 搜索
    elasticsearch
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

SkyWalking8.7源码解析(五):链路基本知识、链路ID生成、TraceSegment、Span基本概念、Span完整模型、StackBasedTracingSpan

21、链路基本知识 上图是一个下单接口的链路,在链路中首先要理解的概念是Segment,Segment表示一个JVM进程内的所有操作,上图中有6个Segment。Gateway Segment是Mall Segment的parent,通过parent关系就可以把多个Segment按顺序拼起来组装成一个链路 一个Segment里可能发生多个操作,如上图Segment中操作1是查Redis,操作2是查MySQL,这就是两个Span,Span表示一个具体的操作。Span之间也是基于parent的关系构建起
原创
发布博客 2022.05.15 ·
282 阅读 ·
1 点赞 ·
0 评论

SkyWalking8.7源码解析(四):服务GRPCChannelManager、ServiceManagementClient、CommandService、SamplingService

14、服务-GRPCChannelManagerorg.apache.skywalking.apm.agent.core.boot.BootService是SkyWalking Agent中所有服务的顶层接口,这个接口定义了一个服务的生命周期,分为prepare、boot、onComplete、shutdown四个阶段public interface BootService { /** * 准备阶段 * * @throws Throwable */
原创
发布博客 2022.05.03 ·
151 阅读 ·
1 点赞 ·
0 评论

Kubernetes容器网络(三):容器跨主机Overlay网络、路由模式实验

前言前三篇文章我们分别介绍了Docker网络原理、Flannel网络原理、Calico网络原理,本文将通过实验的方式带你进一步理解容器跨主机网络实现 两个容器docker1和docker2分别位于节点Node1和Node2,如何实现容器的跨主机通信呢?一般来说有两种实现方式:封包模式:利用Overlay网络协议在节点间建立隧道,容器之间的网络包被封装在外层的网络协议包中进行传输,例如:Flannel UDP、Flannel VXLAN、Calico IPIP路由模式:容器间的网络包传输全部用三层
原创
发布博客 2022.05.01 ·
928 阅读 ·
1 点赞 ·
0 评论

Kubernetes容器网络(二):Calico网络原理

1、前置网络知识1)、BGP自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由路由选择协议分为:内部网关协议IGP:一个AS内使用的,如RIP、OSPF外部网关协议EGP:AS之间使用的,如BGP边界网关协议(BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议BGP的工作原理如下:每个自治系统的管理员要选择至少一个路由器(可以有多个)作
原创
发布博客 2022.04.16 ·
1962 阅读 ·
4 点赞 ·
0 评论

Kubernetes容器网络(一):Flannel网络原理

前言本文主要分享Flannel如何解决跨主机容器之间通信问题的,如果你对主机内容器之间通信流程还不了解,建议先看下这篇文章:Docker网络原理1、前置网络知识1)、tun/tap设备tun/tap设备在虚拟机的组网过程中起到作用。tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装tun/tap设备到底是什么?从Linux文件系统的角度看,它是用户可以用文件句柄操作的字符设备;从网络虚拟化角度看,它是虚拟网卡,一端连着网络协议栈,另一端连着用户态程序t
原创
发布博客 2022.04.05 ·
1265 阅读 ·
6 点赞 ·
1 评论

Docker网络原理

前言Docker有4种网络通信模型,分别是:bridge、host、none、container,默认使用的网络模型是bridge,本文中用到的也是bridge网络模型本文分享Docker网络原理,主要包含三部分内容:容器之间通信容器访问外网外部访问容器1、前置网络知识1)、veth pairveth是虚拟以太网卡(Virtual Ethernet)的缩写。veth设备总是成对的,因此称之为veth pair。veth pair一端发送的数据会在另外一端接收。根据这一特性,veth pa
原创
发布博客 2022.03.19 ·
1080 阅读 ·
3 点赞 ·
0 评论

Kubernetes学习笔记(四):持久化存储与安全认证

一、持久化存储容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,Kubernetes引入了Volume的概念Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,Kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命容器不与Pod中单个容器的生命周期相关,当
原创
发布博客 2022.03.12 ·
362 阅读 ·
1 点赞 ·
0 评论

Kubernetes学习笔记(三):Service与Ingress

一、Service详解1、Service介绍在Kubernetes中,Pod是应用程序的载体,我们可以通过Pod的IP来访问应用程序,但是Pod的IP地址不是固定的,这也就意味着不方便直接采用Pod的IP对服务进行访问为了解决这个问题,Kubernetes提供了Service资源,Service会对提供同一个服务的多个Pod进行聚合,并且提供一个统一的入口地址。通过访问Service的入口地址就能访问到后面的Pod服务Service在很多情况下只是一个概念,真正起作用的其实是kube-proxy服
原创
发布博客 2022.03.05 ·
1711 阅读 ·
2 点赞 ·
0 评论

Kubernetes学习笔记(二):Pod控制器详解:资源元信息、ReplicaSet、Deployment、DaemonSet、Job、CronJob

1、资源元信息 Kubernetes的资源对象组成:主要包括了Spec、Status两部分。其中Spec部分用来描述期望的状态,Status部分用来描述观测到的状态Kubernetes的元数据部分。该部分主要包括了用来识别资源的标签:Label;用来描述资源的注解:Annotation;用来描述多个资源之间相互关系的OwnerReference1)、LabelLabel是Kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择Label的特点:一个La
原创
发布博客 2022.02.22 ·
732 阅读 ·
1 点赞 ·
0 评论

Kubernetes学习笔记(一):Pod详解:Pod配置、Pod生命周期、Pod调度、容器设计模式

1、Pod介绍Pod是Kubernetes进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器1)、Pod=进程组在Kubernetes里面,Pod实际上正是Kubernetes抽象出来的一个可以类比为进程组的概念由四个进程共同组成的一个应用Helloworld,在Kubernetes里面,实际上会被定义为一个拥有四个容器的Pod就是说现在有四个职责不同、相互协作的进程,需要放在容器里去运行,在Kubernet
原创
发布博客 2022.02.13 ·
1381 阅读 ·
2 点赞 ·
1 评论

Kubernetes集群环境搭建&部署Dashboard

1、Kubernetes集群搭建本次环境搭建需要三台CentOS服务器(一主二从),然后在每台服务器中分别安装Docker(18.06.3)、kubeadm(1.18.0)、kubectl(1.18.0)和kubelet(1.18.0)三台主机配置信息如下:角色IP地址操作系统配置Master192.168.56.20CentOS7.5+2C2GNode1192.168.56.21CentOS7.5+2C2GNode2192.168.56.22Cen
原创
发布博客 2022.02.07 ·
1242 阅读 ·
2 点赞 ·
0 评论

SkyWalking8.7源码解析(三):静态方法插桩、构造器和实例方法插桩、插件拦截器加载流程、JDK类库插件工作原理

10、静态方法插桩Transform的transform()方法中调用每个插件的define()方法去做字节码增强,AbstractClassEnhancePluginDefine的define()方法中再调用自己的enhance()方法做字节码增强,enhance()方法源码如下:public abstract class AbstractClassEnhancePluginDefine { /** * Begin to define how to enhance class. A
原创
发布博客 2022.01.02 ·
722 阅读 ·
2 点赞 ·
1 评论

SkyWalking8.7源码解析(二):定制Agent、服务加载、witness组件版本识别、Transform工作流程

6、定制Agentpublic class SkyWalkingAgent { private static ILog LOGGER = LogManager.getLogger(SkyWalkingAgent.class); /** * Main entrance. Use byte-buddy transform to enhance all classes, which define in plugins. * -javaagent:/path/to/agent
原创
发布博客 2021.12.25 ·
602 阅读 ·
1 点赞 ·
0 评论

SkyWalking8.7源码解析(一):Agent启动流程、Agent配置加载流程、自定义类加载器AgentClassLoader、插件定义体系、插件加载

1、Agent启动流程找到入口方法SkyWalkingAgent的premain()方法,源码如下:public class SkyWalkingAgent { /** * Main entrance. Use byte-buddy transform to enhance all classes, which define in plugins. * -javaagent:/path/to/agent.jar=agentArgs * -javaagent:
原创
发布博客 2021.12.12 ·
1965 阅读 ·
2 点赞 ·
0 评论

synthetic关键字和NBAC机制

1、synthetic关键字根据Java语言规范,所有存在于字节码文件中,但是不存在于源代码文件中的构造,都应该被synthetic关键字标注这里的构造,原文是Constructs,实际上指的是字段、方法和构造器([构造] => Constructs => Field、Method、Constructor)由Java编译器在编译阶段自动生成的构造都要被synthetic关键字标注1)、isSynthetic()java.lang.reflect中的Field、Method、Const
原创
发布博客 2021.12.05 ·
383 阅读 ·
1 点赞 ·
0 评论

《王道操作系统》:第二章 进程管理:进程的同步与互斥、死锁

2.3_进程的同步与互斥2.3.1_进程的同步与互斥1)、进程同步同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进2)、进程互斥两种资源共享方式:互斥共享方式(系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源)同时共享方式(系统中的某些资
原创
发布博客 2021.10.31 ·
167 阅读 ·
1 点赞 ·
0 评论

Disruptor核心原理、源码解析

前言前两篇Disruptor学习笔记:基本使用、核心概念和原理和Netty整合Disruptor实战文章中,主要讲解了Disruptor的一些API的使用、概念等,本文会进一步来解析Disruptor的核心原理和相关源码1、Disruptor的性能为什么这么高?内存分配更加合理,使用RingBuffer数据结构,数组元素在初始化时一次性全部创建,提升缓存命中率;对象循环利用,避免频繁GC能够避免伪共享,提升缓存利用率采用无锁算法,避免频繁加锁、解锁的性能消耗(CAS操作代替锁)支持批量消费,消
原创
发布博客 2021.10.10 ·
353 阅读 ·
2 点赞 ·
0 评论

ClickHouse MergeTree原理解析

一、MergeTree原理解析1、MergeTree的创建方式与存储结构MergeTree在写入一批数据时,数据总会以数据片段的形式写入磁盘,且数据片段不可修改。为了避免片段过多,ClickHouse会通过后台线程,定期合并这些数据片段,属于相同分区的数据片段会被合并成一个新的片段。这种数据片段往复合并的特点,也正是合并树名称的由来1)、MergeTree的创建方式创建MergeTree数据表的完整语法如下所示:CREATE TABLE [IF NOT EXISTS] [db.]table_nam
原创
发布博客 2021.10.05 ·
366 阅读 ·
3 点赞 ·
0 评论

ClickHouse学习笔记(二):执行计划、建表优化、语法优化规则、查询优化、数据一致性

本文档基于目前较新稳定版21.7.3.14一、Explain查看执行计划在ClickHouse 20.6版本之前要查看SQL语句的执行计划需要设置日志级别为trace才能可以看到,并且只能真正执行sql,在执行日志里面查看。在20.6版本引入了原生的执行计划的语法。在20.6.3版本成为正式版本的功能1、基本语法EXPLAIN [AST | SYNTAX | PLAN | PIPELINE] [setting = value, ...] SELECT ... [FORMAT ...]1)PLAN
原创
发布博客 2021.09.25 ·
1092 阅读 ·
2 点赞 ·
0 评论

Netty整合Disruptor实战

1、Netty实现服务端与客户端数据传输1)、依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.12.Final</version> </dependency>
原创
发布博客 2021.09.20 ·
436 阅读 ·
1 点赞 ·
0 评论
加载更多