走在架构师的大道上 Jack.Wang's home

Java, C++, linux c, C#.net 技术,软件架构,领域建模,IT 项目管理 Dict.CN 在线词典, 英语学习, 在线翻译

BlogJava 首页 新随笔 联系 聚合 管理
  195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks
 

Workflow 架构改进的猜想
                              ------ Jack 2008

   开发 workflow 已经是两年前的事了,那是我第一家公司的第一个有形产品,也是我主导开发的。在这里,真的要感谢以前的主管,使我从一个程序员爬到了技术主导的位置。

workflow 的项目背景是这样的:公司是个集团公司,主产业是制造和电子,开发人员有几百号,我们属于第二个事业部,用这个系统的有管理层,业务层大约上万人,每个月的数据量为 200多万笔,这个产品只是内销。就是在这样的背景下公司组了 20 个人的团队,在两年的时间开发了 workflow 系统, 它的开发语言是 Java, 总体架构是 Struts+Hibernate+Spring, J2EE 的部分,也有 J2SE 的部分,采用的标准是 WMfC.

当时数据库只有一个(Oracle 数据库),在单独的服务器上,配置很高,Web 服务器也是单独的高档机,还有就是客户端的 Application. 典型的三层架构。这样的系统能够有多大的吞吐量呢,性能如何能,可想而知。系统的性能没有禁得住应用的考验,于是我们反思了,从新考虑了系统架构。发现瓶颈在数据库,不过那时我就离职了,在公司整整呆了 2年零6个月。

 事隔这么久,只有猜想当时该如何如何。猜想 workflow 已经超负荷工作了,数据库占了大量 CPU 资源, 系统没有扩展性!猜想 workflow 以服务的方式加入了互联网,用户超过 1 个亿。

     从下面两方面改进系统。

1.       数据库层的架构改进:

l         第一个观念就是数据的读写分开,比如用完全一样的数据库,一个主数据库用来写,其他从数据库用来完成读操作,隔段时间将写数据库同步更新到从数据库中。

l         用户表是个大表,超过一个亿的资料,检索更新速度很慢。于是把用户表单独放在一个数据库服务器中,并且按照用户的所在省份水平分割成多个表,每个表就有 300 多万的数据,查询可控制在 1 秒之内。

l          表单流量很大,每月上千万笔。同样,表单表按照功能分割到多个数据库服务器中,每个数据库中再按照表单类别水平分割。这样在增加表单时,可达到服务器的线性扩展。

l         Oracle 在分布式方面做得很好,可以充分利用这个优势。

       l     数据库的缓存
2.       应用层的架构改进:

l         尽量做到动态网页静态化,比如在流程中跑的一个固化的表单不应该动态生成,而应该在提交表单时就做静态化。

l         使用缓存。有些网页,像首页,可以学习百度首页,缓存24小时。

l         镜像服务器

l         使用负载均衡技术,比如 DNS负载均衡,四层交换机负载技术等等很多现成的方案可遵循。

l         对系统局部模块优化。不要自己设计模式,现有的模式很多,可以参考。

l         引入中间件技术,对源有系统 SOA 的观念做集成和整合。比如整合 ERP, EIP,EPP等系统到 workflow中。

本人在系统架构方面经验比较少,在系统分析方面做得工作比较多,请 blog 朋友多多指教





本博客为学习交流用,凡未注明引用的均为本人作品,转载请注明出处,如有版权问题请及时通知。由于博客时间仓促,错误之处敬请谅解,有任何意见可给我留言,愿共同学习进步。
posted on 2008-03-27 10:30 Jack.Wang 阅读(1680) 评论(2)  编辑  收藏 所属分类: 架构师篇

Feedback

# re: 对 Workflow 架构改进的猜想[未登录] 2008-03-27 10:50 dragon
不错,经验值得我们去学习,希望继续发表好文章。  回复  更多评论
  

# re: 对 Workflow 架构改进的猜想 2008-03-28 14:48 wjywilliam
我也是个菜鸟,但是曾经在一个做workflow product的公司里面呆过一回,感觉作者DB部分应该是数据库的群集吧,不过数据量这么大,也确实厉害.
第二部分,我同意你说的第一条,对于一些固定的business的flow来说,没必要做dynamic form 即便dynamic genarate是你们product的一个功能,一个静态的定制form的运行速度绝对比dynamic form好很多  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: