文档章节

如何设计一个牛掰的大型项目架构?

乱蓬头
 乱蓬头
发布于 2017/07/07 14:58
字数 818
阅读 17
收藏 0

摘要: 大型电商项目的服务端架构    我们以淘宝架构为例,了解下大型电商项目的服务端架构是怎样的,如图所示:     上面是一些安全体系系统,如数据安全体系、应用安全体系、前端安全体系等。 中间是业务运营服务系统,如会员服务、商品服务、店铺服务、交易服务等。

大型电商项目的服务端架构

  

 

我们以淘宝架构为例,了解下大型电商项目的服务端架构是怎样的,如图所示:

 

20170504103023347.jpg

 

  • 上面是一些安全体系系统,如数据安全体系、应用安全体系、前端安全体系等。

  • 中间是业务运营服务系统,如会员服务、商品服务、店铺服务、交易服务等。

  • 还有共享业务,如分布式数据层、数据分析服务、配置服务、数据搜索服务等。

  • 最下面是中间件服务,如MQS即队列服务,OCS即缓存服务等。

 

图中也有一些看不到,例如高可用的体现、实现双机房容灾和异地机房单元化部署,为淘宝业务提供稳定、高效和易于维护的基础架构支撑。

 

这是一个含金量非常高的架构,也是一个非常复杂而庞大的架构。当然这个架构不是一天两天演进而成,也不是一上来就设计并开发成这么高大上的。

 

这边我想说的是,小型公司要怎么做架构呢?对很多创业公司而言,很难在初期就预估到流量十倍、百倍以及千倍以后的网站架构会是一个怎样的状况。同时,如果系统初期就设计一个千万级并发的流量架构,也很难有公司可以支撑这个成本。

 

因此,一个大型服务系统都是从一步一步走过来的,在每个阶段,找到对应该阶段网站架构所面临的问题,然后在不断解决这些问题,在这个过程中整个架构会一直演进。

 

一、单服务器-俗称all in one

 

20170504103033825.jpg

 

从一个小网站说起。一台服务器也就足够了。文件服务器,数据库,还有应用都部署在一台机器,俗称ALL IN ONE。

 

随着我们用户越来越多,访问越来越大,硬盘、CPU、内存等都开始吃紧,一台服务器已经满足不了。这时看到下一步演进。

 

二、数据服务与应用服务分离

 

20170504103042626.jpg

 

我们将数据服务和应用服务分离,给应用服务器配置更好的CPU和内存,给数据服务器配置更好更大的硬盘。

 

分离之后提高一定的可用性,例如Files Server挂了,我们还是可以操作应用和数据库等。


随着访问QPS越来越高,降低接口访问时间,提高服务性能和并发,成为了我们下一个目标,同时发现有很多业务数据不需要每次都从数据库获取。

 

三、使用缓存

本文转载自:http://click.aliyun.com/m/25249/

共有 人打赏支持
乱蓬头
粉丝 0
博文 382
码字总数 2595
作品 0
私信 提问
中兴在北京发布了手机新品牌“nubia”,中文名“努比亚”

中兴在北京发布了手机新品牌“nubia”,中文名“努比亚”,中兴称该品牌将定位高端智能手机。然而一位内部人士向雷通社爆料称,中兴这个新品牌原来并 非命名nubia,而是叫nubai,中文名叫“牛...

铂金小猪
2012/11/02
844
9
哈,看了@ueharaai 的被喷

看了帖子,写的我认为比较客观嘛,看了回帖,我认为也很反应现实。不搞阶级划分,不搞等级分层。哈。我就不喷,回帖的有哪几类人。不过倒是有几个内容值得大家区分和讨论。 1、面向对象和面向...

中山野鬼
2014/07/29
724
12
高手问答第 146 期 — 分布式系统常用技术及案例分析

OSCHINA 本期高手问答(2017 年 3 月 21 日 — 3 月 27 日)我们请来了 @waylau (柳伟卫) 为大家解答关于分布式系统技术方面的问题。 @waylau 柳伟卫,多年软件开发管理及系统架构经验。负...

局长
2017/03/20
6K
63
卓越研发之路 | 锻造顶级后端系统

引言:从2018年11月起,在北京、大连、上海、南京、杭州、武汉、成都、西安、深圳、广州等地巡回举办的技术沙龙。活动旨在交流软件研发及互联网技术的实战经验,分享优秀的案例实践,通过平...

msup789
11/29
0
0
【iOS】浅谈App开发iOS端的架构设计

本文将要讲的架构设计可能没有那么真正的架构那么准确,可以理解为在创建App时项目的一个目录结构吧。 做iOS开发3年,其实深刻的架构设计感觉还谈不上,主要是现在接手了一套架构比较牛的代码...

浅浅青丘
01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

layer

Layui Layer在open弹出层中异步加载数据和form表单radio、checkbox、select不渲染,不可点击的解决办法 layer 实现弹窗提交信息 function confirmUpdateAward(i) { layer.open({ ...

mickelfeng
54分钟前
0
0
Spring boot中如何获取profiles环境

  实现ApplicationContextAware @Componentpublic class QiNiuPropertiesConfig implements ApplicationContextAware { /// 获取当前环境public String getActiveProfile() { ret......

writeademo
59分钟前
2
0
机器学习中的End-to-End到底是怎么回事?

简单讲就是,Input--->系统(这里指神经网络)--->Output(直接给出输入,NN神经网络就给出结果,一气喝成!!!) 借用一段对话:(http://dy.163.com/v2/article/detail/C3J6F2NJ0511AQHO....

火力全開
59分钟前
2
0
maven多个模块只编译并且只打包指定的模块

在多module的maven项目中,如果每次打包整个工程显得有些冗余和笨重。 命令:mvn clean package install -pl 模块的名称 -am

lifes77
今天
0
0
eosjs中文手册【2.0】

访问地址:eosjs 2.0 中文手册 - 汇智网

汇智网教程
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部