自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ClickHouse高原理与实践

ClickHouse是俄罗斯公司Yandex研发的一款开源的,用于OLAP( Online Analytical Processing,联机分析,即通过多种不同的维度审视数据。OLAP具有多维度、快速响应、聚合计算、数据切片等特点)的列式存储的数据库管理系统。ClickHouse名称的来源是Click Stream,Data WareHouse,即基于点击事件流的数据仓库。ClickHouse设计的初衷就是以最快的速度进行GROUP BY查询和过滤,它充分利用了列式存储,数据压缩,向量化执行,数据分

2024-05-01 00:09:18 509

原创 MySQL和Redis的数据一致性问题和应对策略

“数据一致”一般指的是:缓存中有数据,缓存的数据值 = 数据库中的值。但根据缓存中是有数据为依据,则”一致“可以包含两种情况:- 缓存中有数据,缓存的数据值 = 数据库中的值(需均为最新值,本文将“旧值的一致”归类为“不一致状态”)- 缓存中本没有数据,数据库中的值 = 最新值(有请求查询数据库时,会将数据写入缓存,则变为上面的“一致”状态)”数据不一致“:缓存的数据值 ≠ 数据库中的值;缓存或者数据库中存在旧值,导致其他线程读到旧数据

2024-04-30 11:37:34 676

原创 技术团队的管理方法和日常总结建议

管理学家德鲁克有言“管理是一种实践,其本质不在于知,而在于行,其验证不在于逻辑,而在于成果,其唯一的权威就是成就” ,因此管理重实践看效果,但如果管理实践有理论依凭,那么实践起来就会有章可循,管理经验也更容易被其他人所复制。

2024-04-29 00:08:48 434

原创 Linux网络抓包工具tcpdump是如何实现抓包的,在哪个位置抓包的?

随着G行架构从集中式体系向分布式式体系转型,行内系统服务快速增多,不同的服务短期内需要在集中式体系、分布式体系之间互相调用,调用链复杂,网络通讯相关问题时有发生。系统管理员在排查网络问题时就用到一款网络抓包工具tcpdump,该工具可以将网络中传送的数据包完全截获下来进行分析,能有效的排查复杂环境的网络问题。本文将从原理的角度分析tcpdump在Linux系统的实现。主要是希望能够分析实现原理,以协助判断tcpdump抓的是网卡的包,还是经过内核处理后的包?对于分析服务器处理网络包过程有很大帮助。

2024-04-29 00:01:48 857

原创 关于DevOps理解和总结

DevOps是研发领域最近几年最热的一个概念。参加过一些讲座,也看过不少的书籍,经常听到以下说法:- DevOps是没有明确定义的,一千个研发心中就有一千个Devops;- DevOps是一种文化,每个团队的DevOps实践都不一样;- DevOps就是消除Dev与Ops之间的壁垒,让两者通力合作;- DevOps就是业内敏捷、精益等各种优秀实践的混合体;- DevOps就是工具和自动化相信很多人听完和我感觉一样,感觉自己就像是盲人摸象,管中窥豹,在似懂非懂的边缘徘徊,无法系统地了解到DevO

2024-04-25 14:12:37 1060 2

原创 混沌工程理论建设和项目实践

本文从业务角度介绍微信支付实践混沌工程落地的思考,通过多分区的架构来控制最小爆炸半径,在高价值的基础组件和微信支付核心业务场景上探索,并基于高可用原则、历史故障分析推导故障原子的开发,是一篇全面的混沌工程建设实践。

2024-04-24 10:45:33 653

原创 kafka部分partition的leader=-1修复方案整理

部分环境发现,支撑kafka部分topic的被设置成单副本。当出现单机故障时,部分topic-partition出现leader=-1,对应的partition无法正常读写数据。特别是kafka内置的topic __consumer_offsets,__consumer_offsets 是记录topic的消费组数据消费的相关信息,如果出现了该问题,就会导致部分topic的消费组无法正常进行数据消费。

2024-04-21 14:55:55 1038

原创 Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和选型

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,削峰填谷等问题。实现高性能、高可用、可伸缩和最终一致性架构。 针对常见的消息队列进行探讨,并比较kafka、rabbitmq、rocketmq、pulsar这几种消息队列的异同,以及相关使用场景

