简述fourinone是如何进行分布式协调设计的

分布式协同在分布式应用中可谓是必不可少的,担任着协调者的角色,也就是将多机协同的职责从分布式应用中独立出来,这样就能减少系统的耦合性和增强扩充性。Apache的Zookeeper, google的Chubby都是分布式协同的实现者。fourinone实际上是Zookeeper的升级版,它通过使用最少的代码实现了Zookeeper的所有功能,并且力图做到使用更简洁,功能更强的应用。

一、实现原理

fourinone对分布式协同的实现, 是通过建立一个domain,node两层结构的节点信息去完成,domain可以是分类或者包,node可以是具体属性,domain和node都是自己根据需求设计命名,比如可以将domain命名为“a.b.c...”表示一个树型类目。

一个domain下可以有很多个node,每个node只指定一个domain,可以通过domain返回它下面所有的node。

domain不需要单独建立,通常在建立node时,如果不存在domain会自动创建。

如果domain下没有node了,该domain会自动删除。

如果删除domain,该domain下面node也都会删除。

每个node下可以存放一个值,可以是任意对象。

所有的节点信息存放在parkserver里,parkserver提供协同者的功能。如下图所示:

从上图可以看到,其他分布式进程可以通过parkserver的用户接口ParkLocal,对节点进行增加、修改、删除、指定心跳、指定权限等操作,并且结合parkserver提供同步备份、领导者选举、过期时间设置等功能,共同来实现众多分布式协同功能,比如:

1、分布式配置,多个机器的应用公用一个配置信息,并且挂掉能够领导者选举,详细见指南和demo

2、分布式锁,多个机器竞争一个锁,当某个机器释放锁或者挂掉,其他机器可以竞争到锁继续,详细见指南和demo

3、集群管理,集群内机器可以互相感知和领导者选举,详见指南和demo

时间: 2024-09-19 10:11:49

简述fourinone是如何进行分布式协调设计的的相关文章

以fourinone为例详细解析分布式协调的设计原理

fourinone 实际上可以单独当做 Zookeeper 用,它使用最少的代码实现了 Zookeeper 的所有功能,并且力图做到功能更强但是使用更简洁.本文以 fourinone 为例详细解析了分布式协调的设计原理. Fourinone(中文名字"四不像")是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架.当我们把复杂的 Hadoop 当作一门学科学习时,似乎忘记了我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机

日志系统之基于Zookeeper的分布式协同设计

最近这段时间在设计和实现日志系统,在整个日志系统系统中Zookeeper的作用非常重要--它用于协调各个分布式组件并提供必要的配置信息和元数据.这篇文章主要分享一下Zookeeper的使用场景.这里主要涉及到Zookeeper在日志系统中的使用,但其实它在我们的消息总线和搜索模块中也同样非常重要. 日志元数据 日志的类型和日志的字段这里我们统称为日志的元数据.我们构建日志系统的目的最终主要是为了:日志搜索,日志分析.这两大块我们很大程度上依赖于--ElasticSearch(关于什么是Elast

一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务

 1:Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务 A.zookeeper是为别的分布式程序服务的 B.Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,Zookeeper就能正常服务) C.Zookeeper所提供的服务涵盖:主从协调.服务器节点动态上下线.统一配置管理.分布式共享锁.统一名称服务-- D.虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能: 管理(存储,读取)用户程序提交的数据: 并为用户程序提供数据节点

如何实现高容量大并发数据库服务 | 数据库分布式架构设计

袋鼠学院和优云.阿里云联合举办的沙龙结束之后,总是有小伙伴们来问PPT内容,想要进一步了解Topic内容.(哦,对了对了,竟然还有小伙伴专门冲着袋鼠云去听沙龙,感动cry~~) 千呼万唤,忙成狗的袋鼠小妹终于把沙龙总结整理了出来(⊙o⊙) 本次沙龙的主题是"云时代下的运维管理实践",受邀请的演讲嘉宾,花名宏翊(经常关注袋鼠云的同学,肯定已经对这个名字很熟悉了),是袋鼠云首席数据库架构师,袋鼠学院数据库讲师. 呼应沙龙运维实践的主题,结合自己的专长领域,宏翊主要是从数据库领域来谈云时代下

【转】分布式协调服务ZooKeeper工作原理

申明:本文转自分布式协调服务ZooKeeper工作原理,来自yogoup公众号.解决了我关于zookeeper这个系统的认识,zookeeper主要解决分布式系统的一致性问题,实际应用场景包括:统一命名服务.分布式配置管理.集群管理.分布式锁.分布式队列等.在微服务架构中,也可以使用zookeeper作为服务发现的中间件. 大数据处理框架Hadoop.Redis分布式服务Codis.淘宝的分布式消息中间件MetaMQ --他们都使用ZooKeeper做为基础部件,可以看出ZooKeeper的强大

分布式协调服务中间件ZooKeeper 入门(1)-ZK的介绍与特性

一.Zookeeper简介 Zookeeper是一个服务,是一个分布式协调技术,他提供高性能,分布式的协调服务.主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果.它也提供了其他简单的功能,这样分布式系统可以基于它来实现更好的服务,比如同步,配置管理,集群等等.他使用文件系统目录树作为数据模型.服务端可以跑在java程序上,他提供java和C的客户端api. 什么是分布式系统? 1.由多台计算机组成一个整体2.计算机之间可以互相通

分布式核心技术之协调设计解析

Fourinone 简介 Fourinone(中文名字"四不像")是一个四合一分布式计算框架,在写这个框架之前,我对分 布式计算进行了长时间的思考,也看了老外写的其他开源框架.当我们把复杂的 Hadoop 当作一门学科学习时,似乎忘记了 我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机器一起用起来计算,把更多的 CPU 和内存利用上,来 解决我们数量大和计算复杂的问题.当然这个过程中要考虑到分布式的协同和故障处理.如果仅仅是为了实现这个简单的初 衷,为什么一切会那么复杂.我

关于.Net开发下的分布式缓存设计

最近拜读了代振军同学写的关于.net开发下的Discuz!NT的缓存设计的一篇文 章Discuz!NT 缓存设计简析 [原创],颇有些想法,姑且写在这里让大家拍砖吧 .;) 缓存真是个好东西,在大型的系统中可以有效地提升系统的速度,此乃废话 就不多说了,在.Net 平台下面我把缓存从功用大致分为两类,数据对象缓存和 页面输出缓存. 对于数据缓存来讲是由System.Web.Caching.Cache这个类来实现 ,可以从上下文对象Context.Cache 来获取这个对象的引用.而页面/控件输出

分布式数据仓库设计

做大做强事实表,做小做弱维表: 分布式模式-维度建模新原则 (1)以值代键:针对键值唯一的维表,除非必要,否则不引入维表,如IP地址维表,采用IP作为维表的主键,事实表中存储IP值:       (2)合理分表:传统关系型数据仓库存在多表整合的冲动,如上图Event事实表,各种Acount Ind,Finance Ind等,用来扩展表的通用性,试图把所有的数据都存储到一张表 中.分布式数据仓库的设计,恰恰相反,因为单表数据规模的问题,如果要满足分析和处理的性能,合理的按照业务进行数据的分表存储.