快乐的程序员
分布式一致性那些事儿 分布式一致性那些事儿
1 什么是微服务、微服务架构、分布式 微服务:它是一个单一的、完整的服务,这个服务只做部分功能。甚至一个微服务只负责创建数据、一个微服务只负责修改数据,也是可用的。不同的微服务之间通过rpc相互交互。一个微服务是一个完整的服务,它的开发、联
2024-04-23
基于本地消息表的分布式事务解决方案 基于本地消息表的分布式事务解决方案
写在前面上篇文章介绍了 分布式一致性那些事儿,本文将详细讲解一下本地事务表的实现原理 原理本地消息表方案最初是ebay提出的,其实也是BASE理论的应用,属于可靠消息最终一致性的范畴。这里以支付服务和会计服务为例展开介绍本地消息表方案,大概
2024-04-23
go once源码分析 go once源码分析
代码package sync import ( "sync" "sync/atomic" ) type Once struct { done atomic.Uint32 m sync.Mutex } func (o *O
2024-04-23
elasticsearch基本用法 elasticsearch基本用法
写在前面之前介绍过es基本概念 ElasticSearch学习文档-入门篇,本文将介绍es的基本用法 IndexPUT# 创建索引 - PUT /索引名 ====> PUT /products - 注意: 1.ES中索引健康转态
2024-04-22
微服务之间数据传递方式:RESTful、GraphQL还是gRPC 微服务之间数据传递方式:RESTful、GraphQL还是gRPC
写在前面在现代的软件工程中,微服务或在客户端与服务端之间的信息传递的方式,比较常见的有三种架构设计的风格:RESTful、GraphQL和gRPC。 每一种模式,都有其特点和合适的使用场景,今天,我们主要来对三种风格做一个深入的理解和对比,
2024-04-21
手把手教你使用 pprof 手把手教你使用 pprof
写在前面pprof 是 Go 语言自带的性能分析工具,用于识别和解决应用程序中的性能瓶颈问题。大家应该或多或少有听说过 “三高代码”,这里的 “三高” 并不是指 “高血压、高血糖、高血脂”,而是指 ”高性能、高并发、高可用“,而 pprof
2024-04-21
分布式锁需要注意什么问题 分布式锁需要注意什么问题
写在前面在分布式系统中,实现分布式锁是一项常见的需求。为了追求性能,通常使用Redis使用分布式锁,但是想要实现高性能并且数据安全的分布式锁,并非易事,先看一下分布式锁要满足哪些特性。 需要注意的问题 互斥,一个线程获取到锁,其他线程只能等
2024-04-20
redis的hash的冲突和扩容问题 redis的hash的冲突和扩容问题
写在前面redis hash的冲突和扩容问题在面试过程中经常遇到,本文就来总结一下。 数据结构哈希表实际上是一个数组,数组里多每一个元素就是一个哈希桶。 typedef struct dict{ dictType *type; //
2024-04-20
mysql B+树的索引一般有多少层 mysql B+树的索引一般有多少层
写在前面这个问题在实际工作中可能作用不大,但是面试过程中可能会被问到,这就涉及到对B+树以及InnoDB页的了解。本文将分析这个问题。 答案首先回答这个问题:一般是1-3层。 InnoDB页在 MySQL 中我们的 InnoDB 页的大小默
2024-04-20
kafka零拷贝原理 kafka零拷贝原理
写在前面这个问题经常在面试中出现,本文将详细介绍它的底层原理 零拷贝是什么意思零拷贝并不是不需要拷贝,而是减少不必要的拷贝次数。通常是说在 IO 读写过程中。 实际上,零拷贝是有广义和狭义之分,目前我们通常听到的零拷贝,包括上面这个定义减少
2024-04-18
go singleflight源码解读 go singleflight源码解读
写在前面go singleflight提供了一个重复的函数调用抑制机制,这个库的主要作用就是将一组相同的请求合并成一个请求,实际上只会去请求一次,然后对所有的请求返回相同的结果。其本质是对函数调用的结果进行复用。 为什么需要singlefl
2024-04-15
rpc协议最重要的2个内容:编码和协议 rpc协议最重要的2个内容:编码和协议
写在前面之前用7天实现了一个grpc框架7d-rpc, 了解了rpc框架底层原理,其中最重要的部分就是编码和协议,其他都是附加功能。如果将rpc框架比作一个人,那编码和协议就是大脑和心脏,其他功能就是手和足,比如:服务发现、负载均衡、客户端
2024-04-15
2 / 22