Golang分布式设计模式之-----星型拓扑分形设计

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

Golang分布式设计模式之-----星型拓扑分形设计

         上一篇分层设计中,利用了简单的流水线原理,实现了简单的状态转移的设计。

         这一篇我们将考虑另外一种情况。例如,linux内核中的进程管理。所有的进程都有一个父进程。当子进程正常运行时候,与父进程基本无通信。但当子进程死亡时,要通知其父进程,让父进程进行资源回收。当父进程死亡时,两种情况,子进程随着父进程一起死亡,或者将子进程交由父进程的父进程管理。

         其中每个进程都有自己的父进程,也有可能会有自己的子进程。

         在这种管理中,父子关系,或者说是管理者与被管理者的关系。被管理者,可以独自运行,但要将其的一些状态告知管理者,或者管理者,可以定期获取被管理者的状态。

         下面以一个p2p下载器为例:

一、职能划分,形成管理者与被管理者

         1)下载任务管理器。(用于添加,删除任务,以及控制任务下载速度等一些策略管理)

         2)下载任务模块。(用于具体的单个任务下载,可以控制peer)

         3)对等peer模块。(对等交互peer通信,数据交互)

         在这里有两个星型拓扑模型。

         1)下载任务管理器,为管理者,控制任务的添加,删除等。下载任务模块,为被管理者,用于具体某个任务的下载。

              下载管理器,可以实时控制下载模块,下载模块,下载速度,下载完成等状态要向下载管理上报。

         2)下载任务模块,为管理者,控制对等peer获取,创建等。对等peer模块,为被管理者,用于具体的通信,数据交互等。

         其两个星型结构,组成了一个星型的分形结构

二、接口的定义

         1)管理者,定义一个管理者的interface,用于传递给被管理者。

         2)被管理者,定义个状态interface,用于管理者获取、控制被管理者的状态。

三、运行

         1、管理者初始化,并运行

         2、添加被管理者。

              添加时候,将管理设接口传递到被管理者。

         星型拓扑分形设计,可以归属于一种,基于职能管理划分的系统。各个职能独立,并通过接口,进行弱通信,实现了上报、管理等行为。但各个职能却又能实现松散耦合。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

CTF实战25 二进制软件逆向分析工具及实战

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

1091
来自专栏ITCloud的专栏

consul的service mesh功能初体验

|作者简介 ? consul之前一直被当成一个服务发现、分布式KV服务、服务健康检查服务等,但此前发布的1.2版本,宣称其实现了Service Mesh方案。...

801

IAAS与PAAS的开发者视角

在我以前的文章中,解释了云计算的基本概念,包括它的定义,特性和各种服务模式。在本文中,将从开发者的角度对基础设施即服务(IAAS:Infrastrqucture...

1867
来自专栏王亚昌的专栏

进程访问外部接口的超时设置

    早上发现WEB SRV上的FCGI进程全部挂住了,查看日志才发现是访问一个外部接口的时候因为失败率比较高,导致FCGI进程都堵在接收回包上了,因为超时设...

681
来自专栏青枫的专栏

浏览器内核(理解)

  浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。

792
来自专栏FreeBuf

那些年我们“投(shua)”过的票

最近朋友圈中时不时有人要帮忙投个票啥的,又想起N年前,那时候刚开始学习渗透测试,并且自学java的时候,为了学习代码的同时能够更好的用于实战,想找一些事来做一做...

1888
来自专栏FreeBuf

Wifi密码破解实战

声明:此文章仅供研究学习和技术交流,请勿用于破解他人 WIFI 密码!如果你有这些时间和精力,完全可以新买一坨无线路由器,何必蹭别人家的无线网!!!! 前言 网...

3309
来自专栏FreeBuf

Python渗透测试工具都有哪些?

如果你热爱漏洞研究、逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言。它包含大量实用的库和工具,本文会列举其中部分精华。 网络 Scapy, ...

2558
来自专栏DeveWork

总结:如何加速你的 WordPress 站点?

这篇文章英文原文发表于Smashing Magazine,感谢小影 的为我们带来的全文翻译。内容上讲解比较通俗易懂,非常适合初学者。 几个月前,我做了一个实验,...

2337
来自专栏张戈的专栏

修改WordPress默认评论表情(附:跳转到多说评论框的方法)

先吐槽一下:这两天博主折腾抢票火车票去了,博客也没怎么打理,最不爽的是折腾到最后才弄到一张无座的,唉,说多了都是泪啊!铁道部你技术不行可以招标啊,干嘛拿老百姓做...

3539

扫码关注云+社区