Web 系统架构

或许大家听到架构两个字,就觉得是一个非常高不可攀的事情,当然大系统有大系统的架构,小软件有小软件的架构,清晰良好的架构对软件系统的扩展性和性能都有好的帮助。

架构一个系统,就好比整理自己的书架一样,刚开始书少的时候甚至不需要书架,如果书越来越多,就需要对书进行分类,把类型相同的放到一起便于查找,当大到图书馆时,还需要对书进行编号,记录书的借还情况,还要定期整理和回收书。如何整理摆放、如何回收书籍、如何知道书现在的状态、如何快速的查找书,这都是整个架构需要考虑的问题。

当然好的架构是需要良好的抽象能力和项目经验,对于软件系统需要有一定的了解程度,还要对业务流程有一定了解,并且还设计的安全、体验甚至是团队协作的问题等等。

什么样的架构才是好的

好的架构需要达到如下目的:

  • 可靠性;
  • 安全性;
  • 可扩展性;
  • 可定制化;
  • 可伸缩;
  • 可维护性;
  • 客户体验;
  • 市场时机。

从哪儿入手?

架构是一个抽象的过程,不仅要从逻辑上还要从物理上去设计各个模块以及模块和模块之间的关系。我们可以先从服务器的职责开始,然后到各个系统,接下来到软件系统结构、代码结构,从全局到局部的去架构自己的系统。

部署结构

部署结构是对每个(或者每组)服务器的职责,以及它们之间的关系的规划,每一层都有它的功能,并且需要设计的高可用、容易扩展和良好的安全性。

通常互联网的部署结构如下图:


部署图
  • 负载均衡器:可以将网络请求分摊到多台服务器下,它提供了一种廉价的有透明的方法扩展服务器的带宽,具有很高的吞吐量,提供很好的灵活性和可靠性;
  • Nginx 分流:一个高性能的反向代理服务器,可以根据不同的路由规则将流浪分到不同的服务器,对整个系统的伸缩性和可扩展性有帮助;
  • 应用服务器:业务和服务核心,所有的业务以及服务都在应用服务器中,当然可定制、用户体验都体现在这儿;
  • Cache 服务器:缓存服务器,提高性能就靠它;
  • DataBase 服务器:所有的数据都由它来提供。

这些服务都是以集群的形式存在,最大程度的保证了系统的可用性

系统结构

系统结构在逻辑上反应出整个系统内部模块之间的关系,以及系统的输入和输出。通常系统结构会分很多层,每一层都由一系列的模块组成,并且每一层的模块会解决一类或者多类别的问题。层次越往下,抽象程度越高。通常最底层的模块都会演化成通用框架,中间层都会成为业务级框架,最外层是改动最多的业务层。以下是一个非常通用的网站系统结构:


系统结构
  • 业务层:纵向为业务层,每个模块将部署在不同的服务器中;
  • 公共层:公共层将解决业务的公共逻辑,有一些公共组件、公共工具、公共服务等等;
  • 框架层:框架层将解决存储、计算、通讯、UI 组件等问题,它是抽象得最为彻底的一层,离开当前业务也能使用;
  • 持续集成:解决一些重复性的编译、打包、部署等工作。

以上是一个非常通用的互联网网站系统架构,当然系统架构也是随着业务不断成长,不断完善的,它不是一个一层不变的东西。

代码结构

代码结构将进入具体的实施,代码结构源于系统结构,是系统结构的物理表现,Java 的很多 Maven 项目都是很多开发人员积累下来的代码结构,每个接口、类、配置、jsp页面如何摆放,其实它也于持续集成息息相关。以下是 WebApp 常用的代码结构:

|-.sass-cache
|-app
|  |-inc
|  |  |-metas.html
|  |  |-scripts.html
|  |  |-styles.html
|  |-lib
|  |-resources
|  |  |-icons
|  |  |-images
|  |-sass
|  |  |-components
|  |  |-app.scss
|  |  |-index.scss
|  |-scripts
|  |  |-components
|  |  |-controllers
|  |  |  |-index.js
|  |  |-app.js
|  |-views
|  |  |-components
|  |  |  |-header.html
|  |-index.html
|  |-version.json
|-bower_compoents
|-config
|-debug
|-deploy
|-dist
|-mode_modules
|-.gitignore
|-bower.json
|-Gruntfile.js
|-package.json

〖坚持的一俢〗

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容