系统架构三日谈(一)

原创 2007年10月10日 11:21:00

 

 

如何架构一个系统?比较常见的是将系统进行分层设计,在C语言中,函数指针是用来实现软件分层的重要手段.

一个大型软件是一定要分层写的,一是便于项目管理中人力的分配,底层用少量水平高的人写,越往上层人数越多,到最上层编程人员可能只需要写回调函数就行了;二是分层后,软件的bug被隔离开,出现一个bug,不至于在整个系统中到处找,到处修改,分层后只需先定位是哪层,再修改相应函数.

一般所说的软件分层是从模块(或函数)上分层(目的是便于编写和调试),上层可直接调用下层函数;而操作系统(OS)与应用的分层是真正的分层,即应用只能通过陷入(中断)得到OS的服务,应用是不能直接调用OS的内核函数的.

分层的特点是:上层调用下层,但不能调用下下层,即不能跨层调用;如何分层,即定义某层所应提供的服务是一个难点。一旦定义好,就要为这层精心设计几个调用点(即调用入口),上层只能通过这几个入口来请求服务.如果写成上层调用下下层,甚至最底层,这会导致修改一个地方需要改很多地方,且相互牵制,这个工作量及复杂度令人难以忍受,最后的结局是:不是系统崩溃,就是人崩溃.

举几个例子:

  1. 金融软件系统(后台)通常分为两层:平台层,应用层。平台层负责解决通迅和数据库接口,应用层负责业务流程。平台层recv营业网点send来的数据后,将其存入共享内存区,然后fork一个应用;应用从共享内存区读取数据,处理业务(可能调用平台层提供的数据库API),将结果send给平台层,平台层再将结果send回营业网点.
  2. CORBA是一种中间件技术规范.如果想用CORBA来架构系统,我们除了要购买厂商的CORBA产品(相当于平台层)之外,还要程序员编写相应的CORBA应用程序,这些应用程序其实就是回调函数,供平台调用(Dispatch).在DOS时代,程序员还能从main()开始控制电脑,随着软件(特别是分布式OS)的发展,中间件的流行,以后大多数据程序员都只能写点回调函数了,完整地控制一台计算机的机会是越来越少了,实际上我们现在所写的程序本身也可以理解成是OS的回调.
  3. Web服务器
    构造一个web server也需要分层,最简单的模型可分为三层
    第一层:管理Socket.
    第二层:处理HTTP协议,这一层通常被称为引擎(用于启动第三层).在这层中server要能根据HTTP GET/POST请求, 定位相应的页面,并根据页面中的JSP关键字进入第三层.
    第三层:执行脚本(java程序),将结果返回第二层.
    一般程序员要做的事就是在页面中嵌入JSP,写java程序(我习惯称其为脚本).

关于实现Web Server的框架细节,嵌入式Web Server与Apache之比较可单独写一篇文章,我希望自己有时间 :-)

如何架构一个系统是我一直比较感兴趣的话题,希望能互相交流.
 

Android面试题3之描述下Android的系统架构

描述下Android的系统架构: Android系统从下往上分为Linux内核层(linux kerner),运行库(runtime library),应用程序框架层,应用程序层 linuxke...
  • howlaa
  • howlaa
  • 2015年07月07日 10:40
  • 3848

(转)朱松纯:浅谈人工智能:现状、任务、构架与统一

“人工智能”这个名词在沉寂了近30年之后,最近两年“咸鱼翻身”,成为了科技公司公关的战场、网络媒体吸睛的风口,随后受到政府的重视和投资界的追捧。于是,新闻发布会、高峰论坛接踵而来,政府战略规划出台,各...
  • wowotuo
  • wowotuo
  • 2017年11月02日 21:40
  • 3470

浅谈人工智能:现状、任务、构架与统一 | 正本清源

朱松纯   加州大学洛杉矶分校UCLA 统计学和计算机科学教授 视觉、认知、学习与自主机器人中心主任 VCLA@UCLA   2017年11月02日 刊登于 《视觉求索》微信公众号 目...
  • x32sky
  • x32sky
  • 2017年11月03日 17:37
  • 1359

从限流削峰到性能优化,谈1号店抽奖系统架构实践

这篇文章算是我在工作的第一个年头里关于架构方面的收获与思考的一篇总结性的文章吧,感觉还是有些深度的,所以尝试投稿到InfoQ上,果真被收录了,很开心。从7月底开始动笔,中间因为各种偷懒和一些难以预料的...
  • yelin042
  • yelin042
  • 2017年11月15日 23:18
  • 80

浅谈对于企业级系统架构的理解

导读:本文针对企业系统架构作出分析,发表独特见解,系统架构并不是一层不变的,没有最好的架构,只有更好的架构,要从实际情况去考虑,从项目中多思考系统的扩展性。 以下是文章内容: 在我们刚开始学习架构...
  • wanghangzhou1984
  • wanghangzhou1984
  • 2011年08月25日 07:54
  • 7159

浅谈对于企业级系统架构的理解

来源:http://blog.csdn.net/wanghangzhou1984/article/details/6716992#comments 导读:本文针对企业系统架构作出分析,发表独特见解,...
  • u013059432
  • u013059432
  • 2017年06月30日 17:08
  • 230

浅谈大型网站动态应用系统架构

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、...
  • happyduoduo1
  • happyduoduo1
  • 2016年06月29日 13:26
  • 388

谈一谈CloudBlog的系统架构

最近十几天在做一个博客系统,因为域名服务器都闲置已久,于是乎决定合理利用起来,做个网站。系统整体架构采用分布式的系统,也是当今很多企业都在用的,基于restful风格的一套系统。从父工程开始blog-...
  • sdksdk0
  • sdksdk0
  • 2016年12月14日 11:03
  • 2714

浅谈计算机系统架构

读完本章节,你将收获以下几点 1. 计算机硬件架构及其主要硬件的功能描述 2. 推荐给全栈开发者的硬件 3. 计算机软件架构及其常用软件...
  • Tony_CTO
  • Tony_CTO
  • 2017年12月17日 16:01
  • 1005

浅谈大型网站动态应用系统架构

引用:http://webdev.csdn.net/?p=798 动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、...
  • huangrong520raoting
  • huangrong520raoting
  • 2011年07月03日 00:21
  • 340
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统架构三日谈(一)
举报原因:
原因补充:

(最多只允许输入30个字)