文档章节

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

乱蓬头
 乱蓬头
发布于 2017/07/07 14:58
字数 818
阅读 16
收藏 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
高手问答第 146 期 — 分布式系统常用技术及案例分析

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

局长
2017/03/20
5.4K
63
【iOS】浅谈App开发iOS端的架构设计

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

浅浅青丘
01/24
0
0
面试过程中,应该保持怎样的心态?

面试时,最重要的是,保持放松的心态。 怀才就像怀孕,面试的过程中,你说自己多牛掰,但是你因为紧张发挥不出来自己的真实水平,那么……在面试官看来,就是没有,你就是不牛掰! 就像一场体...

明哥聊求职
06/11
0
0
利用saltstack的module和grains取得自定义信息

都有一段时间木有回来写博客了,最近在研究saltstack,利用saltstack的module和grains来取得我想要的信息,当然啦,也参考了一些大神的blog。 现在开始讲自定义模块吧 模块这个大家应该知道是...

kumikoda
2017/01/26
0
0
架构师与程序员的区别

Simon Brown是全球知名软件架构独立咨询师、讲师,创办了专门讨论软件架构问题的网站“编码架构”(CodingTheArchitecture.com)。他自称是写代码的软件架构师和明白架构的软件开发者。自200...

java大哥
2017/10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
27分钟前
1
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
40分钟前
1
0
DbForge Schema Compare for MySQL入门教程:如何连接到数据库

【dbForge Schema Compare for MySQL下载】 要创建连接: 1. 在“Connection” 工具栏上单击“New Connection”按钮 。 2. 在“Host” 框中输入主机名。 3. 在“Port” 框中输入端口信息。默...

Miss_Hello_World
42分钟前
1
0
公众号关联微信小程序

公众号关联小程序发送关联通知,对于推广小程序有着很大的帮助。所以问题来了,怎么做到在公众号关联小程序发送关联通知呢? 一:开发中遇到的问题 之前在开发过程中发现,公众号已经关联小程...

Code辉
55分钟前
1
0
并发编程基础之JMM学习摘要

一、JMM定义 Java内存模型即Java Memory Model(JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见(内存可见性),从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程...

狠一点
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部