
中间件
Terrances
Seek job opportunities
https://github.com/lizhimins
展开
-
分布式事务框架 Seata
Seata 的3个基本组成部分事务协调器(TC):维护全局事务和分支事务的状态,驱动全局提交或回滚。事务管理器(TM):用于开启全局事务、提交或者回滚全局事务,是全局事务的开启者。资源管理器(RM):用于分支事务上的资源管理,向TC注册分支事务,上报分支事务的状态,接受TC的命令来提交或者回滚分支事务。Seata管理的分布式事务的典型生命周期TM向TC请求发起一个全局事务,TC返回一个...原创 2020-03-08 12:56:33 · 408 阅读 · 0 评论 -
dubbo 设计上的基本常识
谈谈扩充式扩展与增量式扩展配置设计设计实现的健壮性防痴呆设计扩展点重构原创 2020-02-05 14:27:58 · 260 阅读 · 0 评论 -
Java并发编程之CyclicBarrier
栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇集。当线程到达栅栏位置时将调用await方法,这个方法将阻塞直到所有线程都到达栅栏位置。如果所有线程都到达栅栏位置,那么栅栏将打开,此时所有的线程都将被释放,而栅栏将被...原创 2020-01-23 00:11:47 · 209 阅读 · 0 评论 -
tcp socket的backlog参数
syns queue用于保存半连接状态的请求,其大小通过/proc/sys/net/ipv4/tcp_max_syn_backlog指定,一般默认值是512,不过这个设置有效的前提是系统的syncookies功能被禁用。互联网常见的TCP SYN FLOOD恶意DOS攻击方式就是建立大量的半连接状态的请求,然后丢弃,导致syns queue不能保存其它正常的请求。accept queu...原创 2019-12-23 15:02:54 · 212 阅读 · 0 评论 -
Kafka: 用于日志处理的分布式消息系统
本文为《Kafka: a Distributed Messaging System for Log Processing》的全文翻译,为了让大家原汁原味的领悟到kafka的设计精髓,所以采用直译并适当在括号中添加了作者观点。本文为作者原创文章,转载请保留出处和链接摘要日志处理已成为消费者互联网公司数据通道的一个关键组成部分。我们介绍卡夫卡(Kafka),一种为了在低延迟下收集和传递大容量...原创 2019-12-16 21:54:08 · 984 阅读 · 1 评论 -
ZAB与Paxos的联系和区别
共同点:都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行。Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提议进行提交。在ZAB协议中,每个Proposal中都包含了一个epoch值,用来代表当前的Leader周期,在Paxos算法中,同样存在这样的一个标识,名字为Ballot。区别:Paxos算法中,新选举产生的主进...原创 2019-12-13 11:23:58 · 598 阅读 · 0 评论 -
短轮询和长轮询的区别到底是什么
首先来看这一段话Kafka使用短轮询方式,实时性取决于轮询间隔时间RocketMQ使用长轮询,同Push方式实时性一致,消息的投递延时通常在几个毫秒。看起来云里雾里的,那么长轮询和短轮询到底有什么区别?短轮询短轮询是服务器收到请求不管是否有数据都直接响应请求受到响应隔一段时间在发送同样的请求查询是否有数据;缺点:实时性低长轮询长轮询是服务器收到请求后如果有数据, ...原创 2019-11-15 18:44:50 · 3326 阅读 · 0 评论 -
RocketMQ简介
Name Server 是一个几乎无状态节点,可集群部署,节点之间无任何信息同步Broker 部署相对复杂,Broker 分为 Master 与 Slave,一个 Master 可以对应多个 Slave,但是一个 Slave 只能对应一个 Master,Master 与 Slave 的对应关系通过指定相同的 BrokerName,不同的 BrokerId 来定义,BrokerId为 0 ...原创 2019-11-05 16:01:41 · 191 阅读 · 0 评论 -
kafka 安装部署教程
kafka 安装部署教程1. 下载官网链接 http://kafka.apache.org/downloads浙大源 http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.1/kafka_2.12-2.3.1.tgz2. 解压tar -zxvf kafka_2.11-0.11.0.1.tgz3. 配置单节点3.1 配置单节点 zo...原创 2019-11-03 13:17:55 · 255 阅读 · 0 评论 -
TCP之Nagle算法
TCP之Nagle算法&&延迟ACK为了减少广域网的小分组数目,从而减小网络拥塞的出现;该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组;该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发哦送的越...原创 2019-10-20 11:20:11 · 320 阅读 · 0 评论 -
从 kafka 源码中学习到的编程技巧(一)
从 kafka 源码中学习到的编程技巧(一)直接看这个例子,可以避免很多开发中的拼写错误。package com.alibaba.kafka;import java.util.Properties;public class App { private static String BOOTSTRAP_SERVER = "boostrap.server"; private...原创 2019-10-15 11:35:28 · 215 阅读 · 0 评论 -
关于中间件源码中的线程休眠 Thread.Sleep(0) vs Thread.Sleep(1)
Thread.Sleep(0)Sleep 的意思是告诉操作系统自己要休息 n 毫秒,这段时间就让给另一个就绪的线程吧。当 n=0 的时候,意思是要放弃自己剩下的时间片,但是仍然是就绪状态,其实意思和 Yield 有点类似。但是 Sleep(0) 只允许那些优先级相等或更高的线程使用当前的CPU,其它线程只能等着挨饿了。如果没有合适的线程,那当前线程会重新使用 CPU 时间片。If you sp...原创 2019-10-08 13:04:52 · 250 阅读 · 0 评论 -
RocketMQ 安装部署教程详解
RocketMQ 安装部署教程详解Linux 环境OS: Ubuntu 16.04 LTS x64系统配置: 1C/2G/5MRocketMQ: 4.5.2JDK: 1.8.0_201Maven: 3.6.1Git1. 安装 gitapt-get updateapt install -y git2. 安装 jdk8u201wget http://lzmx.oss-cn...原创 2019-10-07 20:18:36 · 784 阅读 · 0 评论