`
lovecontry
  • 浏览: 1038578 次
文章分类
社区版块
存档分类
最新评论

关于实现(大)系统的一些小体会

 
阅读更多

突然发现自己很久没有更新博客了。主要的原因还是这阵子特别懒,没有努力学习新的东西,光忙着每天的日常任务。佛曰:这样不好,不好...


这些体会是基于一个这样的系统:它包含有十几个大小不一的模块,这些模块分布在不同的机器上,每个请求都需要这些模块的协作才能够完成。我不是太好意思称它为大系统或者分布式系统,因为它确实还差了那么点东西。但我也相信,任何一个真正的大系统/分布式系统也是从这么一个系统开始的。

对于这样一个系统,消息通信模块日志模块监控模块是非常基础却至关重要的几个模块:

消息通信模块是一切的基础。为了使得所有的模块尽可能的独立和解耦合,并且能够部署到不同的机器上,你应该让他们只使用某种基于网络协议的通信机制进行交互,而抛弃诸如管道,共享内存等方式。这种情况下, 一个统一的消息通信模块非常必要:它提供统一的协议去定义服务的接口;它应该支持多语言,因为你的模块实现的语言可能各不相同;它至少要提供同步的消息通信机制,比如RPC,最好能够有异步的方式;它的性能会对整个系统有很大的影响。

所以,google有Protocol Buffer,Facebook有Thrift(严格的说,Profocol Buffer只开放了多语言之间消息交互的格式和编解码)。当一个公司的系统越做越大以后,一定会出现这样的东西。

日志模块的重要是因为这样一个系统的调试非常的困难。每个模块接口的正确并不代表整个流程的正确,而且一旦出现问题,定位到问题的发生地点也并不容易,很多时候,唯一的办法就是分析日志。这样一个日志模块应该提供:统一的日志格式,所有的语言输出的日志是一致的;日志附带的信息应该足够丰富;能够将所有机器上所有模块的日志汇总,整理(最好还能实时整理);提供良好的接口能够对日志做查询(最好也能实时)。

我所了解的大部分这样的系统都是这么实现的:每台机器有一个日志模块的agent,它收集这台机器的所有模块的日志,同时有一个日志中心,将所有机器的日志汇总(或推或拉)。模块与agent之间,agent与中心之间的交互也应该都基于消息通信模块。

监控模块除了能够了解到整个系统的运行状况以外,它也应该能够用于系统的调试。因为监控模块对于运维人员和开发人员都很重要。最近一篇很火的文章《SteveY对Amazon和Google平台的长篇大论》中提到“...直到你的监控系统能够全面性地系统地检查所有的Services和数据,此时,监控系统就跟自动化测试QA没什么两样了,所以两者完美的统一了...”,我深以为然。

而且,监控系统应该早规划早做,不要等到整个系统完成之后才开始上马,而应该在系统第一次迭代的雏形完成后就开始开发(甚至可以更早),并且随着系统的开发而不断完善。在实现每个模块的时候,都应该要考虑这个模块应该提供怎样的监控接口,输出什么样的监控信息。同样,监控系统和模块之间的交互也应该基于消息通信模块。还有一个方案就是将监控模块完全构建于日志模块之上,所有的监控信息都写入到日志,对日志的统计分析就能够得到所有的监控信息。

最后,除了这三个组件,如果系统存在着大数据量的交互,那么一个提供统一接口的分布式存储模块也很有用。GFS,BigTable已经证明了这一点。



分享到:
评论

相关推荐

    《-操作系统》心得体会.doc

    《 操作系统》心得体会 在这个学期,通过学习《操作系统教程》这门课,我对计算机操作系统有了深刻的了解 。 计算机操作系统是铺设在计算机硬件上的多层系统软件,不仅增强了系统的功能,而 且还隐藏了对硬件操作的...

    javaweb学生宿舍管理系统设计与实现(含程序+论文+数据库)

    第六章 系统实现 14 6.1 系统功能实现 15 6.1 功能页面实现 15 6.1.1登陆模块实现 15 部分主要代码如下: 15 6.1.2注册页面模块实现 16 6.1.3学生页面模块实现 17 6.1.4房间信息页面模块实现 18 6.1.5来访信息页面...

    大作业—外卖点餐系统的实现

    自己实现的全套 外卖点餐系统 , 包含需求分析文档 ,以及绘制的UML类图 , 以及源代码,eclipse的项目文件夹,适合学习JAVA SE,体会面对对象编程的思想。

    高校学生成绩管理系统的设计与实现

    本论文叙述了我校学成绩管理的现状以及Visual basic6.0语言的概况。重点介绍了学生成绩管理系统的实现过程:包括系统分析、 系统调查、 数据流程分析、功能设计、 数据库...第五章关于本系统开发过程中的结论及体会。

    基于微信小程序的学生家校信息系统设计与实现.pdf

    基于微信小程序的学生家校信息系统设计与实现.pdf

    基于SpringBoot的中小型超市数据分析系统设计与实现计算机专业.pdf

    基于SpringBoot的中小型超市数据分析系统设计与实现计算机专业.pdf基于SpringBoot的中小型超市数据分析系统设计与实现计算机专业.pdf基于SpringBoot的中小型超市数据分析系统设计与实现计算机专业.pdf基于SpringBoot...

    人工智能-动物产生式系统代码.c

    这是一个简单的动物识别产生式系统教学实例,通过本实验让学生理解并体会知识库与控制系统相互独立的智能产生式系统与一般程序的区别,为以后设计并实现复杂的专家系统奠定基础。 二、实验内容 设计并实现具有15条...

    LTI系统时域分析与实现实验报告

    LTI系统时域分析与实现实验报告,掌握LTI连续时间系统和离散时间系统零状态响应的概念及 MATLAB 软件仿真实现方法,可运行

    员工工资管理系统(C++实现

    至少实现数据记录的增加、修改、删除、查询及相应结果的显示,查询应能按不同数据项进行。 (3)编制好程序后,设计若干测试用例,上机测试并通过所设计的程序系统。 (4)设计报告按格式要求书写。设计报告书正文的...

    基于Vue实现的关于医疗资源可视化系统源码+项目说明.zip

    基于Vue实现的关于医疗资源可视化系统源码+项目说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、...

    网上拍卖系统的设计与实现

    4系统具体实现 16 4.1 主模块执行流程 16 4.2 客户模块执行流程图 16 4.3 一般管理员模块图 17 4.4 高级管理员模块图 18 5功能测试 20 5.1 商品拍卖功能 20 5.2 商品竞购功能 20 5.3 查询拍卖情况功能 20 5.4 商品...

    Java项目之财务管理系统(源码 + 说明文档)

    Java项目之财务管理系统(源码 + 说明文档) 第三章 系统分析 5 ...第五章 系统功能实现 15 5.1管理员功能模块 15 5.2员工功能模块 20 第六章 系统测试 22 第七章 总结与心得体会 23 7.1总结 23 7.2心得体会 23

    Web校园二手交易系统的设计与实现

    适合写论文的同学! 随着信息技术的迅速发展与网络...最后结合系统开发阶段和调试阶段发现的问题,提出了系统需要完善的地方,总结了开发此系统所取得的经验和体会。 关键词:Web二手交易系统;javaEE;B/S结构;数据库

    从编目系统着手,实现图书馆业务管理自动化体会.pdf

    从编目系统着手,实现图书馆业务管理自动化体会.pdf

    基于微信小程序的书籍销售系统(源码 + 说明文档)

    基于微信小程序的书籍销售系统(源码 + 说明文档) 3 软件系统需求及可行性分析 9 3.1需求分析 9 3.2系统可行性分析 9 3.2.1技术可行性 9 3.2.2操作可行性 9 3.2.3经济可行性 10 3.3 系统现状分析 10 3.4 性能需求...

    操作系统课程设计——Linux二级文件系统设计

    使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、对程序的每一部分...

    matlab学习心得体会(精选3篇).doc

    matlab学习心得体会(精选3篇)matlab学习心得体会(精选3篇)首先我想说的是,matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c++了,VB和Delphi也接触过,我想版面(matlab版)大部分人也...

    基于TCP/IP协议下的聊天系统

    本系统实现一个简单的通讯系统。值得学习。

    高校成绩管理数据库系统的设计与实现.doc

    高校成绩管理数据库系统的设计与实现 ——2008年国际学院计算机专业"数据库技术课程设计"指南 1. 基本目的 以SQL SERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准SQL语 言的数据库实现,...

Global site tag (gtag.js) - Google Analytics