2024-04-16 19:36:29 1161

原创 SRE职能描述以及个人见解

SRE 到底是什么?这是一个最早由 Google 提出的概念,我的理解是,用软件解决运维问题。标准化,自动化,可扩展,高可用是主要的工作内容。这个岗位被提出的时候,想解决的问题是打破开发人员想要快速迭代,与运维人员想要保持稳定,拒绝频繁更新之间的矛盾。

2024-04-16 17:37:49 671

原创 贪心算法中常见的使用方法逻辑整理

贪心算法 常见的使用方法逻辑整理

2024-04-14 23:43:50 682

原创 回溯算法中常见的使用方法逻辑整理

回溯算法 常见的使用方法逻辑整理

2024-04-14 23:43:01 971

原创 二叉树中常见的使用方法逻辑整理

二叉树常见的使用方法逻辑整理

2024-04-13 21:33:39 716

原创 链表中常见的使用方法逻辑整理

链表常见的使用方法逻辑整理

2024-04-13 21:27:52 1032

原创 k8s的ca以及相关证书签发流程

对于网站类的应用,网站管理员需要向权威证书签发机构(CA)申请证书,这通常需要花费一定的费用,也有非营利的证书签发机构,比如”Let's Encrypt“可以为用户免费签发证书。但对于Kubernetes这类应用来讲,它通常部署在企业内部,其管理面组件不需要暴露到公网,所以就不需要向外部的证书签发机构申请证书,系统管理员就可以自已签发证书供内部使用。本文通过介绍部分内部组件的ca证书签发流程,引导相关的证书签发过程。

2024-04-08 16:07:33 1157

原创 MySQL常见锁探究

MySQL提供了几种锁机制来管理并发访问数据库时的数据一致性。本文探讨各种类型以及应用场景。

2024-04-05 23:53:01 805

原创 Flink运行机制相关概念介绍

大数据计算分为离线计算和实时计算,其中离线计算就是我们通常说的批计算,代表技术是Hadoop MapReduce、Hive等;实时计算也被称作流计算,代表技术是Storm、Spark Streaming、Flink等。本文系统地介绍了流式计算的相关知识,并着重介绍了Flink的实现原理细节,便于大家快速地理解和掌握流式计算,并基于Flink完成业务开发。

2024-04-04 22:20:45 1217

原创 Redis监控方案以及相关黄金指标提升稳定性和可靠性

Redis 是非常经典优秀的内存数据库,其拥有非常高的性能;其单机实例在数据结构设计良好,实例健康的情况下能达到**10w左**右的OPS 现代应用程序对实时性的需求和计算机体系结构的限制决定了:很多时候我们都需要将 in-memory data stores 放在现代应用程序的中心,因此在很多常见场景中我们也都能见到 Redis,如:- 数据库:可作为传统的基于磁盘的数据库的替代方案。Redis非常简单粗暴地以持久性换取运行速度,并且支持异步磁盘持久化;同时提供了一组丰富的数据原语和非常广泛的命令列表

2024-04-04 13:58:09 640

原创 Ceph分布式存储系统以及高可用原理

Ceph分布式存储系统具有优秀的策略层的设计,**无中心元数据节点,无单点问题,完善的错误恢复机制,良好的扩展性等特性是它的核心竞争力**。同时,良好的架构设计为其带来的多存储接口以及多存储引擎的支持也为其吸引了大量的用户和开发者。目前从社区以及我们自己的测试情况来看,Ceph已经具备非常高的可靠性。并且从社区来看,RadosGW和RBD接口已经在生产环境中得到了很好的检验,CephFS接口目前还有待得到生产环境的检验。当前,Ceph社区也非常活跃,并且背靠OpenStack这棵大树,相信Ceph的发展会越

2024-04-04 13:31:36 1095

原创 MySQL 索引底层探索:为什么是B+树?

你可能已经知道 B+ 树被用于 MySQL 的Innodb引擎的索引底层实现,那么,为什么是 B+ 树呢?本文由浅及深,探索数据库索引底层实现。

2024-04-03 16:42:07 1472

原创 在k8s中部署高可用程序实践和资源治理

