Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144328
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 326
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-26 10:49
个人简介

记忆总是会慢慢褪去,所以让文字记住一切~

文章分类

全部博文(23)

文章存档

2017年(5)

2016年(3)

2015年(9)

2014年(6)

我的朋友

分类: 服务器与存储

2016-01-14 14:55:54


 

今天浏览网页看到一个问题, 大意是如何进行服务器程序的开发。于是停留片刻想想自己在工作中是如何去做的。除了在需求/设计之外,剩下的工作就是写代码了。设计和代码的好坏决定了一个服务器程序运行的可靠性。


1) Run once Or run as a daemon
  首先想到的是设计的程序的运行是一次性的还是长久性的:

  a) 如果是一次性,又会涉及是否是周期性的。
    周期性的程序可以通过cronjob来进行调度。一次性的程序需要关心的是否在运行的时候卡住。CPU high/ Memory high等,如果卡住了应该怎么办呢?

  b) 如果长久运行,那就是daemon程序,应避免僵尸的存在,同时需要考虑下面几个方面(一次性的程序也应尽量考虑)

2) Daemon

  程序需要长时间稳定运行:Stability(稳定性) + Performance(性能) + Maintainability(可维护性) + Security(安全性)

  a) 模型选择:单进程单线程/单进程多线程/多进程

    决定系统的最大使用,如邮件网关产品,会关心每秒钟能接受处理的邮件数目;

  b) 性能提高技术的使用

    如缓存技术、线程池等等;

  c) Monitor

    * 程序的运行过程也许会遇到未定义的情况,这是会引起crash,crash之后是否需要自动启动;

    * 对disk, cpu, memory, io的使用;如创建的temp file是不是每次都清理掉了,又或者对file descriptor的每次打开是否释放。

    * 在极端情况下,也许需要提供方法(如email)来通知管理者。

  d) 对配置的动态加载

    这就是常说的reload功能,对一个程序进行设置的更改是很正常的事情。如果不想间断服务程序的运行,就需要提供reload机制。

  e) 可维护性

    * 正常的Log功能;

    * 提供对系统资源以及程序运行状态的dump接口;

  f) 安全性

    安全性方面除了借助于我们系统的防火墙之外,希望我们开发的程序尽量避免对外打开过多的窗口,这样就避免被恶意的使用。如监听的端口是针对于特定对象还是所有等等;


好了,总结了这么多,希望开发的过程中不要忘记,欢迎指正和补充。算是做个笔记吧~~

 



阅读(1794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~