首页
学习
活动
专区
工具
TVP
发布

后端进阶

本专栏原创文章首发于微信公众号「后端进阶」
专栏成员
127
文章
184452
阅读量
30
订阅数
深度剖析分布式事务,轻松掌握实现原理与应用技巧!
大家好,今天我们来一起探讨分布式事务的相关知识。相信大家都有多多少少接触过分布式事务,因为我们现在写的代码可是服务于亿级用户量级的,那么大的请求量级不可能全部写在一台服务器上面对吧。如果你还没有研究过分布式事务,也没关系,我们今天再一起来探讨一番。我曾经接触过分布式事务相关的中间件框架,比如现在很火的阿里开源的一款分布式事务中间件Seata。目前我在Seata社区主要做一些RPC以及性能优化的相关工作,所以我可能会对分布式事务具体实现比较了解。以Seata为契机,我们一起来探讨分布式事务。
张乘辉
2023-09-02
2700
关于 Java Lambda 表达式看这一篇就够了(强烈建议收藏)
Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的。具体原理放到下一篇。本篇我们首先感受一下使用Lambda表达式带来的便利之处。
张乘辉
2022-04-01
1.7K1
深度剖析 Seata TCC 模式【图解 + 源码分析】
Seata 目前支持 AT 模式、XA 模式、TCC 模式和 SAGA 模式,之前文章更多谈及的是非侵入式的 AT 模式,今天带大家认识一下同样是二阶段提交的 TCC 模式。
张乘辉
2022-01-24
1.4K0
令牌桶算法原理及应用
最近在参与一个业务迁移的项目。走读代码时,接触到一些限流相关的代码。向老司机请教后了解到,有些业务承载了很高量级的扣款请求,尤其对于一些热点商户,其单点的请求量很大,但某些瓶颈系统的处理能力有限,因此需要做好限流,以保障业务流程中各系统的稳定性。
张乘辉
2022-01-24
3.1K0
一个 JDK 线程池 BUG 引发的 GC 机制思考
本文中的模拟代码已经问题都是在HotSpot java8 (1.8.0_221)版本下模拟&出现的
张乘辉
2022-01-24
5140
详解 Seata AT 模式事务隔离级别与全局锁设计
Seata AT 模式是一种非侵入式的分布式事务解决方案,Seata 在内部做了对数据库操作的代理层,我们使用 Seata AT 模式时,实际上用的是 Seata 自带的数据源代理 DataSourceProxy,Seata 在这层代理中加入了很多逻辑,比如插入回滚 undo_log 日志,检查全局锁等。
张乘辉
2022-01-04
2.4K0
Raft: 寻找一种易于理解的一致性算法
Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。一项用户研究的结果表明,对于学生而言,Raft 算法比 Paxos 算法更加容易学习。Raft 算法还包括一个新的机制来允许集群成员的动态改变,它利用重叠的大多数来保证安全性。
张乘辉
2021-12-13
5450
慌了!一次连接池设置引发的一次雪崩。
我最近运维了一个网上的实时接口服务,最近经常出现Address already in use (Bind failed)的问题。很明显是一个端口绑定冲突的问题,于是大概排查了一下当前系统的网络连接情况和端口使用情况,发现是有大量time_wait的连接一直占用着端口没释放,导致端口被占满(最高的时候6w+个),因此HttpClient建立连接的时候会出现申请端口冲突的情况。具体情况如下:
张乘辉
2021-12-04
8490
浅谈互联网分布式架构的演进
互联网的系统常常面临庞大的用户群体,意味着系统需要时刻面临着大量高并发请求,海量的数据存储等问题的挑战,在解决这些问题的同时还要保证系统的高可用性。同时互联网行业更新迭代快,很多互联网巨头的发展初始阶段,为了快速把产品上线发布以占据用户流量,会以最简单的应用架构形态对系统进行部署,不会过多地考虑未来的应用架构的发展,所以很多互联网公司发展到一定规模,都会进行相应的架构重构与改进,以便适应业务的发展。
张乘辉
2021-12-04
7290
面试必备笔记:深入理解 JVM
刷豆瓣看到《深入理解 JVM》出第三版了,遂买之更新 JVM 知识,本文为笔记,仅供个人 Review。
张乘辉
2021-11-17
4510
JUC 中 4 个常用的并发工具类
CountDownLatch是我目前使用比较多的类,CountDownLatch初始化时会给定一个计数,然后每次调用countDown() 计数减1,
张乘辉
2021-11-10
3530
线程池是如何重复利用空闲的线程来执行任务的?
在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。此时,我们很自然会想到使用线程池来解决这个问题。
张乘辉
2021-10-27
6831
一文吃透建造者模式
建造者模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。
张乘辉
2021-09-23
3500
面试官:给我讲一个项目性能优化的方案?
这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。
张乘辉
2021-09-02
5030
聊聊 page cache 与 Kafka 之间的事儿
关于Kafka的一个灵魂拷问:它为什么这么快?或者说,为什么它能做到如此大的吞吐量和如此低的延迟?
张乘辉
2021-09-02
7440
从源码中探索新一代垃圾回收器 ZGC
笔者经过上次对zgc在不同环境下进行的测试后,发现zgc所带来的提升非常之大。一时间对zgc在生产中使用充满信心,但是在全面使用之前,难免对其几大新特性有一些好奇,比如:染色指针,读屏障,动态region,支持NUMA等等。其中有一些是比较好理解的,但是有一些例如染色指针,读屏障刚接触的时候会不明其意。在网上搜索一番后发现很多文档都只是简单一笔盖过,或者只介绍个概念,甚至还有错误或者模糊的介绍,具体的实现和意义最让笔者好奇,但又找不到答案。所以笔者在经过一段时间的ZGC源码学习后,在此做一番总结。
张乘辉
2021-08-06
1.1K0
揭秘有状态服务上 Kubernetes 的核心技术
之前在中通负责过缓存平台的建设工作,当时的缓存系统使用搜狐 TV 开源的 CacheCloud 缓存服务平台进行托管,但随着公司业务发展,随着而来的是资源隔离、集群访问权限粒度、资源不均衡、仅支持 Redis 类型的集群等问题,为了解决公司当下使用缓存的痛点,当时决定构建下一代缓存服务平台,它是基于 Kubernetes Operator 自动化部署与运维的思想,当时还写下了一篇文章:「中通缓存服务平台基于 Kubernetes Operator 的服务化实践」。
张乘辉
2021-07-14
9830
图解 Raft 共识算法:如何复制日志?
上次讲到 Raft 领导者选举:「图解 Raft 共识算法:如何选举领导者?」,接着这个话题继续跟大家聊下关于 Raft 日志复制的一些细节。
张乘辉
2021-06-10
2K0
代码即格式:你用过这些高效工具吗?
我在工作中也用到一些使用起来非常高效的工具,今天以 “代码即格式” 为主题,跟大家介绍下两个高效工具。
张乘辉
2021-06-10
4720
面试官问我:如何设计一个秒杀场景?
从读者的描述,可以看出高并发处理的经验,在面试中占据着举足轻重的地位,关于高并发相关的面试题,一直都是面试热题,因为这类面试题能够更加直观地体现候选人的技术水平与深度。如何解决高并发场景下的问题,永远都不会过时。
张乘辉
2021-06-10
1.3K0
点击加载更多
社区活动
AI代码助手快速上手训练营
鹅厂大牛带你玩转AI智能结对编程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档