分布式架构,Java高级工程师必看系列
Goosip 协议的信息传播和扩散通常需要由种子节点发起。整个传播过程可能需要一定的时间,由于不能保证某个时刻所有节点都收到消息,但是理论上最终所有节点都会收到消息,因此它是一个最终一致性协议。
Gossip协议是一个多主协议,所有写操作可以由不同节点发起,并且同步给其他副本。Gossip内组成的网络节点都是对等节点,是非结构化网络。
消息类型
=======================================================================
Gossip 协议的消息传播方式有两种:Anti-Entropy(反熵传播)和Rumor-Mongering(谣言传播)。
反熵传播是以固定的概率传播所有的数据。所有参与节点只有两种状态:Suspective(病原)、Infective(感染)。这种节点状态又叫做simple epidemics(SI model)。过程是种子节点会把所有的数据都跟其他节点共享,以便消除节点之间数据的任何不一致,它可以保证最终、完全的一致。缺点是消息数量非常庞大,且无限制;通常只用于新加入节点的数据初始化。
谣言传播是以固定的概率仅传播新到达的数据。所有参与节点有三种状态:Suspective(病原)、Infective(感染)、Removed(愈除)。这种节点状态又叫做complex epidemics(SIR model)。过程是消息只包含最新 update,谣言消息在某个时间点之后会被标记为 removed,并且不再被传播。缺点是系统有一定的概率会不一致,通常用于节点间数据增量同步。
通信方式
=======================================================================
Gossip 协议最终目的是将数据分发到网络中的每一个节点。根据不同的具体应用场景,网络中两个节点之间存在三种通信方式:推送模式、拉取模式、Push/Pull。
Push: 节点 A 将数据 (key,value,version) 及对应的版本号推送给 B 节点,B 节点更新 A 中比自己新的数据
Pull:A 仅将数据 key, version 推送给 B,B 将本地比 A 新的数据(Key, value, version)推送给 A,A 更新本地
Push/Pull:与 Pull 类似,只是多了一步,A 再将本地比 B 新的数据推送给 B,B 则更新本地
如果把两个节点数据同步一次定义为一个周期,则在一个周期内,Push 需通信 1 次,Pull 需 2 次,Push/Pull 则需 3 次。虽然消息数增加了,但从效果上来讲,Push/Pull 最好,理论上一个周期内可以使两个节点完全一致。直观上,Push/Pull 的收敛速度也是最快的。
总结
=====================================================================
综上所述,我们可以得出Gossip是一种去中心化的分布式协议,数据通过节点像病毒一样逐个传播。因为是指数级传播,整体传播速度非常快,很像现在美国失控的2019-nCoV(新冠)一样。它具备以下优势:
扩展性:允许节点的任意增加和减少,新增节点的状态 最终会与其他节点一致。
容错:任意节点的宕机和重启都不会影响 Gossip 消息的传播,具有天然的分布式系统容错特性。
去中心化:无需中心节点,所有节点都是对等的,任意节点无需知道整个网络状况,只要网络连通,任意节点可把消息散播到全网。
一致性收敛:消息会以“一传十的指数级速度”在网络中传播,因此系统状态的不一致可以在很快的时间内收敛到一致。消息传播速度达到了 logN。
简单
同样也存在以下缺点:
消息延迟:节点随机向少数几个节点发送消息,消息最终是通过多个轮次的散播而到达全网;不可避免的造成消息延迟。
消息冗余:节点定期随机选择周围节点发送消息,而收到消息的节点也会重复该步骤;不可避免的引起同一节点消息多次接收,增加消息处理压力。
Gossip协议由于以上的优缺点,所以适合于AP场景的数据一致性处理,常见应用有:P2P网络通信、Apache Cassandra、Redis Cluster、Consul。
读者福利
感谢你看到了这里!
我这边整理很多2021最新Java面试题(含答案)和Java学习笔记,如下图
总结
面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。
我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
下面我就把我整理的面试资料分享给有需要的读者朋友——戳这里免费获取
面试题及解析总结
大厂面试场景
知识点总结
[外链图片转存中…(img-QKHC64hF-1628614893482)]
大厂面试场景
[外链图片转存中…(img-VkyoSER1-1628614893485)]
知识点总结
分布式架构,Java高级工程师必看系列相关推荐
- Java高级工程师必看系列,从基础到源码统统帮你搞定
1.Java基础 Java基础务必要有一个非常牢固的根基,尤其是对于JVM和并发编程的掌握情况**(属于进阶内容,但也是Java最为重要的基础内容)**,不论是面试还是工作,基础不好,写不出高质量.漂 ...
- Java高级工程师必看系列,已拿到offer
1.为什么要使用分布式锁 使用分布式锁的目的,无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作. 1.1举一个很长的例子 系统 A 是一个电商系统,目前是一台机器部署,系统中有一个用户下订单 ...
- Java高级工程师必看系列,面试真题解析
前言 今年因为这个疫情,感觉这是从工作以来过的最久的一个年了,在家呆的时间不是一般的久,算一算有好几个月呢!我大概是3月底快4月了才出门,投了超多的简历,天天面试面试面试面试面试面试面试-庆幸的是还是 ...
- 安卓开发入门教程!Android高级工程师必看系列,赶紧收藏!
前言 Android开发前几年火爆一时,市场饱和后Android程序员每一名程序员都想成为架构师,但这期间,需要付出的辛苦和努力远超过我们的想象. 我对Android工程师的调研发现:97% 的And ...
- 安卓开发贴吧!Android高级工程师必看系列,建议收藏
缘起 经过近十年的发展,Android技术优化日新月异,如今Android 10.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS.到了各大厂商手里,改源码.自定义系统, ...
- android中高级面试题,Android高级工程师必看系列
1.写在前面 本人目前就读于华南理工软件工程专业大四,2021年春季招聘拿了腾讯.CVTE.华为.YY等公司的实习offer,在腾讯深圳实习,已拿到转正offer,只投了阿里和华为两家公司,运气较好, ...
- Java常见面试题 Java面试必看 (二)
Java常见面试题 Java面试必看 (一) 十一.Spring Boot/Spring Cloud 104.什么是 spring boot? Spring Boot 是由 Pivotal 团队提供的 ...
- 视频教程-Java工程师必学系列课程之4--《Java Swing》视频课程-Java
Java工程师必学系列课程之4--<Java Swing>视频课程 某知名科技公司技术总监,10年以上大型J2EE项目的实战研发经验,参与并主持开发"内蒙古电力集团考试系统&qu ...
- 新基建必看系列——一文看懂爆火的智慧灯杆未来趋势及竞争格局
新基建必看系列--一文看懂爆火的智慧灯杆未来趋势及竞争格局 智慧灯杆是集照明.视频监控.交通管理.环境监测.通信等多功能于一体的新型信息基础设施,由基础设施及杆体,照明设施,交通.视频监控等其他杆载设 ...
- Java常见面试题 Java面试必看 (一)
本篇博客是本人收集网上Java相关的资料整理所得,仅供参考. 一.Java基础 1.JDK 和 JRE区别 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java ...
最新文章
- 雷鸣----总结下男人30岁之前要知道的事
- 05-JDBC学习手册:JDBC2.0 新特性之批量处理数据
- Amazon S3和Swift鉴权机制分析
- ​Redis分布式锁,你真的用对了吗?
- 事件机制(事件冒泡与事件捕获)
- centos6.5 安装hadoop1.2.1亲测版
- 飞书成小米数万员工协作工具,雷军:越用越顺手
- js双通信java,js和java的http通信
- 搭建Hadoop开发环境(全过程)
- css实现背景图片透明内容不透明
- 返回短语的缩写python_邮件缩写短语
- Linux 查看显卡型号
- java图片的放大与缩小
- vue移动端下拉刷新组件、上拉加载组件
- 中小水库中的水情遥测系统如何实现远程监控和自动报警?
- Python教程:函数多个返回值与丢弃返回值
- 学会了这个配音方法,我的视频居然成了热门爆款
- menuconfig的执行过程
- 广域网优化的技术实现和展望
- Access学习要点2----Access2010中如何运行SQL执行SQL语句