新闻动态
    技术中心
    技术中心
    当前位置:ag8亚游集团自控 >> 服务支持 >> 技术中心 >> 浏览文章
    分布式软件系统随想
    作者:佚名 日期:2011年12月13日 来源:本站原创 浏览:

    内容导读:
        分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。
        对于这样一个系统,消息通信模块,日志模块和监控模块是非常基础却至关重要的几个模块:
    消息通信模块是一切的基础。为了使得所有的模块尽可能的独立和解耦合,并且能够部署到不同的机器上,你应该让他们只使用某种基于网络协议的通信机制进行交互,而抛弃诸如管道,共享内存等方式。这种情况下, 一个统一的消息通信模块非常必要:它提供统一的协议去定义服务的接口;它应该支持多语言,因为你的模块实现的语言可能各不相同;它至少要提供同步的消息通信机制,比如RPC,最好能够有异步的方式;它的性能会对整个系统有很大的影响。
        所以,google有Protocol Buffer,Facebook有Thrift(严格的说,Profocol Buffer只开放了多语言之间消息交互的格式和编解码)。当一个公司的系统越做越大以后,一定会出现这样的东西。
        日志模块的重要是因为这样一个系统的调试非常的困难。每个模块接口的正确并不代表整个流程的正确,而且一旦出现问题,定位到问题的发生地点也并不容易,很多时候,唯一的办法就是分析日志。这样一个日志模块应该提供:统一的日志格式,所有的语言输出的日志是一致的;日志附带的信息应该足够丰富;能够将所有机器上所有模块的日志汇总,整理(最好还能实时整理);提供良好的接口能够对日志做查询(最好也能实时)。
        我所了解的大部分这样的系统都是这么实现的:每台机器有一个日志模块的agent,它收集这台机器的所有模块的日志,同时有一个日志中心,将所有机器的日志汇总(或推或拉)。模块与agent之间,agent与中心之间的交互也应该都基于消息通信模块。
        监控模块除了能够了解到整个系统的运行状况以外,它也应该能够用于系统的调试。因为监控模块对于运维人员和开发人员都很重要。(山西ag8亚游集团技术部小靳)
    上一篇文章:对可视化综采工作面的视角调整的改进意见 下一篇文章:365在线(现)自动化技术服务
    相关链接
    发表评论
    用户评论
    版权所有 山西ag8亚游集团自控股份有限公司 晋ICP备09004627号     
    官方微信
    新浪官方微博
    腾讯官方微博