淘宝交易系统用啥语言和架构去设计,又有多少行程式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了淘宝交易系统用啥语言和架构去设计,又有多少行程式相关的知识,希望对你有一定的参考价值。

淘宝架构框架一、个人网站2003年4月7日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴。他们去了一个神秘的据点——湖畔花园小区的一套未装修的房子里,房子的主人是马云。这伙人刚进去的时候,马云给他们布置了一个任务,就是在最短的时间内做出一个个人对个人(C2C)的商品交易的网站。现在出一个问题考考读者,看你适不适合做淘宝的创业团队。亲,要是让你来做,你怎么做?在说出这个答案之前,容我先卖个关子,介绍一下这个创业团队的成员:三个开发工程师(虚竹、三丰、多隆)、一个UED(二当家)、三个运营(小宝、阿珂、破天)、一个经理(财神)、还有就是马云和他的秘书。当时对整个项目组来说压力最大的就是时间,怎么在最短的时间内把一个从来就没有的网站从零开始建立起来?了解淘宝历史的人知道淘宝是在2003年5月10日上线的,这之间只有一个月。要是你在这个团队里,你怎么做?我们的答案就是:买一个来。买一个网站显然比做一个网站要省事一些,但是他们的梦想可不是做一个小网站而已,要做大,就不是随便买个就行的,要有比较低的维护成本,要能够方便的扩展和二次开发。那接下来就是第二个问题:买一个什么样的网站?答案是:轻量一点的,简单一点的,于是买了这样一个架构的网站:LAMP(Linux+Apache+mysql+php)。这个直到现在还是一个很常用的网站架构模型。这种架构的优点是:无需编译,发布快速,PHP功能强大,能做从页面渲染到数据访问所有的事情,而且用到的技术都是开源的,免费。当时我们是从一个美国人那里买来的一个网站系统,这个系统的名字叫做PHPAuction(他们的官方网站),这个框架易于扩展,方便组件化开发,它的页面模板支持JSP和Velocity等、持久层支持iBATIS和Hibernate等、控制层可以用EJB和Spring(Spring是后来才有的)。项目组选择了这个强大的框架,这个框架如果当时开源了,也许就没有WebWork和Struts2什么事了。另外,当时Sun在全世界大力推广他们的EJB,虽然淘宝的架构师认为这个东东用不到,但他们还是极力坚持。在经历了很多次的技术讨论、争论和争吵之后,这个系统的架构就变成了下图的样子:淘宝架构框架Java应用服务器是Weblogic,MVC框架是WebX、控制层用了EJB、持久层是iBATIS,另外为了缓解数据库的压力,商品查询和店铺查询放在搜索引擎上面。这个架构图是不是好看了一点了,亲?这帮Sun的工程师开发完淘宝的网站之后,又做了一个很牛的网站,叫“支付宝”。其实在任何时候,开发语言本身都不是系统的瓶颈,业务带来的压力的是压到了数据和存储上。上面一篇也说到,MySQL撑不住了之后换Oracle,Oracle的存储一开始在本机上,后来在NAS上,NAS撑不住了用EMC的SAN存储,再然后Oracle的RAC撑不住了,数据的存储方面就不得不考虑使用小型机了。在2004年的夏天,DBA七公、测试工程师郭芙和架构师行癫,踏上了去北京测试小型机的道路。他们带着小型机回来的时候,我们像欢迎领袖一样的欢迎他们,因为那个是我们最值钱的设备了,价格表上的数字吓死人。小型机买回来之后我们争相合影,然后Oracle就跑在了小型机上,存储方面从EMC低端cx存储到Sunoemhds高端存储,再到EMCdmx高端存储,一级一级的往上跳。到现在为止,我们已经用上了IBM的小型机、Oracle的数据库、EMC的存储,这些东西都是很贵的,那些年可以说是花钱如流水啊。有人说过“钱能解决的问题,就不是问题”,但随着淘宝网的发展,在不久以后,钱已经解决不了我们的问题了。花钱买豪华的配置,也许能支持1亿PV的网站,但淘宝网的发展实在是太快了,到了10亿怎么?到了百亿怎么?在N年以后,我们不得不创造技术,解决这些只有世界顶尖的网站才会遇到的问题。后来我们在开源软件的基础上进行自主研发,一步一步的把IOE(IBM小型机、Oracle、EMC存储)这几个“神器”都去掉了。这就如同在《西游记》里面,妖怪们拿到神仙的兵器会非常厉害,连猴子都能够打败,但最牛的神仙是不用这些神器的,他们挥一挥衣袖、翻一下手掌就威力无比。去IOE这一部分会在最后一个章节里面讲,这里先埋个千里伏笔。欲知后事如何,且听下回分解。 参考技术A 网页设计需要前台设计和后台设计
ASP PHP JSP .NET等编程环境
用到html XHTML XML CSS等标记语言和javascript actionscript等程序语言
在网页的设计上和另猫&电商样需要掌握dreamweaver,flash,photoshop,fireworks等技术进行设计

