分布式
文章平均质量分 65
liangdu_Zuker
这个作者很懒,什么都没留下…
展开
-
读《凤凰架构》- 从HTTP/1.0到QUIC
引用《凤凰架构》-周志明。原创 2022-07-21 00:36:46 · 407 阅读 · 0 评论 -
读《凤凰架构》- RPC的历史与知识
引用《凤凰架构》-周志明。原创 2022-07-21 00:33:55 · 341 阅读 · 0 评论 -
《wireshark网络分析就是这么简单》知识点与技巧
理论抽象的话,找个工具和工具教学的书可以帮我们快速获得实用的知识。掩码是为本机服务的,理解这个很重要。offload网卡技术有时候也是个坑,不用就关掉配置。RST是危险信号。MSL调小点,服务器启用SO_REUSEADDR。拥堵的话,调好两个窗口,临时窗口ssthresh,接收窗口win,和一个重传rto+sack。udp不能传大包。注意nat影响抓包和ip黑白名单。tshark用起来。...原创 2022-07-21 00:29:40 · 828 阅读 · 0 评论 -
【读书笔记《凤凰架构》- 构架可靠的大型分布式系统.周志明】(一)
整部书分为5部分,除了第一章讲分布式架构的历史,其他四章都偏技术。书本的作者提也到,再看书前最好先理解本书的排版的逻辑(尽管每一章都被设计为可以单独阅读)但除第1部分, 剩下的4个部分的排版逻辑是有的,但不够清晰,所以针对目录进行了一轮整理。经过分析后,可以发现本书从 第2部分到 第 5 部分的排版都是有逻辑性的, 即从 架构知识 到 分布式技术点,再到微服务技术和实践 。甚至在具体部分里的章节也是有一定的逻辑性。由于本人喜欢 周志明的《深入理解Java虚拟机》的作品,加上这是他难得的新作, 从书本的目录原创 2022-06-22 19:35:20 · 1004 阅读 · 0 评论 -
简洁描述raft与paxos在设计上的共同点和不同点
1.raft与mutil-Paxos一样采用了CAP模型中的CP模型2.raft也是用广播来同步信息,利用多备来实现高可用,利用主从来实现高效读写模型,利用“过半数规则”来实现一致性(这一点理解为降燥容错更好,因为多人同步容易有噪音)。唯一不同的是: raft采用时间差形成的时序先后来确定谁是Master,而paxos采用的是数值和版本号来确定谁是Master.从优缺点来说,raft可以减少消息通讯次数,从而减少选举延迟,性能比paxos高,而最终效果跟paxos一样。你也可以通过修改mast原创 2021-01-06 10:47:23 · 323 阅读 · 0 评论 -
zookeeper的zab协议解决的问题与设计方案
故事的开始如果从 Lamport 的 basic paxos算法开始捡起来还是有点复杂。我建议从单机开始讲起,对产品不停地迭代。最简单的场景假如,现在我们有一套5个人,需要修改一个变量的值,那就存在竞争问题了。每个人修改值都会做3件事情,那就是读\计算\写。那么就存在一个问题,如果5个人同时对这个变量读写该以谁为准呢?。(我们为了不复杂化我们的系统设计,所以第一个版本,我们【把变量寄放在一块共享内存】)第一个游戏规则如果5个人同时对这个变量读写该以谁为准呢?为了简单粗暴,我们会以最大的为准原创 2020-12-22 18:15:26 · 214 阅读 · 2 评论 -
强一致性和弱一致性的分析思路以及分布式场景的并发技巧
强一致性和弱一致性分区引发的分布式一致性问题当数据出现分区(分区不一定等于分片,分片是指数据划分多个域,分区多指复制,分区包含分片的概念)根据CAP原理(CAP原理来源于 FLP不可能原理),数据出现分区P,那么一致性C和有效性A就得二选一。我们如果强调一致性,即CP,那么就会出现,数据会一段时间不可读,也就意味着系统长时间不可用。如果我们强调系统可用性,即AP,那么就会出现,数据会有一段时间读取旧数据,也就意味着系统对外提供的数据和实时数据不一致。FLP 不可能原理:在网络可靠,存在节点失效原创 2020-12-01 17:31:13 · 670 阅读 · 1 评论 -
kubenetes知识分享提纲
kubenetes知识分享提纲k8s的背景:容器化是微服务化的方法,而管理容器是一件麻烦的事情,k8s就是为了解决容器集群的工具。先简单了解一下docker,docker是一个程序镜像化的脚本,我们可以将git上的代码,通过docker镜像构建脚本自动生产docker容器进程。我们可以认为docker引擎就是将代码和运行环境构建成业务进程的程序,而docker引擎缺少强大的管理机制,k8s才因此诞生。对于k8s而已,所谓的镜像是k8s对容器引擎镜像的抽象(功能更加丰富的镜像),而不是具体到某一种容原创 2020-08-13 21:02:58 · 212 阅读 · 0 评论 -
kubenetes的学习笔记
Borg是k8s在谷歌的前身K8s的特点 轻量级消耗小,开源,弹性伸缩,负载均衡,资源管理功能齐全,扩展性好。网络通信模型组件通讯模型资源清单是剧本,k8s组件时演员。资源清单的语法就是Yaml配置掌握各种控制器的特点,使用定义的方法。k8s的Pod是最小粒度,它不会直接暴露给客户端,而是以service的方式暴露给网络中的client.这个称之为服务发现,我们开源类比dubbo等rpc组件中的服务发现的概念。但是k8s中的service对外的接口解耦程度更加宽松(c..原创 2020-08-13 21:02:12 · 235 阅读 · 0 评论 -
RabbitMQ笔记
RabbitMQ笔记rabbitmq中的角色可以抽象为生产者,消费者,broker,以及两条channel。三者之间通过channel进行交互。获取channel需要登陆授权的Connector。生产者的channel需要配置交换器标签和路由键标签,路由键标签最终代替queue标签,之后Producer不再与queue直接接触。而consumer的channel则需要配置好接收滑动窗口的大小,...原创 2019-03-02 19:41:15 · 263 阅读 · 0 评论 -
kafka学习笔记
kafka学习笔记kafka是一个集 消息系统,流处理系统的流式数据处理系统流处理系统会解决类似TCP的:“消息顺序”“错误重发”“滑动窗口”“通讯状态”等问题。kafka消息会集中后垃圾回收。kafka的游标是让消费者维护,目的是为了提高吞吐量。消费者可访问历史消息。生产的消息要经过足够的同步后才可以被消费者读取,即移动watermark指针,而且读取方式是主动pull。生产者把消...原创 2019-03-02 19:40:50 · 444 阅读 · 0 评论 -
redis笔记
redis笔记交换文件大小有 = vm-page-size * vm-pagesappendonly使得redis只开启aof。rdb镜像比较耗时间,容易丢数据,但是节约空间,需要通过save控制备份频率。aof实时性好,灵活,不容易丢数据,但是备份文件大,而且恢复慢redis的内存结构默认为key放到内存,value放到硬盘的交换文件。maxmemory可以控制存放到内存的key的...原创 2019-03-02 19:39:52 · 489 阅读 · 0 评论 -
区块链的事务问题
区块链的事务问题这个问题其实也就是典型的分布式事务问题,既然区块链属于分布式的范畴,所以区块链也存在事务问题。这里我要以程序员的角度去分析这个问题:在做与区块链交互的业务系统的时候,比如基于Nodejs的web3工具编写与 etherum以太坊只能合约交互,我们会经常使用ES6 Promise等异步机制与区块链交互,企图提高交互效率。这确实是很好的做法,而需要值得注意,非理性的使用会埋下很多BUG...原创 2018-04-19 20:37:11 · 2686 阅读 · 1 评论 -
区块链技术原理-简明的描述
其实大家对于区块链不需要太过于恐惧,或者觉得高端。目前区块链核心技术就两块:底层区块链,核心技术就是网络协议设计,共识算法设计,区块存储设计。再上面就是可编程虚拟机层(或者叫智能合约层),就是在区块链上嵌入一层可编程中间件,便于程序员在上面开发应用,俗称编写智能合约。其实基于区块链编写一个简单的lua虚拟机,对于知乎大牛不会太困难。再往上可以设计一些服务层,比如各类自定义服务接口,转载 2017-09-04 11:58:50 · 1312 阅读 · 0 评论 -
阿里天池中间比赛总结,即消息队列引擎设计
阿里天池中间比赛总结,即消息队列引擎设计总结题目传送门: https://code.aliyun.com/middlewarerace2017/open-messaging-demo?spm=5176.100068.555.1.76d97540zXrIuM这次比赛的任务就是:根据阿里的《Open-Messaging规范》实现消息队列引擎该规范也是阿里开源消息队列racketMq的接口规范。要求,多原创 2017-07-03 17:56:48 · 841 阅读 · 0 评论 -
多少并发下响应时间多长才算合理?--面试题
群友问了这么一个问题,要检验一个服务的质量真不是一件简单的事情。因为网络中几乎每次通讯都会存在特殊情况,而我难点在于把这些特殊情况排除。 常规的做法就是把并发加大到宽带满,(带宽就好像水管,要让水管满就要加大水量) .要把带宽加满你要计算你需要多少并发,要知道多少并发量,你需要知道一次请求的数据量。公式:带宽 = 并发量 *数据量我们可以通过解析HTTP包(wireshark等工具,或者估算原创 2017-03-09 16:28:57 · 23143 阅读 · 0 评论 -
《计算机网络》知识总结-8.TCP中什么是滑动窗口技术?为什么要这个?
前提在讨论这个问题前,先提出一个问题,假定我现在要A要发送一些数据给B,A要怎么才能保证发送的量B在网络良好的情况下能承受得住呢?答案:A在发送前B要告诉他自己的容量是多少,比如,我给你盛饭,你要先告诉我,你能吃多少饭,我保证不超过你的饭量,这样就不会浪费了。而你的饭量就是一个窗口,如果你的饭量会随着时间消化而变化,那么这个就叫会滑动的窗口。原创 2016-11-09 23:23:53 · 2798 阅读 · 0 评论 -
聊聊分布式事务
聊聊分布式事务标签: 分布式事务2015-01-27 17:53 8639人阅读 评论(10)收藏 举报 分类:数据库技术(2) 版权声明:本文为博主原创文章,未经博主允许不得转载。事务就是一个会话过程中,对上下文的影响是一致的,要么所有的更改都做了,要么所有的更变都撤销掉。就要么生,要么死。没有半死不死的中间不可预期状态。参考下薛定谔的转载 2016-10-12 19:38:52 · 216 阅读 · 0 评论 -
HADOOP 初见
Hadoop本身提供了丰富的tool(一大堆脚本工具)而且还可以继承这些tool做更强大的开发Hadoop还为javaTM提供了很多本地方法库(基于JNI)弥补JAVA的局限Hadoop还有很多子项目(如HIVE,HBASE,SQOOP),以及很多免费的基于hadoop开发的工具项目其中用来做数据库集群的是HBASE 他的管理工具(类似于原创 2016-10-12 19:33:44 · 239 阅读 · 0 评论 -
以两军问题为背景来演绎Basic Paxos
以两军问题为背景来演绎Basic Paxos博客分类:笔记网络编程paxos算法 背景在计算机通信理论中,有一个著名的两军问题(two-army problem),讲述通信的双方通过ACK来达成共识,永远会有一个在途的ACK需要进行确认,因此无法达成共识。两军问题和Basic Paxos非常相似1) 通信的各方需要达成共识;2) 通信的各方仅需要转载 2016-10-12 19:33:13 · 333 阅读 · 0 评论 -
zookeeper学习记录
zookeeper学习记录博客分类:distributed 背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeeper,不求看懂所有源码,但求了解其实现机制和原理,清楚其基本使用。这也是为后续hadoop,gridgain的分布式计算的产品。学习首先就是收集一些前人的一些学习资料和总结内容,方便转载 2016-10-12 19:32:39 · 383 阅读 · 0 评论 -
JOTM介绍
JOTM介绍JOTM (Java Open Transaction Manager)是由ObjectWeb协会开发的功能完整的且开源的事务管理器。JOTM 提供了以下功能,有助于增强 WEB 应用程序:1.完全分布式事务支持。如果数据层、业务层、表示层运行在不同的 JVM 上,则有可能有一个全程的事务跨度这些JVM,事务的内容在RMI/JRMP 和RMI/IIOP 上传播。原创 2016-10-12 19:30:53 · 975 阅读 · 0 评论 -
Atomikos
Atomikos Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器。Atomikos TransactionsEssentials 是一个为Java平台提供增值服务的并且开源类事务管理器,以下是包括在这个开源版本中的一些功能:l 全面崩溃 / 重启恢复l 兼容标准的SUN公司JTA APIl 嵌套事务l 为XA和非XA提供内置的JDBC适配器注释转载 2016-10-12 19:30:32 · 1435 阅读 · 0 评论 -
redis学习
redis官网redis的优点:数据类型 有string(字符串)、以及4中数据结构 list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)高性能的key-value数据库对资源操作只有一个线程,从根源保证了数据的原子性周期性的把更新的数据写入磁盘把修改操作写入追加的记录文件根据记录日志实现主从同步单层树复制从服务器采用消息/订阅机制冗余原创 2016-10-29 19:39:32 · 294 阅读 · 0 评论 -
分布式事务的方法
1.利用消息队列的失败重发机制+等幂操作2.利用事务补偿。3.利用分布式事务管理器如:JOTM、Atomikos原创 2016-10-29 19:29:58 · 273 阅读 · 0 评论 -
dubbo扩展spring scheme 暴露服务提供者的源码跟踪演绎
我在想他暴露肯定要依赖自己的封装··因为spring只负责创建(而且不是懒创建) 第一个猜想得到了验证既然他依赖于自己封装的类,那直接看他的导入·····(我发现他们的导入还是很规范的) 看到他封装的serviceBean··绝对可疑····然后就在DubboBeanDefinitionParser里面find一下发现这个引用只被调用了2处··力证我的猜想 然后接下来就越来越清晰了····很容原创 2016-11-23 14:52:00 · 689 阅读 · 0 评论 -
dubbo服务提供者的Maven构建流程
整个流程分为【打包流程】和【启动流程】【打包流程】:==========================================================================采用cd/d %~dp0mvnassembly:assembly进行编译打包。==============================原创 2016-11-23 15:00:52 · 1001 阅读 · 0 评论 -
dubbo的内核源码UML(容器启动以及Spring的shceme扩展)
1.通用参数交由System.getPropertys();管理2.利用class.forName()还有注解技术 ,模仿SPI,实现自己的ExtensionLoader,再利用反射获取扩展类的实体对象。3.如果是用spring容器的话,使用的spring标签扩展机制(OSGi),去启动RPC,个人认为先分析jetty机制。===整个项目主要是:1.原创 2016-11-23 15:08:45 · 685 阅读 · 0 评论 -
怎么将dubbo的SPI移植到开源项目中,附dubbo的ExtensionLoader<T> 的实现原理分析
Dubbo的扩展点加载从JDK标准的SPI(Service Provider Interface)扩展点发现机制加强而来。Dubbo改进了JDK标准的SPI的以下问题:JDK标准的SPI会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。如果扩展点加载失败,连扩展点的名称都拿不到了。比如:JDK标准的ScriptEngine,通过getNam原创 2016-12-30 14:29:23 · 860 阅读 · 0 评论 -
redis缓存接口设计
# 这是Java的Redis客户端工具类 - 2016/12/15 caisz## 该模块包含2个主要文件: 包路径 com.keydak.utils.redis - 命令接口声明 IRedisUtils : 声明给外界使用的工具类接口 - 抽象工具类 AbstractRedisUtils : 统一的工具类实现模板## java Redis客户端拥有2类常用的实原创 2016-12-29 15:12:09 · 3770 阅读 · 0 评论 -
dubbo服务提供者注册后为什么要有心跳机制
因为注册中心的会话是有生命限制的,会话结束生命就要终止,为了防止因为会话闲置太久被杀了,所以必须要保持会话。怎么保持呢?我在dubbo的源码里面一直找不到dubbo注册session失效的事件的源码,所以我猜测,这个事件应该和znode做了捆绑,因为创建会话的时候生成了znode。我查看了zookeeper,果然是有提供这样的机制。 zk有一种Z原创 2017-01-06 14:37:35 · 7436 阅读 · 1 评论 -
基于zookeeper的分布式锁实现
基于zookeeper的分布式锁实现工作中需要写一个定时任务,由于是集群环境,自然而然想到需要通过分布式锁来保证单台执行..相信大家都会想到使用zk来实现对应的分布式锁.下面就简单介绍一下几种实现 准备工作有几个帮助类,先把代码放上来ZKClient 对zk的操作做了一个简单的封装 Java代码 package zk.lock; import转载 2016-10-12 19:39:35 · 589 阅读 · 0 评论