购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

引言

我叫MOL,如果你是MOL的读者,那么一定知道“摩丝”了。MOL者,“摩尔”也。摩丝者,MOL的粉丝也。MOL在本书里将带领大家一起做一个属于自己的代码架构。

代码架构和架构是一样的吗?且看MOL如何分解。

一谈到架构(Architecture),大家一定会觉得它是一个非常“高大上”的东西,当然,大部分人都是这样宣传的。为了让大家有一个更好的感性认识(因为本书并不是讲架构的,所以只要有感性认识就可以了),MOL决定用一个简单的例子来告诉大家什么是架构。

一个架构师的例子

在2015年的时候,MOL主导了一个B2C(Business-To-Customer,商家对客户)网站,MOL在这个项目里面充当了非常多的角色,如产品经理、项目经理、架构师、DBA(数据库管理员)、程序员、QA(质量管理员)、Tester(测试员)……现在来看一下MOL作为架构师时所做的事情。

MOL作为架构师,是以大体需求为前提的,也就是说,我们在这里不去讲如何获取需求,因为这不是架构师份内的事。当MOL拿到需求以后,就可以进行架构了。架构大体上分为两部分:硬架构和软架构(这并不是标准的叫法,只是想让大家更好地理解架构)。

1.硬架构

顾名思义,硬架构就是关于硬件的架构。MOL根据目标用户量和业务要求,采购了3台服务器,分别作为文件服务器、数据库服务器和Web服务器(同时兼任缓存服务器),同时,建议用户在客户量增加到一定数量级以后,增加CDN(Content Delivery Network,内容分发网络)服务器,以加快访问速度。

OK,架构师的输出已经完成了。但大家以为架构师就买几台服务器就完事儿了吗?那就大错特错了。在买服务器的背后,MOL对需求进行了研究,分析了网站需要承担的平均访问量和网站的业务内容。这个网站的访问量并没有大到令人发指的地步,所以我们暂时不用考虑硬件负载均衡的问题,只需要提供一台Web服务器就可以了。这台Web服务器需要处理用户发来的请求并做出响应给用户。为了提高Web服务器的性能,我们将会在这台Web服务器上安装虚拟机,并用Nginx(一个HTTP服务器,类似于IIS)做软负载均衡。

由于本系统中需要保存大量的用户文件,如果把这些文件都放在Web服务器上,那会给软件负载均衡产生额外的负担,并且大量的文件很容易把一台服务器“撑爆”。所以,我们用一台服务器专门来保存文件信息,这台服务器就叫文件服务器。

数据库是一个项目中必不可少的一部分,数据库的本质其实就是文件和内容的组合,所以数据库的空间增长也是不可小觑的。而且数据库的操作,将会耗费大量宝贵的CPU和内存资源。所以我们将数据库专门放在一台服务器上,这台服务器就叫数据库服务器。

好,硬件资源采购完成了,我们要把它们组合到一起。Web服务器向网络公开,让用户可以访问,而文件服务器和数据库服务器只在局域网中,并不对外公开,这样可以在一定程序上保证安全性,而且也为客户节省了费用。Web服务器可以访问文件服务器和数据库服务器。

其实硬架构是非常复杂的,但本书不是主要讲硬架构,所以这里讲得非常简单,有兴趣的读者可以自行找“某度”或“某狗”进行搜索。

2.软架构

本系统将采用.NET平台下的C#语言进行开发,采用SQL Server数据库,使用微软的Cache缓存配合Redis来做。前台将以3种终端展示,分别是PC、手机、平板。所以前端将会使用HTML 5来做。Android手机APP使用Java语言来开发,iOS平台上的APP暂时不做。

同样的,软架构也只是让大家看到了输出,并没有讲为什么这样做,因为这也不是本书的重点。

上面粗略地讲了一下什么是架构。下面来具体看一下代码架构。废话不多说,直接来看图1和图2。

图1 正常的代码架构

图2 不普通、非文艺的代码架构

图1是一个常见的代码架构,而图2可能是新手程序员最喜欢的“代码结构”。代码架构的目的是让不同的代码块去干不同的事,最后再把这些代码块整合在一起,组成一个项目。这是本书要讲的内容。

可以看到,代码架构和软件架构基本上不属于同一个层次的元素。但不可否认的是,代码架构是一个程序员应该具备的技能,也是通往架构师的必经之路。

PS:各位读者可能对用户和客户这两个概念理解有误,这里统一一下,用户(User)是指使用系统的人,客户(Customer)是指要求我们做这个系统并且支付开发费用的人。

背景及人物介绍

本书中,我们将延续MOL活泼幽默的风格。为了剧情的需要,书中将会出现5位主人公。

MOL:姑且称之为老鸟吧,从事代码工作多年,在公司中主要负责项目管理和代码架构。

邓总:公司老大,身材消瘦如马云,有一双深邃的眼睛。虽然是公司的老大,但在本书中出现的次数并不多。

刘朋:新入职员工,因为名字中的“朋”字“占地”面积很大,所以大家一般都会把“朋”字分开来念,所以他有另一个名字“月月”,性格比较幽默。

岳鹏辉:新入职员工,长得比较帅气(已有女朋友)。

李冲冲:新入职员工,打得一手好乒乓球。

这几位主人公将会在本书中出现,他们可能是说相声的,可能是打酱油的,也可能是回家跪搓衣板的。但是他们更重要的作用是构造一个个生动的故事,在这些故事里面,大家可以看到一个真正的项目是如何搭建的。

故事来源于生活,却不高于生活,这里的人是真实的,故事是真实的,当然,最重要的是,项目是真实的,知识也是真实的。MOL尽量用最接地气的语言,最平实的故事,来讲述一个个“高大上”的知识和技术。

我们的目标

我们经常会听到这样的话:“加班不是目的,目的是不加班”。这样的话让人无比窝火,但又无比正确。我们还会听到这样的话:“我这样严厉地要求你,是为了让你成长得更快”。你有理由反驳吗?其实,换一种方式,我们可以快乐地成长。这也是MOL带团队的宗旨,也是本书的目的。MOL要让你快乐地看完这本书,最后发出的感慨一定是:“代码架构其实挺简单!”

好了,我们要开始了! 4SeL0ODXXQntrEXw15NtrKQkvHXIRe4o7s66vU8pwPQ9DARR3FDosyx/8mODaCFu

点击中间区域
呼出菜单
上一章
目录
下一章
×