- 博客(11)
- 资源 (57)
- 收藏
- 关注
转载 什么是幂等?分布式锁如何实现业务幂等?
1|0前言现如今很多系统都会基于分布式或微服务思想完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题。当出现这种问题,服务端会进行重试等操作或客户端有可能会进行多次点击提交。如果这样请求多次的话,那最终处理的数据结果就一定要保证统一,如支付场景。此时就需要通过保证业务幂等性方案来完成。2|0什么是幂等 幂等本身是一个数学概念。即 f(n) = 1^n ,无论n为多少,f(n)的值永远为1。
2021-10-23 21:07:51 1134
转载 fread,fwrite数据写入磁盘的流程
1、fwrite,fflushfread,fwrite>> CLib buffer内存缓冲(用户空间) -->fflush>>page cache内核缓冲--->fsync>>磁盘fflush:标准I/O函数(如:fread,fwrite)会在内存建立缓冲,该函数刷新内存缓冲,将内容写入内核缓冲,要想将其写入磁盘,还需要调用fsync。(先调用fflush后调用fsync,否则不起作用)。https://blog.csdn.net/lhb0709.
2021-10-23 19:49:11 1251
转载 SpringBoot 整合 Spring Kafka,消息重试和死信队列的应用
前言kafka是一个消息队列产品,基于Topic partitions的设计,能达到非常高的消息发送处理性能。Spring创建了一个项目Spring-kafka,封装了Apache 的Kafka-client,用于在Spring项目里快速集成kafka。除了简单的收发消息外,Spring-kafka还提供了很多高级功能,下面我们就来一一探秘这些用法。项目地址:https://github.com/spring-projects/spring-kafka简单集成引入依赖<depen
2021-10-23 19:03:12 6983 1
转载 Java多线程系列之wait
前言我们知道让线程阻塞除了可以调用sleep方法,join方法还有wait方法,前两个是属于Tread的方法,而wait是属于Object的方法,今天就来聊一聊wait的用法。先看一看wait的三个重载方法public final void wait() throws InterruptedException public final void wait(long timeout) throws InterruptedException public final void wait(long
2021-10-23 12:50:02 2661
转载 JavaScript 运行机制详解:再谈Event Loop
一年前,我写了一篇《什么是 Event Loop?》,谈了我对Event Loop的理解。上个月,我偶然看到了Philip Roberts的演讲《Help, I'm stuck in an event-loop》。这才尴尬地发现,自己的理解是错的。我决定重写这个题目,详细、完整、正确地描述JavaScript引擎的内部运行机制。下面就是我的重写。进入正文之前,插播一条消息。我的新书《ECMAScript 6入门》出版了(版权页,内页1,内页2),铜版纸全彩印刷,非常精美,还附有索引(当然价格也比同类
2021-10-18 10:39:20 167
原创 Kafka重复消费场景及解决方案
Kafka消费者以消费者组(Consumer Group)的形式消费一个topic,发布到topic中的每个记录将传递到每个订阅消费者者组中的一个消费者实例。Consumer Group 之间彼此独立,互不影响,它们能够订阅相同的一组主题而互不干涉。生产环境中消费者在消费消息的时候若不考虑消费者的相关特性可能会出现重复消费的问题。在讨论重复消费之前,首先来看一下kafka中跟消费者有关的几个重要配置参数。enable.auto.commit:默认值true,表示消费者会周期性自动提交消.
2021-10-11 22:19:47 2442
原创 mysql主从复制
1、默认主从复制Mysql的复制原理大致如下:主库记录binlog日志:在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志binlog中。主库上的sync_binlog参数控制binlog日志刷新到磁盘。 从库IO线程将主库的binlog日志复制到其本地的中继日志relay log中:从库会启动一个IO线程,IO线程会跟主库建立连接,然后主库会启动一个特殊的二进制转储线程(binlog dump),二进制转储线程会读取主库上binlog中的事件,它不会一直对事件进行轮询,当它追
2021-10-11 14:42:29 229
转载 分布式系统互斥性与幂等性问题的分析与解决
随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题,系统架构也在不断演进。传统的集中式系统已经逐渐无法满足要求,分布式系统被使用在更多的场景中。分布式系统由独立的服务器通过网络松散耦合组成。在这个系统中每个服务器都是一台独立的主机,服务器之间通过内部网络连接。分布式系统有以下几个特点:可扩展性:可通过横向水平扩展提高系统的性能和吞吐量。 高可靠性
2021-10-10 19:10:05 211 1
原创 guava-retry介绍
guava-retrying是Google Guava库的一个扩展包,可以为任意函数调用创建可配置的重试机制。该扩展包比较简单,大约包含了10个方法和类,官网:GitHub - rholder/guava-retrying: This is a small extension to Google's Guava library to allow for the creation of configurable retrying strategies for an arbitrary function cal
2021-10-10 18:03:32 4193
转载 Linux 文件预读
Linux文件预读算法磁盘I/O性能的发展远远滞后于CPU和内存,因而成为现代计算机系统的一个主要瓶颈。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。本文作者是中国科学技术大学自动化系的博士生,他在1998年开始学习Linux,为了优化服务器的性能,他开始尝试改进Linux kernel,并最终重写了内核的文件预读部分,这些改进被收录到Linux Kernel 2.6.23及其后续版本中。从寄存器、L1/L2高速缓存、内存、闪存,到磁盘/光盘/磁带
2021-10-08 19:18:46 519
转载 Linux内核Page Cache和Buffer Cache关系及演化历史
在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty page)即为页缓存(page cache)。块缓存(buffer cache),则是内核为了加速对底层存储介质的访问速度,而构建的一层缓存。他缓存部分磁盘数据,当有磁盘读取请求时,会首先查看块缓存中是否有对应的数据,如果有的话,则直接将对应数据返回,从而减少对磁盘的访问。两层缓存各有自己的缓存目标,我
2021-10-08 13:27:24 208
macOS eclipse Launcher
2023-12-18
parquet-tools-1.6.0rc3.zip
2020-07-24
jQuery-Plugin-For-Easily-Readable-JSON-Data-Viewer.zip
2019-12-31
yesmeck-jquery-jsonview-v1.2.3-14-g01b1eb8.zip
2019-12-30
linux解析json工具——jq
2017-09-16
jquery 全屏显示插件
2015-03-20
apache-maven-3.2.3-bin
2014-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人