Kubernetes 可以提供所需的编排和管理功能,以便您针对这些工作负载大规模部署容器。借助 Kubernetes 编排功能,您可以构建跨多个容器的应用服务、跨集群调度、扩展这些容器,并长期持续管理这些容器的健康状况。有了 Kubernetes,您便可切实采取一些措施来提高 IT 安全性。高可用性(High Availability,HA)是指应用系统无中断运行的能力,通常可通过提高该系统的容错能力来实现。一般情况下,通过设置 replicas 给应用创建多个副本,可以适当提高应用容错能力,但这并不意

2024-04-01 22:21:51 1481

原创 Linux 基于chrony进行时钟同步方案验证

chrony是一个Linux系统中用于时钟同步的工具。它使用NTP(网络时间协议)来与远程时间服务器进行通信,从而使系统的时钟保持准确。chrony具有一些特性,使其成为时钟同步工具的首选:- 精准度:chrony能够以亚毫秒级的精度同步系统时钟,确保时钟的准确性。- 动态时钟频率调整:chrony具有自适应的时钟频率调整机制,可以根据网络延迟和计算机负载等因素动态地调整时钟频率,以保持时钟的稳定性和准确性。- 持久追踪:chrony能够在计算机重启后快速同步时钟,不需要等待很长的时间。- 多服务

2024-03-30 22:31:05 1047

原创 Linux 基于HAProxy+KeepAlived实现

高可用(HA-High Avaialbility)广义上理解,可以认为高可用是系统设计的目标,而容灾是达到高可用这一目标的手段。高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。负载均衡(LB-Load Balance)负载均衡用于解决系统流量分发问题。客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,同时负载均衡服务器也会对应用服务器做周期性的健康检查,

2024-03-28 22:04:19 960

原创 k8s的flannel和cilium的pod网络访问链路解析

Kubernetes (K8s)的Pod网络访问要求可以根据应用程序的需要和安全策略而定,以下是一些常见的要求:- 内部通信:Pod之间需要能够相互通信,通常在同一个Kubernetes集群或命名空间中的Pod可以直接通过其网络地址进行通信。- 外部访问:Pod可能需要从集群外部的网络访问,这可以通过创建一个Service对象来实现。Service对象可以公开Pod的网络端口,使其能够从集群外部被访问。本文经过简单分析和研究k8s环境下,pod访问之间的网络模型,并探讨各类网络模型下的协议和相关的优

2024-03-27 22:05:51 1149

原创 Redis高可用架构涉及常用功能整理

