突然发现自己很久没有更新博客了。主要的原因还是这阵子特别懒,没有努力学习新的东西,光忙着每天的日常任务。佛曰:这样不好,不好...
这些体会是基于一个这样的系统:它包含有十几个大小不一的模块,这些模块分布在不同的机器上,每个请求都需要这些模块的协作才能够完成。我不是太好意思称它为大系统或者分布式系统,因为它确实还差了那么点东西。但我也相信,任何一个真正的大系统/分布式系统也是从这么一个系统开始的。
对于这样一个系统,消息通信模块,日志模块和监控模块是非常基础却至关重要的几个模块:
消息通信模块是一切的基础。为了使得所有的模块尽可能的独立和解耦合,并且能够部署到不同的机器上,你应该让他们只使用某种基于网络协议的通信机制进行交互,而抛弃诸如管道,共享内存等方式。这种情况下, 一个统一的消息通信模块非常必要:它提供统一的协议去定义服务的接口;它应该支持多语言,因为你的模块实现的语言可能各不相同;它至少要提供同步的消息通信机制,比如RPC,最好能够有异步的方式;它的性能会对整个系统有很大的影响。
所以,google有Protocol Buffer,Facebook有Thrift(严格的说,Profocol Buffer只开放了多语言之间消息交互的格式和编解码)。当一个公司的系统越做越大以后,一定会出现这样的东西。
日志模块的重要是因为这样一个系统的调试非常的困难。每个模块接口的正确并不代表整个流程的正确,而且一旦出现问题,定位到问题的发生地点也并不容易,很多时候,唯一的办法就是分析日志。这样一个日志模块应该提供:统一的日志格式,所有的语言输出的日志是一致的;日志附带的信息应该足够丰富;能够将所有机器上所有模块的日志汇总,整理(最好还能实时整理);提供良好的接口能够对日志做查询(最好也能实时)。
我所了解的大部分这样的系统都是这么实现的:每台机器有一个日志模块的agent,它收集这台机器的所有模块的日志,同时有一个日志中心,将所有机器的日志汇总(或推或拉)。模块与agent之间,agent与中心之间的交互也应该都基于消息通信模块。
监控模块除了能够了解到整个系统的运行状况以外,它也应该能够用于系统的调试。因为监控模块对于运维人员和开发人员都很重要。最近一篇很火的文章《SteveY对Amazon和Google平台的长篇大论》中提到“...直到你的监控系统能够全面性地系统地检查所有的Services和数据,此时,监控系统就跟自动化测试QA没什么两样了,所以两者完美的统一了...”,我深以为然。
而且,监控系统应该早规划早做,不要等到整个系统完成之后才开始上马,而应该在系统第一次迭代的雏形完成后就开始开发(甚至可以更早),并且随着系统的开发而不断完善。在实现每个模块的时候,都应该要考虑这个模块应该提供怎样的监控接口,输出什么样的监控信息。同样,监控系统和模块之间的交互也应该基于消息通信模块。还有一个方案就是将监控模块完全构建于日志模块之上,所有的监控信息都写入到日志,对日志的统计分析就能够得到所有的监控信息。
最后,除了这三个组件,如果系统存在着大数据量的交互,那么一个提供统一接口的分布式存储模块也很有用。GFS,BigTable已经证明了这一点。
分享到:
相关推荐
例如,网络服务、数据库管理系统、设备驱动等都需要操作系统提供底层的支持,以实现它们的功能。操作系统为这些应用程序提供了标准的接口和库,使得开发者无需关注底层细节,专注于应用的开发。 当操作系统出现故障...
Verilog 实现地铁系统售票 Verilog 是一种硬件描述语言,常用于数字电路的设计和验证。通过使用 Verilog,可以实现地铁系统售票的自动化设计。下面是 Verilog 实现地铁系统售票的知识点总结: 一、设计目标与原理...
标题和描述指出本文介绍了如何基于微信小程序设计并实现一个学生家校信息系统。该系统旨在通过互联网技术提高学生家长与教师之间的互动效率,利用微信小程序的便利性,实现跨平台的移动终端操作系统兼容性。通过对两...
第六章 系统实现 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来访信息页面...
该系统的人机交互界面采用的是 LCD 液晶显示器来显示相应的操作信息和一些提示等信息,旨在让员工体会到更加直观、美观和简单的操作流程,让本考勤系统使用更加广泛和方便。 该基于 Linux 的考勤系统解决了传统考勤...
在当今互联网迅速发展的时代,计算机应用已经深入到人们生活的...最后,在系统开发完成后,总结开发过程中的心得体会,包括遇到的问题、解决方案以及对未来改进的展望。 关键词:Java技术;招生管理系统;MySQL
我们需要使用 VC++6.0 编译环境和 Cisco Packet Tracer 仿真软件来实现系统的设计。 系统设计结果界面演示 在系统设计结果界面演示阶段,我们需要展示系统的设计结果,包括系统的界面演示和功能演示。 课程设计...
5. **实现最终系统代码的设计**:编写高质量的代码,实现系统的所有功能,确保系统的稳定运行。 #### 三、图书管理系统解决方案 ##### 3.1 方案内容 图书管理系统采用两层体系结构,即将用户界面与后台处理分离,...
### 关于嵌入式系统代码优化的一些体会 #### 引言 随着嵌入式系统的发展,为了满足实时性和多任务性的需求,C和C++语言因其高效性、灵活性及易于移植等特点,已成为嵌入式系统的主要编程语言。然而,在实际应用中...
程序需要实现系统的基本功能,如输入/输出操作、数据处理和存储等。 仿真结果 单片机最小系统的仿真结果是指使用protues软件对系统进行仿真的结果。仿真结果可以是系统的时序图、frequency域图或其他形式的结果。...
基于Vue实现的关于医疗资源可视化系统源码+项目说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、...
【网上图书销售系统的设计与实现】是一篇关于构建基于B/S结构的在线图书销售平台的毕业论文。该系统采用ASP编程语言,结合SQL SERVER 2000数据库管理系统,利用互联网技术来实现。论文详细阐述了系统设计的全过程,...
在系统总结体会方面,我们需要对系统的设计与实现进行总结,包括系统的优缺点、存在的问题、发展方向等。 校园新闻管理系统的设计与实现是一个复杂的系统开发项目,需要我们具备一定的编程语言基础、数据库知识和...
【高校学生成绩管理系统的设计与实现】 高校学生成绩管理系统是一种专门用于管理教育机构...同时,这样的系统也为未来进一步升级和扩展提供了可能,比如结合云计算技术实现远程访问,或利用大数据分析进行教学评估等。
6. **设计总结**:总结系统实现的过程及作者的体会。 综上所述,基于.NET的企业人事管理系统的设计与实现是一项重要的工作,旨在提高企业的管理效率,实现人力资源管理的现代化。通过对技术背景、系统目标和设计...
《制造执行系统(MES)实现原理与技术》对MES实现原理与技术做了系统、翔实的讲解。作者王爱民结合自己近十年的科研工作积累与企业应用体会,从系统、关键技术和应用三个方面介绍和论述了制造执行的基本概念、技术...
操作系统实验是计算机科学教育中的重要组成部分,它帮助学生理解和应用理论知识到实际编程中。本实验的主题是“用pthread实现矩阵相乘”,这是并行计算领域的一个经典问题,旨在利用多线程技术提高计算效率。pthread...
网上拍卖系统的设计与实现 随着互联网技术的飞速发展,网络已成为人们生活中不可或缺的一部分,网络购物成为一种新兴的消费模式,其中网上拍卖以其独特的价格竞争机制,吸引了大量用户的参与。网上拍卖系统的设计与...
这是一个简单的动物识别产生式系统教学实例,通过本实验让学生理解并体会知识库与控制系统相互独立的智能产生式系统与一般程序的区别,为以后设计并实现复杂的专家系统奠定基础。 二、实验内容 设计并实现具有15条...