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 条评论
登录 后参与评论

相关文章

来自专栏aCloudDeveloper

UNIX环境高级编程笔记之文件I/O

一、总结   在写之前,先唠几句,《UNIX环境高级编程》,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是“哇”这种很吃惊的表情。其实大概...

18710
来自专栏FreeBuf

如何利用日志来监控和限制PowerShell攻击活动

写在前面的话 近期,我一直在我客户的网络环境中分析PowerShell攻击,根据我的分析以及研究结果,我发现了几种方法来帮助研究人员检测潜在的PowerShel...

2235
来自专栏苦逼的码农

HTTP协议入门

HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。

562
来自专栏腾讯IVWEB团队的专栏

HTTP1.1与前端性能

HTTP协议是前端性能乃至安全中一个非常重要的话题,最近在看《web性能权威指南(High Performance Browser Networking)》,把...

3870
来自专栏大魏分享(微信公众号:david-share)

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

OpenShift的OVS网络组件有三种模式:ovs-subnet、ovs-multitenant、ovs-networkpolicy。

1345
来自专栏Linuxer的专栏

LEP 与负载均衡:以 PCDUINO 实际案例来使用 LEP 提高网络带宽

本案例演示 LEP 观察到负载不均衡情况下,PCDUINO 电路板 iperf 测试网络带宽发挥不出来,并实施负载均衡后,看到 PCDUINO 网络带宽重大提高...

690
来自专栏一名叫大蕉的程序员

合格的配置中心应有的素养No.76

最近在看配置中心的一些设计,好像基本都是五花八门,主要看的是还是携程的 Apollo 这个开源的配置中心项目。一直以来都觉得配置中心很重要,因为这对于灰度发布,...

1688
来自专栏互联网杂技

总结Web应用中常用的各种Cache

cache是提高应用性能重要的一个环节,写篇文章总结一下用过的各种对于动态内容的cache。 文章以Nginx,Rails,Mysql,Redis作为例子,换...

3424
来自专栏PHP技术

web缓存的作用和类型

前言&摘要 这段时间的工作内容主要是为一个客户端类型的产品增加文档在线存储和文档在线预览相关特性。由于测试的同事比较细心和专业,发现了项目实现中一些效 率低下的...

3295
来自专栏开源项目

C++ 网络编程初学者的开源项目 | 码云周刊第 41 期

码云项目推荐 互联网的兴起,让网络程序有了长足的发展,让我们可以通过网络编程在程序中实现计算机的通信。举个例子,当你使用浏览器访问码云时,你的计算机就和码云...

4526

扫描关注云+社区