Redis是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据类型,包括字符串、哈希表、列表、集合和有序集合等。它提供了丰富的功能,如数据持久化、事务、复制和发布/订阅等。Redis具有很高的性能和可扩展性,可以处理高并发的读写请求。它通常用于构建高性能的Web应用程序和分布式系统。本文主要探讨redis常见的高可用架构,以及redis常用的功能,便于梳理知识点和技术细节。[关于常见分布式组件高可用设计原理的理解和思考](https://blog.csDN.ne

2024-03-26 23:35:53 1255

原创 MongoDB高可用架构涉及常用功能整理

MongoDB是一个开源的文档数据库,适用于构建各种类型的应用程序和用例。它是一种NoSQL数据库,意味着它不依赖关系模型,并且不使用SQL查询语言进行数据操作。MongoDB的特点包括:- 面向文档的数据模型:MongoDB存储的是以JSON风格的文档,可以包含各种类型的数据。文档的结构可以灵活地变化,便于处理复杂的数据。- 高性能:MongoDB使用了一种称为BSON的二进制数据格式,以及一种称为聚集集合的存储引擎,以提供高性能的数据存储和查询操作。- 可扩展性:MongoDB可以通过水平扩展

2024-03-24 23:08:23 842

原创 MySQL高可用架构涉及常用功能整理

MySQL是一个开源的关系型数据库管理系统,采用了单一进程、多线程的架构,本文探讨mysql架构以及高可用集群的常规架构模式。由于mysql产品的发展较早,在架构上以主从模式为主,提升相关高可用能力。后续的演化版本中,出现了多主模式的高可用版本,但是本文依然以最常见的主从模式探讨mysql集群的高可用机制。

2024-03-24 00:30:48 1261

原创 ETCD跨城容灾与异地多活网络故障的相关表现分析

etcd集群进行分布式设计,并且通过raft协议来进行选leader以及确保数据一致性和高可用能力。本文重点分析在不同网落区之间出现网络中断时,相关的etcd集群的表现,以探究和加强对etcd集群的理解。更多raft协议的理解可以参考 [分布式Raft原理详解,从不同角色视角分析相关状态](https://blog.csdn.net/weixin_43845924/article/details/136817536)

2024-03-22 00:08:58 1009

原创 分布式Raft原理详解,从不同角色视角分析相关状态

CAP : 一个分布式系统不可能同时满足一致性 (C: Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的两项分布式存储架构中,设计共识算法要考虑在一个复制集群中,所有节点按照确认的顺序处理命令,最终结果是在客户端看来,一个复制集群表现的像一个单状态机一样一致。为了保证多个节点顺序一致,需要处理如下问题:- 非拜占庭错误,包含网络延迟,分区,丢包,重复和乱序- 只要多数节点(quorum)

2024-03-19 23:43:14 1102

原创 HDFS磁盘写满问题分析

探讨hdfs的datanode节点磁盘被写满的原因分析和相关规避方案。[关于常见分布式组件高可用设计原理的理解和思考](https://blog.csDN.net/weixin_43845924/article/details/135713107)

2024-03-18 12:29:11 866

原创 分布式系统常见负载均衡实现模式

负载均衡是指将网络流量分发到不同的服务器上,以实现资源的均衡利用和提高系统的性能、可靠性和可扩展性。本文整理负载均衡常见的需求以及设计模式,便于后续读者更好的理解负载均衡的相关原理。

2024-03-15 22:30:45 917

原创 k8s的pod和svc相互访问时网络链路解析

在常用的k8s环境中,通常会面临同机器pod的相互访问、跨机器之间的pod访问以及通过svc访问相互,这几种模式下,k8s底层网络的访问规则不同。本文希望针对这几种场景下的流量访问链路和访问规则,从而探索k8s针对网络层面的设计逻辑。k8s层面svc访问的详细规则可以参考[k8s的svc流量通过iptables和ipvs转发到pod的流程解析](https://blog.csdn.net/weixin_43845924/article/details/136232099)

2024-03-12 23:49:13 1265 1

原创 跨城容灾与异地多活常见的架构设计

现如今,我们开发一个软件系统,对其要求越来越高,如果你了解一些「架构设计」的要求,就知道一个好的软件架构应该遵循以下 3 个原则:- 高性能- 高可用- 易扩展其中,高性能意味着系统拥有更大流量的处理能力,更低的响应延迟。例如 1 秒可处理 10W 并发请求,接口响应时间 5 ms 等等。易扩展表示系统在迭代新功能时,能以最小的代价去扩展,系统遇到流量压力时,可以在不改动代码的前提下,去扩容系统。在此背景下,我调研并对比了几种不同的部署方案,看哪种方案在我们的业务场景下最能够满足异地多活以

2024-03-12 00:04:31 958

原创 Linux 常用的工作问题定位小技巧

日常工作中,遇到日常工作使用的小技巧,便于生产环境进行生产debug和排障,现进行整理和梳理,便于梳理和沉淀。1. k8s常用技巧1.1 pod一启动就crash,来不及定位相关的日志,该如何debug?1.2 pod内部没有安装tcpdump,该如何抓包?2. linux常用技巧2.1 服务出现性能问题,怀疑到系统调用,该如何继续定位?2.2 ping一个域名有延迟,该如何定位哪个环节慢?2.3 服务器load很高,该如何定位?2.4 如何判断服务器磁盘io性能慢以及慢的原因?2.5

2024-03-09 23:57:10 796

原创 Linux 关于NTP同步硬件时钟的可靠性验证

NTP(Network Time Protocol)是一种用于同步网络中各个计算机的时间的协议。它的主要目的是确保网络中的所有计算机都能够精确地使用相同的时间。NTP通过在网络中的某个服务器上提供准确的时间源,然后将该时间源同步到其他计算机上,来实现时间同步。NTP使用一种层级化的结构来同步时间。在这个结构中,有一个或多个主要的时间服务器,称为Stratum 1服务器。这些服务器通过一些高精度的时钟源(如原子钟或GPS)来提供准确的时间。其他计算机通过与这些主时间服务器交互,定期询问并调整自己的时间。

2024-03-08 17:42:34 925

原创 Linux cgroup技术解析和验证测试

cgroup是于2.6内核由Google公司主导引入的,它是Linux内核实现资源虚拟化的技术基石,LXC(Linux Containers)和docker容器所用到的资源隔离技术,正是cgroup。cgroup(control group)是Linux内核提供的一种机制,用于将进程组织成为一个层次化的层级结构,并为每个层级结构提供资源限制、优先级控制等功能。cgroup技术可以用于管理和控制系统中的进程,从而提供更好的资源管理和隔离性能。linux 可以通过cgroup针对进程级别进行资源隔离和限

2024-03-06 13:33:22 826

原创 Linux conntrack和iptables技术解析

conntrack和iptables是Linux操作系统中的两个网络工具,用于网络连接跟踪和流量过滤。conntrack是一个内核模块,用于在网络连接建立时跟踪和记录连接的信息。它可以记录连接的源地址、目的地址、端口等信息,并且能够在连接关闭后继续跟踪一段时间。通过conntrack,系统管理员可以查看和管理网络连接状态,如查看活动连接、删除连接等。iptables是一个防火墙工具,用于管理和配置Linux操作系统的数据包过滤规则。它可以根据数据包的源地址、目的地址、端口等信息来过滤网络流量,以实现

2024-03-05 13:26:53 1238

原创 Linux网络TCP和UDP协议解析

TCP(传输控制协议)和UDP(用户数据报协议)是两种基于IP(Internet协议)的传输层协议。TCP协议是一种面向连接的协议,它提供可靠的数据传输。TCP通过三次握手建立连接,然后进行数据传输,最后通过四次挥手释放连接。TCP保证数据的可靠性,通过序号、确认和重传机制来实现数据的完整性和可靠性。TCP协议适用于需要确保数据完全传输的应用,如网页浏览、文件传输等。UDP协议是一种无连接的协议,它提供不可靠的数据传输。UDP不需要建立连接,直接发送数据包。UDP不保证数据的可靠性,也不提供重传机制

2024-03-05 00:02:38 981

原创 Linux虚拟文件系统管理技术

Linux包含一个通用的、强有力的文件处理机制,该机制利用虚拟文件系统(Virtual File System,VFS)来支持大量的文件管理系统和文件结构。VFS向用户进程提供了一个简单的,统一的文件系统接口。VFS定义了一个能代表任何可想到的文件系统的通用特征和行为的通用文件模型。VFS认为文件是计算机大容量存储器上的对象。这些计算机大容量存储器具有共同的特征,这与目标文件系统或底层的处理器硬件无关。

2024-03-03 14:00:55 1020

原创 Linux内存管理机制和虚拟内存技术

本文主要是研究Linux内存管理机制和虚拟内存技术,同时比较Windows NT和Linux在实现时的异同。主要为操作系统底层的实现原理的分析,花费大量篇幅描述虚拟内存技术的模型,这是理解Windows和Linux内存机制实现的基础,仅仅是对技术的介绍,提供概念和理论实现上的认知,如果对具体的实现和源码感兴趣可以自行上网查阅源码或者这方面的文章。

2024-03-03 00:36:19 1003

原创 Linux磁盘性能方法以及磁盘io性能分析

磁盘性能是衡量计算机系统运行状况的关键因素之一。对于磁盘性能的测试和分析,Fio 和 dd 是两个常用的工具。在这篇文章中,将介绍如何使用 Fio 进行磁盘 I/O 测试,以及如何分析磁盘性能。同时,还会简单介绍 dd 工具的使用。Fio 是一个灵活的 I/O 测试工具,支持多种工作模式,包括顺序读写、随机读写等。在安装 Fio 时,可以选择通过 yum 或编译源码进行安装。Fio 的测试报告中包含了丰富的信息,包括吞吐量和时延等指标。除了 Fio 以外,dd 也是一个常用的磁盘测试工具。dd 可以

2024-02-29 13:07:32 1769

空空如也

空空如也

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

TA关注的人

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