高手请进-----讨论一下一个7x24小时运行的服务程序的特征

budzhang 2003-07-02 02:16:33

一个需要7x24运行的服务程序应该具备哪些特点/属性?
...全文
30 点赞 收藏 27
写回复
27 条回复
widewave 2003年07月24日
mark
回复 点赞
大龙的技术博客 2003年07月17日
up
回复 点赞
大龙的技术博客 2003年07月16日
1.在实现系统时尽量使系统简单。
2.如果经过反复的测试,运行观察。我觉得无内存泄露是可以做到的。
3.对于系统升级问题,如果只有一个实例在运行,而且不能停的话,热插拔软硬件是必须实现的。如果使用集群,则不知道是否系统所有组件需要热插拔。反正怎样升级是必须考虑的。
回复 点赞
大龙的技术博客 2003年07月16日
我觉得跟死锁一样,可以从几个方面考虑:
1.异常的预防,避免
设计程序时仔细小心,并且进行调试,作完后做相应的测试。根据具体使用情况采用
相应的设计,例如:如果系统是类似WebServer那样的服务器需要访问数据库,特点是访问
数量大,而每个访问的时间短,在设计上采用数据库连接线程池,而不是针对每个请求都建立一个线程。
另外可能使用cluster这样的技术,从硬件,网络,到操作系统,到应用程序。
1台机器运行系统如果出现故障,则系统罢工的机率是100%,如果两台那么就是50%了。

2.异常的检测
在系统中嵌入检测系统状态的功能,就象一个传感器一样,能够收集系统状态数据.
(这一点的例子有:windows的性能监视器)。测量并且设置系统的各项参数的标准,如:内存使用情况等。管理组件根据指标判断系统健康状况。

3.异常的处理
如果系统检测到异常,要能够进行处理。比如:还是WebServer的例子,如果访问请求过多,那么系统如果能够检测到并且“知道”自己负担不了这么多请求,那么它首先就负担一部分,而对另外的一些请求返回系统忙等。但不至于死掉。当然这时候可以使用zLog系统发送eMail给管理员了:)。


对于系统运行时的管理方面,j2ee体系结构有响应的考虑。

现学现卖,以上的论述可能有点理想化(我现在是无法实现这样的系统)。我把这种系统叫做自适应系统(带自我检测,反馈,调节。不知道这个词用在这里对不对。是我自己从自动控制系统联想来的:) )
回复 点赞
见招拆招 2003年07月11日
还要有运行情况查询功能,以查看程序当前的运行状态
回复 点赞
budzhang 2003年07月09日
就这些内容吗?
回复 点赞
slimak 2003年07月09日
1.Easy to update your software compontent;
2.Remote control/mamage.
回复 点赞
Davice 2003年07月09日
up
回复 点赞
突击召唤师 2003年07月07日
对,一定要有极强的状态保存/灾难恢复功能,自动恢复。不然,重要的任务执行过程中出现异常,卡,损失惨重。
回复 点赞
budzhang 2003年07月07日
我个人的一个体会:计算机技术是一个细节技术。意思是:逻辑模型、抽象模型是非常重要的,但是细节更为重要。

所以请各位能在细节上进一步讨论和指点。
不过前提是:针对7x24小时的程序的细节。

比如:
1、调试方法
7x24小时的程序基本都是后台程序,各位喜爱的/使用的调试器是什么呢?
有什么特点?
比如:windows上,我喜欢softice,linux上我倾向于gdb(正在学习)。

2、日志系统
各位使用的日志系统是什么(自己做的或他人的)?有什么特色?

3、配置文件/系统
由于没有用户界面,往往(99.9%)需要一个配置文件。
各位选用的配置文件有什么特色?

4、设计原则
一般而言,在一个项目周期里开发出来的代码都会有问题。对于7x24小时
的程序我觉得应该在系统设计上特别考虑健壮性和稳定性。另外,7x24小时的
程序往往还有一个非常重要的指标------性能,而性能也主要是靠系统结构来
保证。
各位的设计原则是什么?

5、“异常”检测机制
给位对“错误”的防御措施是什么?

6、内存管理机制
本人曾经做过一个试验:
我自己写了一个链表,然后给之增加元素。以观察其性能。
然后又使用stl的链表,增加同样多的元素,进行对比。

测试结果:
在元素多到一定阶段时,stl的链表的性能远远高于我自己的程序。
其原因主要在于:“客户化”的内存管理。(我的程序没有自己管理内存)

7、多线程同步机制
7x24小时的程序基本都是多线程的,各位喜爱的同步机制是什么?

...
本人水平有限,还请各位补充和细化。

回复 点赞
yiminggw 2003年07月06日
水平太D
没看懂,up一下:)
回复 点赞
hookuy 2003年07月05日
仔细看过了
以后懂了再来回个帖子
回复 点赞
slaker 2003年07月04日
学习
回复 点赞
晨星 2003年07月03日
呵呵,budzhang()兄弟还特意把兄弟上次的回复拷贝过来了,刚刚有网友问,你是不是我的马甲?^_^
回复 点赞
budzhang 2003年07月03日
自己顶一下
回复 点赞
budzhang 2003年07月03日
我们可以各个层面都发挥一下嘛。
此时我已经感觉到基于windows的一个耽心:
windows如此复杂,层次、关联繁多。除了我自己的程序本身的问题外,我不知道还会受到其它什么因素的影响。对此熟悉者能否指点一下。
回复 点赞
waterflier 2003年07月03日
没做过 ,学习
回复 点赞
step_by_step 2003年07月03日
我是做电信行业的软件的。我们的系统,就是7×24小时运行的。
系统要能够无人职守。
在unix系统下,主要是要把这些服务都做成daemon,在后台运行,而且系统遇到错误的时候,不能够轻易退出,除非是被用户强制kill掉。
这些都是软件的特征,
对应于还有硬件的特征,比如主机的性能要好,要稳定,补丁都要打全,
系统要双机热备等
现说这么多吧
平时也没有怎么总结过。大家继续。。。
回复 点赞
budzhang 2003年07月03日
自己顶一下
回复 点赞
shinedreamnt 2003年07月02日
不能100%保证不死机,但要能保证死了能自动重起,能活起来,
主要是电子设备上用象看门狗watchdog之类的技术.
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告