2014-07-12 14:21:40

View Mode: Normal | Article List
Category: Design | 1 | 2 | 3 | >

12306 的架构设计与淘宝天猫

[ 2014-01-11 12:09:20 | Author: zhenhua ]
转自:西西河 作者:代码狗

本人在淘宝写过一段时间代码,2012年在一家百强民企做电商副总,当时在极为艰苦的条件下带队开发了一个B2C网站,走支付宝和银联支付通道,年营业额千万级(当然实在太少了,我只是说这个网站投入了实际的运营)。

也就在那个时候,我对12306嗤之以鼻,觉得他们做得太烂了,认为自己能带队花几百万半年时间做个好的出来。于是我狂妄地想做一个开源的订票系统给他们。我花了一个星期时间思考建立数据模型,思考到库存这一步的时候,我才发现,12306的库存复杂性比淘宝、京东高很多倍,运算量也大很多倍。传统的分布式数据库、缓存、负载均衡技术并不能恰好满足12306的需求。

在平时,12306也就是个正常的电商网站。但一到黄金周,12306就是一个全站所有商品都秒杀,所有SKU都是动态库存的变态。

即使不考虑线下既有的电话、代售点等渠道,要实现一个12306,最少最少也是千万级别的硬件投入(这是当时的估算,没有精算,可能与实际相差较大,总之,我说得不一定对,12306的业务也许没我说的那么复杂,但也绝不是某些人喷的那么简单),软件和人力另算。那些叫嚣只要40台服务器、只要2个...

Read More...
一.自选股分析
二.NBA比赛分析
三.播客分析
四.开心网分析
-----------------------------------------------------------------------------------------

下面的图片都是在教育网访问的情况,我故意放大了某些缺陷,这样可以很好的模拟没有部署服务的地区对用户体验的影响。我只能针对我熟悉和了解的项目进行分析,另外还有我们经常访问的网站也会被拿来做素材分析。我们老大也说问题暴露出来,能推动解决的话也很好,大家别拍我。

一.自选股分析

...

Read More...
一.Cache, 王道也
二.Cache 基本原理介绍
三.我划分的3个刷新级别
四.我对HTTP协议做的一点创新(?maxage=6000000)
五.Yslow优化网站性能的14条军规点评
六.上线了 != Finished
七.提速度同时节约成本方法汇总
-----------------------------------------------------------------------------------------

一.Cache,王道也

我觉得系统架构不应该仅仅是搭建一个强硬的能承受巨大并发压力的后台,前端页面也是需要架构的而且同等重要,不理解前台的的后台工程师是不合格的。中国人讲究钢柔相济,后台强硬只能说你内功深厚,前端用的巧,那叫四两拨千斤。

一般后台工程师很少关心前端如何使用自己的资源,而前端工程师,不知道自己的一个简单的用法会对后端造成多大影响。我会给出一些数据,来震撼下你的眼球。

二.Cache 基本原理介绍 (参考Caching Tutorial)

为什么使用Cache?

1.减少延迟,让你的网站更快,提高用户体验。
...

Read More...
一.系统部署(高并发,可扩展)
二.负载均衡LVS(高可用,低成本)
三.IDC分布,DNS解析(快速)
-----------------------------------------------------------------------------------------

一.系统部署(高并发,可扩展)

本来想画在手稿上然后扫描上去的,貌似方法太土,在朋友的帮助下费了n个小时用Visio画了个,感觉很好看 ^-^ 。这一篇将主要围绕这个图来讲述。

...

Read More...
--提升性能的同时为你节约10倍以上成本

从基本HTTP协议,服务器编写(只讲思路),到完整系统搭建(包括负载均衡LVS,IDC分布,DNS解析),到浏览器缓存的使用(重点讲述),结合线上实例图文讲解如何以最低廉的成本构建快速,高并发,高可用,可扩展的Web服务。最后将拿本公司一些线上产品做实例分析。

如果能灵活应用这些方法,你也许会发现对于某些网站来说节约10倍成本,其实是个很保守的说法。

一.如何节约CPU
二.怎样使用内存
三.减少磁盘I/O
四.优化你的网卡
五.调整内核参数
六.衡量Web Server的性能指标
七.NBA js直播的发展历程
八.新浪财经实时行情系统的历史遗留问题 (7 byte = 10.68w RMB/year)
-----------------------------------------------------------------------------------------

一.如何节约CPU

1. 选择一个好的I/O模型(epoll, kqueue)

3年前,我们还关心c10k问题,随着硬件性能的提升,那已经不成问题,但如果想让PIII ...

Read More...
High Performance Web Sites - yahoo14条

由谁提出的
来自Yahoo! Exceptional Performance team

什么时候开始发起的
2004年开始研究,2007年4月开始,陆续发布,(5月,7月,9月)

为什么
Yahoo希望对自己的产品性能做出一些测量和改善

成绩
总结出14条提升WEB产品性能的准则(后续21条)



第一条:最小化HTTP请求(Frontend)

将CSS文件和JS文件合并(可行性不高)
CSS Sprites
Image Maps(很久以前经常使用的“热区”)
Inline Images,data:URL(浏览器兼容问题)

每天大概有40-60%的访问者去到我们的站点的时候都是empty cache,所以,
我们如果能够使得他们在第一次访问时速度更快,那对他们来说将获得很好的体验。



第二条:使用内容分发网络 (Server)

将静态文件分发到其他独立的服务器上。
目的:使得用户可以就近获取到...

Read More...

MVC模式已死

[ 2010-04-21 19:17:17 | Author: zhenhua ]
MVC模式:Model模型 View试图 Control控制器,是目前主流模式,被当作服务器软件入门基本模式学习和掌握,主流框架Struts 1/2 JSF Wicket基本都顺理成章支持MVC模式。

但是,随着时间推移,MVC模式也暴露出大量缺点,因为MVC模式本质上是一个结构型模式,结构模式相比行为模式而言,实际就是静止的,相对固定的,而随着B/S和互联网应用不断普及,Web 2.0和社会化媒体 以及游戏等大量频繁交互应用普及,相对静止的MVC模式已经不适合高度交互注重行为的应用了。

DDD领域建模本身比较重视结构,它的实体 值对象和服务器是也是一种结构划分,但是没有强调对象职责行为的重要性,而这是对象和数据库唯一的区别,当然其上下文场景概念的提出,也可以认为体现了对角色和场景的重视,但远远不够。

相反,对象设计:角色、责任和协作"(Object Design: Roles, Responsibilities, and Collaborations))一书提出职责驱动开发,将对象行为上升为重点,提出了对象其实是在扮演某种角色,而角色是有职责的,然后会在一定场景上下文环境中实施一定交互行为,这些已经在Jdon进行了充分讨论:
...

Read More...

struts2 与 Spring MVC比较

[ 2010-04-17 21:26:51 | Author: zhenhua ]
struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文

spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文

好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了

===================================
...

Read More...
1 | 2 | 3 | >