首页 > 程序开发 > 软件开发 > 其他 >

系统架构设计

2017-01-25

系统架构设计:学习架构,要先认知行业的项目类型:(1、单应用项目。2、分布式应用项目)。

系统架构设计:学习架构,要先认知行业的项目类型:(1、单应用项目。2、分布式应用项目)。

一、单应用项目:

特征:

1、项目就一台服务器,根本不曾考虑分布式缓存,分布式部署,数据库负载(有可能有些单应用也用到了,比如试用阿里云RDS,但那不是我们搭建的服务,而是阿里云提供的现成的服务,所以可以说不算。真正的数据库负载也是有分布式集群的,也是有主从的。)。

2、只能应用一些中小型企业,有的时候连中型都算不上。

3、项目重业务实施,说白一点就是开发功能为主,不管性能不管优化,先实现再说。

只列三点吧,单应用项目现在在社会中的组成比重是很大的,往往都是在中小型企业,我们不能说这种设计不对,只能说存在就有道理。这种单应用项目开发、维护、部署、运维、硬件支持配置皆很低,所以很适合中小型企业,所以也就造就了很多单应用项目的存在。

二、分布式应用项目:

特征:

1、适用在中大型企业,往往适用在应用服务并发大,请求频繁快,数据量暴增的项目中。

2、一台机器根本支撑不住业务的项目的正常运作,项目部署多台机器。

3、项目规模大,代码拆分,配置多等等特征。

4、开发、上线、维护、运维、数据维护是常用的特征。

只列举几点了,这种项目的设计是否合理,就是真正考验架构师水平的,当然每个人架构都有他的考虑与现实问题,并不是所有的想法都会被公司所采纳,不考虑从公司层面出发,只从架构设计上,我觉得我们需要认识一些设计方面需要知道的一些解决方案。

架构设计需要考虑:我这里指的都是分布式应用项目的设计,单应用项目的设计直接排除了。

1、项目的权限安全是否认知了,这里是项目的大门,有句话叫做不怕贼偷就怕贼惦记。现在行业中常见的应用解决权限安全的有shiro 与Spring Security,如何使用建议先阅读下:

http://www.cnblogs.com/aoeiuv/p/5868128.html

2、项目的session会话管理要知道,很多分布式的项目是一定要对session会话要有认证的,比如一个淘宝网旗下有很多子项目,比如支付宝,聚划算,天天特价,阿里巴巴等等,不同的子项目由不同的部门管理,那就需要对单点登录有一定的认知。这里可以采用spring-session,先认识一个列子http://blog.csdn.net/you8626/article/details/46877211,例子不一定全部看明白,知道session跟分布式缓存搭配用,比如spring-session跟redis的搭配,知道redis清除key缓存应用全部能得到刷新,就知道单点登录的原理了,当然要先认识redis分布式缓存。

3、redis分布式缓存如何解决。缓存是什么,还记得我们单应用中的缓存常见的放到pagecontent,request,session,application中用于保存我们的数据吗,这就是缓存,只是这种缓存是由你的应用服务器提供(比如tomcat,jboss),那这个存储是有限的。那redis到底是什么,redis其实说白一点是一个k-value的数据库,属于nosql家族,但是现在很多开源上提供了很多分布式缓存方案。这里我提供cachecloud,它能帮助你搭建好redis,还提供了对redis的服务管控与监听服务。

如果还是对redis不明白的可以看看视频:http://my.tv.sohu.com/pl/9100280/82857544.shtml

4、dubbo与zookepper的认知,先说zookepper是什么,他是一种分布式应用程序协调服务,说白一点就是他能给你搭载分布式应用集群,他能给你搭建主从应用并管制你的应用;网络上面还有很多专家写的,但很多都是翻译过来的,比较难懂,我更喜欢按照自己的理解去解释。dubbo又是什么,说直接一点就是你的项目中引入dubbo支持后,就可以让你的应用跟zookepper保持一种联系,比如注册与订阅。那什么是注册,你那个应用需要做成集群管控,你就在哪个项目中把dubbo配置,把zookepper也配置好,这就是注册,这样你的接口或者服务就被zookepper管控了,很直白了吧。那什么是订阅,就是说你项目中需要用到哪个接口调用,你同样配置好,就能问zookepper调用,如果还是不懂,

看免费的,不用看完,看前面几篇理解

5、项目设计,最好建议要知道一个好的项目往往分很多应用调用,比如原生app调用,微信html5web项目的调用,pc-web项目的调用,其他的有业务往来的项目的调用,或者被第三方公司的调用等等这些,都可能会出现重用,如果项目设计不规范,会导致你很多地方做重复的事情。所以要重视项目的代码分模块进行,模块就会有公共基础模块,接口标准模块,接口实现模块,web模块等,要明白哪些地方该做成服务,哪些地方不需要,如果实在不行,都做成服务管控最好,免得以后回来重构业务。而这些服务都采用dubbo与zookepper做成注册与订阅的,这样这些服务就得到了服务管控,未来通过控制面板或者等其他的解决方案能对服务进行管理,这种就叫服务治理,是一种sop,可以理解为一种设计思想。不懂的百度,我不喜欢按照原文翻译。

6、知道dubbo的监控,知道zookepper的监控,redis的监控也是架构设计的人需要的,架构的设计者想要驾驭产品,没有这些监控你自己都不知道项目啥时候挂,所以这些很关键。

还有很多其他的东西,就先不全部列举了,我认为这些都是需要重视的,其他的很多人都懂。

后面有时间在细说这些如何学习跟理解。不过照我文章上面的一个个看懂,应该对架构就基本有一个认知了,可能就是实践了,实践可能需要你自己搭载cachecloud(redis包含了,不需要单独去安装,除非你的redis版本你想换掉),zookepper了,如果还需要监控,可以找其他的更好的监控管理软件。

其他说明:

如果你是刚刚加入到软件行业中的同志们,可以过一遍就好,不要当真,先把单应用项目功底打扎实了!

如果你是已经入行3年的同志们,这个文章开始变得有价值,关键是读完了没有。

如果你已经是项目经理或者架构的同志们,这文章及文章上的一些链接地址,相信一定帮助到你们了,希望你们能更好的驾驭分布式应用项目的设计。

相关文章
最新文章
热点推荐