近来有些时间,就整理一些方案,架构方面的思路与总结。希望在思路上给一些人节省一些时间,中国IT业较为缺少的是系统化工程,思维方式及知识的总结与共享。
在我们平时做新的架构设计及方案预演时,我们最常用的思维方法是:
0.业务方案分析
1.根据业务方案,进行总体技术方案选择,总的系统架构
2.技术方案中用什么样的开源框架或组件进行整合预演。
3.调整优化方案。
下面我们浅淡一下一层一层地选择框架或组件。
0.基本业务类型,可以初步分析为ROA,或SOA类型系统,系统中是否需要企业级业务(主要对事务的关注)
1. 总体技术框架选择,SOA类系统,多选择商务型方案,面向服务的系统。ROA多为简单的面向资源的系统,这里不过多分析。
对于复杂的企业级商务方案,一般采用J2EE等解决方案,或者SSH/SSM等方案来处理。
2. 在预演过程中,基本考虑较有服务的系统,进行常规开源进行应对,
a, Web系统可以用成熟的框架,比如管理系统,可以采用,SSH等,也可采用PHP的一常规方案进行解决。这些方案中都有很好的开源产品,比如PHP的CMS(推荐Drupal,易深度定制,当然需要更多的学习成本),SNS,CRM等,
b,如果考虑一般非Web系统,可以考虑很多开源NIO或基于其上的RPC框架来对客户端提供服务,比如语言无关的ICE,Thrift,Protobuf,语言相关的(JAVA:MINA,Netty等)(C/C++:ACE,Boost等),
c, 而这些服务所基本的数据可以采用各种数据方案:包括数据库,文件存贮等,数据库又有各种解决方案,预演所常用的SQL数据库,可以选择MYSQL, ProgreSQL, 非关系型数据库(NoSQL)可以选择简单易用的MongoDB,Cassadra,Redis,HBase等但选择NoSQL数据库时,不能冒进,毕竟这些都是新型的数据库,在技术文档支持,稳定性上都存在不足,近来FourSquare,Facebook,等一些大公司采用这些数据库时都曾出现过各种严重的问题,文件存贮的提供也有很多,可以用简单易用的MongleFS, NFS, HDFS等,对于多媒体服务提供可以采用一些开源方案,视频方面可以选Red5(FLV),Live555等开源方案。图片方面,可以采用ImageMagicK等方案
d.移动客户端方案:一般客户端可以用各种开源的方案来解决,很成熟,比如QT,一般问题多集中的移动平台上。现在常见的跨平台移动方案,有一 些,古老些的,有ADL,PJ...等,现在针对Android,IOS,Windows8等有Phonegap,Titanium,XUI,JQueryMobile,Touch ....等.
3,调整与优化方案方面,可以很多事情可以做。
a,集群式服务之前,要考虑CDN,节省时间与成本,且目标可以预期。
b,服务集群方案优化,这里有太多集群方案可以选择,反向服务代理,AS式各种载方案。集群中少不了HA,LoadBalance,冗余热备等。数据库还有各种数据安全策略。
c,对各种服务提供的链路瓶颈进行优化。常见的有各环节上的cache.开源方案也有很多,Memcached. Redis,NCache.......