9大架构设计场景,架构师必知必会

架构设计能力 ,并不是使用过多少种开发工具,多少种开发框架,多少种开发语言,更不是工作过多少年。
 
架构设计能力 ,更多的是运用一些方法,在不同业务,同一个业务的不同阶段,面对不同业务架构与系统架构存在的问题,去解决这些问题,高效率低成本支持业务发展的一种技术思路,一种设计能力。
 
更具体的,架构师可能会面临这九大类架构问题:
 
第一类,业务早期技术选型
包含但不限于会什么,熟悉什么,选什么,开源还是自研,成熟的还是最新的,封装还是不封装。
 
第二类,站点层与接入层架构设计
包含但不限于反向代理架构,站点层架构,高可用与扩展性,DNS轮询,智能DNS就近访问,CDN架构,session一致性架构等。
 
第三类,系统性能快速优化
如何在业务早期,有没有对系统架构做最小的改动,快速提升系统性能的架构方案?
 
第四类,微服务架构体系
微服务架构究竟解决什么问题,微服务的粒度如何设计,微服务的高可用,高性能,负载均衡,究竟如何实施?
 
第五类,数据库架构体系
数据库架构究竟需要设计什么内容?如何提升读性能?如何保证高可用?如何实施水平拆分?如何实施垂直拆分?如何保证主从一致性?如何平滑扩容?如何秒级扩容?
 
第六类,缓存架构体系
缓存架构究竟需要设计什么内容?有什么最佳实践?如何保证数据库与缓存的一致性?内存缓存怎么用?缓存集群怎么玩?究竟选redis还是memcache?
 
第七类,系统性架构解耦
配置中心是怎么解除系统耦合的?MQ是如何解除系统耦合的?IP耦合,公共库耦合,数据库耦合,微服务耦合分别应该如何解耦,有什么解耦指导思想?
 
第八类,系统性架构分层
互联网架构为什么要分层?DAO和MVC是不是分层?基础服务,业务服务应该怎么分层?前后端分离该怎么分层?数据库中间件该怎么分层?
 
第九类,多机房与下一代微服务
现代微服务架构体系存在什么问题,应该怎么解决?单机房架构有什么特点,多机房多活架构有什么特点,怎么快速实施多机房多活架构方案?
 
上面这九大类问题,如果你做架构师,你一定避不开。这些,不是工具,框架,开发语言的问题; 这些,是思路,方法论,最佳实践的问题
 
这里有80道架构设计思路,方法论,最佳实践的题目,感兴趣的小伙伴,可以看看,进行在通往架构师的路上,自己行进到了哪个阶段。
架构能力-段位测试 ,欢迎晒分
 
测试题的答案与详解,在“架构师训练营”里有非常详细,非常系统性的讲解,欢迎查阅。

9大架构设计场景,架构师必知必会

测试答案详解

 
参与“架构师训练营(一期)”的朋友,晒一下他们的得分。
9大架构设计场景,架构师必知必会
架构能力测试,一期学员TOP8
 

架构知识收获最大,提升最多的同学(TOP8),也获得了最多的奖学金回报。

扫码加入训练营,一起来学,一起来玩

 
欢迎大家参加二期的训练营(10.20-1.20为期三个月),一起学习,一起提升架构知识,一起拿奖学金。
画外音:3个月有点长,难以坚持的同学,请慎重。
 
15年经验 3个月的架构师训练营,9大类架构问题,系统性架构知识总结,希望能够帮助到大家。

架构师之路,你不是一个人前行,欢迎 加群沟通
 
阅读原文 立刻测试 架构能力,青铜?王者?
欢迎晒分。

以上是关于淘宝交易系统用啥语言和架构去设计,又有多少行程式的主要内容,如果未能解决你的问题,请参考以下文章

订单交易系统中的幂等设计

用啥工具画软件架构设计图

SOA架构设计案例分析

OTC交易系统与C2C交易系统差异和作用

9大架构设计场景,架构师必知必会

基于Web的毕业设计选题系统的设计与实现,这个毕业设计课题用啥语言做比较好。