`
rstevens
  • 浏览: 95685 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一套分布式系统的开发总结(草稿)

阅读更多
一套分布式系统的开发总结 (草稿)

一、“分布式系统”的定义:
分布式系统到底如何定义,我不了解;
我这里的“分布式系统”,指的是具有如下特点的系统:

1、 有多种业务逻辑组成
2、 业务之间需要通信
3、 业务有分布式的需求。

二、 分布式系统的需求:
1、 分布式
1)、 业务逻辑可部署在多台物理机器上
2)、 可扩展性: 当性能等遇到瓶颈后,可通过扩展来解决
3)、 可重新部署

2、 业务逻辑的控制:
1)、 启动、停止
2)、 重启

3、 业务状态监控:
1)、 运行状态
2)、 资源占用情况

4、 业务逻辑更新
1)、 程序升级
2)、 配置修改
3)、 模块升级

5、 节点机器监控

6、 节点机器维护

我把这样一台系统,叫做“分布式系统”,而Matrix 系统,就是为了能用一种集中、简便的方式,来满足这种系统的需求;
它既是一套运维平台,也是一套运行平台。

三、 Matrix 系统如何满足如上需求:
为了能满足如上需求,Matrix 进行了如下抽象:

1、 用“云”来描述业务逻辑
任何业务逻辑,都是一种云
云有唯一的 namespace
云之间可进行通信




2、 “云”由一组虚节点组成
虚节点具有相同的逻辑
虚节点可部署到不同的物理机器上
通过扩展虚节点数量,并将之部署到不同的物理机器上,从而满足“分布式”、“冗余”、“扩展”等需求。
虚节点最终落实为物理机器上的一个进程。




3、 将运行虚节点所需要的素材抽象为“资源”
要运行一个虚节点,通常需要准备如下素材:
1)、 容器的可执行程序
2)、 应用逻辑的动态库、脚本、配置文件
3)、 应用逻辑所需要的模块
4)、 依赖的其它库、可执行程序、脚本

把这些素材抽象为资源,并分成不同类别。
资源对应着“资源文件”
在描述一个虚节点的时候,需要指定它用到哪些资源
要运行一个虚节点,首先要获取所需要的资源文件
当资源文件更新后,可能需要重新启动虚节点。

这样,一个虚节点需要多种资源,
在运行虚节点之前,所需要的资源文件应该就绪。
如果某种资源更新后,应及时获取,并根据需要重启虚节点。


4、 通过 Agent 进程来实现分布式管理。
资源的获取、虚节点的管理,等等,都需要在屋里机器上进行。
因此,在每台物理机器上,必须部署一个 Agent 进程,作为中央控制服务的在物理机器上代言人。
Agent 进程接受中央控制服务的指令,并执行之,这些指令包括:
1)、 资源获取
2)、 虚节点控制
3)、 虚节点监控
4)、 其它

5、 让虚节点跑在相同的容器中
虚节点,最终变现为跑在某台物理机器上的服务进程
为了能对这些进程进行统一管理,我们让虚节点,跑在相同的容器中,而具体业务逻辑通过动态库来提供。
容器,提供了管理和通信等接口,可接收外部的控制,并可与其它虚节点通信。
而业务逻辑,则由动态库来提供
业务逻辑课用不同的语言开发,例如 C, C++, Java, Python


有了“中央控制服务”、"Agent进程”、“物理机器”、“云”、“虚节点”、“资源”、“统一的虚节点容器”等概念,一个分布式管理平台就具备了雏形。

1、 Agent 进程运行在“物理机器”上,接收“中央控制服务”的指令
2、 用“云”来描述业务逻辑
3、 “云”由相同逻辑的“虚节点”组成
4、 “虚节点”需要不同的“资源”
5、 “虚节点”部署到“物理机器”上,表现为一个进程
6、 “虚节点”由“统一的虚节点容器” 加上“具体的业务逻辑”等资源组成
7、 "Agent 进程”接受“中央控制服务”的质量,获取资源文件,控制“虚节点”的运行。


四、 逻辑云和物理云
分布式系统,要求业务之间需要通信,

1、 将云分为“逻辑云”和“物理云”两个层次
2、 逻辑云在系统中具有唯一的名称,且不能改变
3、 通过名称来访问“逻辑云”,由于名称不变,
4、 “物理云”描述云的虚节点的组成,“物理云”属于某个逻辑云,但名称可变化
5、 “逻辑云”与“物理云”之间需要建立“绑定关系”。

五、 云之间的通信
1、 通过“路由表”来描述一个物理云中的虚节点的分布
2、 当需要访问某个云的时候,首先获取路由表,然后根据访问策略,选择虚节点,建立连接,并进行通信。
3、 当“物理云”发生变化后,路由表需要及时更新
4、 采用亚马逊 paper 中的 DHT 环

  • 大小: 57.7 KB
  • 大小: 56.8 KB
  • 大小: 70.8 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    数据仓库知识总结草稿备份

    数据仓库知识总结草稿备份

    EOS快速开发平台项目开发规范草稿.doc

    EOS快速开发平台项目开发规范草稿.doc

    基于C#开发的在线教学管理系统草稿箱功能设计源码

    本项目是一款采用C#语言开发的在线教学管理系统,其中草稿箱功能为核心特色。项目源码总计包含178个文件,具体包括147个C#源代码文件、8个HTTP相关文件、7个图片文件、4个项目文件、3个JSON文件、2个Markdown文件、2...

    Yii 2.0 开发记录草稿本

    总之,Yii 2.0开发文档生成的pdf草稿本是一份针对使用Yii 2.0框架进行Web开发的初级开发者入门指南。它不仅介绍了开发流程,还涉及到开发实践中的各种细节,包括工具使用、代码规范、性能测试等。通过本书的学习,...

    一套完整的asp.net开发的网校程序

    一套完整的asp.net开发的网校程序 系统模块 主要功能模块 系统管理 模块管理 角色管理 系统设置 批量授权管理 在线用户管理 版本升级说明 组织结构管理 部门管理 岗位管理 用户管理 门户管理 发布首页 公告管理 ...

    saas中分布式DB存储问题--草稿版

    在SaaS环境下,由于用户量大且数据量巨大,单个数据库难以承载,因此采用分布式数据库来分散负载,提高系统性能和可靠性。 1. 数据分片(Sharding):分布式数据库的核心之一是数据分片,即将大量数据分割成较小的...

    电子邮件系统开发 电子邮件系统开发

    电子邮件系统开发是一个复杂而关键的过程,它涉及到网络通信、数据安全、用户界面设计等多个方面的技术。在本讨论中,我们将深入探讨电子邮件系统的核心组件、工作原理以及开发过程中的关键技术。 一、电子邮件系统...

    页面草稿图设计器 开发项目时设计页面

    6. **兼容性**:页面草稿图设计器往往兼容主流操作系统,如Windows和MacOS,满足不同用户的需求。 7. **导入导出功能**:支持导入其他设计工具(如Sketch、Figma等)的文件,方便跨平台工作,同时也可以导出为矢量...

    WordPressc,发布到后台草稿箱

    在WordPress CMS(内容管理系统)中,草稿箱功能是一个非常重要的组成部分,它允许用户保存未完成的文章或页面以便后续编辑和发布。这个标题"WordPress,发布到后台草稿箱"和描述提到了如何利用工具或者插件来优化这...

    Linux进程总结草稿[定义].pdf

    在Linux操作系统中,进程是系统资源分配的基本单位,它代表了一个独立的执行单元。这篇文档主要总结了Linux进程的构成和80x86架构CPU对进程切换的支持机制。 1.1 进程的构成 一个进程通常由以下几个部分组成: 1. ...

    c#草稿纸(记事本)

    《C#草稿纸(记事本):基础功能实现详解》 在计算机软件开发领域,C#是一种广泛使用的编程语言,尤其在Windows平台上的应用开发中占据着重要地位。"C#草稿纸"是一个基于C#实现的简易记事本程序,它集成了日常文本...

    Android studio 草稿箱

    综上所述,"Android studio 草稿箱"涉及到的内容广泛,涵盖了数据存储、界面设计、数据库操作、用户交互等多个方面,开发者需要综合运用Android开发技术,为用户提供高效、可靠的草稿管理功能。在实现过程中,合理的...

    剪映历史草稿找回.rar

    首先剪映会自动储存草稿,导致草稿的历史版本被自动覆盖 比如上次我全选了所有视频轨道 一个Ctrl+X下去,内存不够,剪映崩了再打开一看,轨道全被剪掉了,还粘贴不上 重点是Ctrl+Z无效,草稿也被覆盖 那么如何找回...

    使用Python创建快速创建剪映草稿轨道,自动生成视频

    自动生成草稿后,就可以自动剪辑了。 1. 添加一个媒体到轨道顺序 `草稿媒体库` -> `内容媒体库`-> `轨道片段` 2. `add_media_to_track` 会识别媒体类型,加入到对应轨道。 3. 当没有视频轨道时,创建音频轨道会先...

    Android案例:短信草稿箱。利用数据存储SharedPreferences,实现保存、读取短信

    总结来说,本案例通过SharedPreferences展示了在Android中如何实现一个简单的短信草稿箱功能,强调了数据存储在应用程序中的重要性,并提供了处理轻量级数据存储的一种方法。开发者可以根据自己的需求进行扩展,例如...

    草稿纸软件5.1版本

    草稿纸实现PC机的草稿纸功能,并帮助您弄漂亮汉字 草稿纸实现在视图区域加载图片,并能对图片进行基本操作(旋转拉伸) 草稿纸实现在视图区域中自绘各种图形,并对透明线条以及填充色进行支持 草稿纸实现在视图区域...

    word二次开发

    C# 是一种流行的编程语言,VSTO(Visual Studio Tools for Office)是 Microsoft 提供的一套开发工具,用于开发 Office 应用程序。在本文中,我们将使用 C# 和 VSTO 来开发一个 Word 二次开发插件,实现一个类似 ...

    草稿纸软件5.1.0.2版本

    草稿纸软件实现PC端草稿纸功能,并帮助用户弄漂亮汉字。 草稿纸软件实现在视图区域加载图片,并能对图片进行基本操作(旋转拉伸) 草稿纸软件实现在视图区域中自绘各种图形,并对透明线条以及填充色进行支持 草稿纸...

    草稿自动保存挂件-在线HTML编辑器开发的一个插件

    草稿自动保存挂件(AJAX & XML) STAR Plug System是针对在线HTML编辑器开发的一个插件,目的是方便文章编辑人员录入资料,防止在录入过程中由于外界原因造成的文字丢失而耽误工作。该插件具有如下特点:增加多项目...

Global site tag (gtag.js) - Google Analytics