淘宝网架构分享总结

一、为什么stateless比较有利于实现水平伸缩

关于什么是stateless的扫盲,见这个贴:无状态服务(stateless service)

一般有一个共识,就是把应用做成无状态的,会比较容易实现水平伸缩。但是以前一直有一个想法,就算应用是有状态的,也可以做成水平伸缩:只需要在负载均衡那里做一个session绑定就可以了,根据某种标识,把请求固定地发送到特定的server上[......]

阅读全文

无状态服务(stateless service)

一、定义

无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息

有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的[......]

阅读全文

HTTP_REFERER

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。[......]

阅读全文

大型系统的JAVA中间件

概要
淘宝这几年经历了和其他大型网站类似的,从比较集中的应用到大型分布式应用的演进,在这个过程中,我们遇到并解决了一些问题,并且通过系统的演进、重构,沉淀了几个相关的中间件产品。 淘宝的Java中间件,主要由服务框架、消息中间件、分布式数据层组成,此外也有支撑这三块儿部分的其他系统,在这次的分享中,会系统地给大家分享淘宝 Java中间件的发展过程,包括我们遇到的重要的问题以及各个产品不同的特点和实现。对和这些中间件相关的支撑系统,也会做简要的介绍。 希望通过这次机会,让相关的同学能够系统地了解我们在这个领域的工作以及遇到的问题。也希望我们之前的工作可以给参会的同学提供一定的参考和帮助。[......]

阅读全文

深入理解Java内存模型

Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。本文大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。

http://www.infoq.com/cn/minibooks/java_memory_model

Wordnik的MongoDB使用经历

Wordnik 是一个在线辞典和语言库,他提供Web页面并开放有相应的API接口,在他们的官方博客中,记录了他们的一些技术实践及相应的效果,他们后端存储经历了从 MySQL 到 MongoDB 的转变,下面是相关的文章:

What has technology done for words lately? 最近的技术改进

  • 在某些方面仅保证最终一致性
  • 使用文档型存储-这里指的是 MongoDB

[......]

阅读全文

淘宝消息中间件Metamorphosis开源

淘宝开发团队近日开源了消息中间件Metamorphosis。

Metamorphosis是一个高性能、高可用、可扩展的分布式消息中间件,思路起源于LinkedIn的Kafka,但并不是Kafka的一个Copy。具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,目前在淘宝和支付宝有着广泛的应用。[......]

阅读全文

HBase

HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop 项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。[......]

阅读全文

人物凭空消失!PhotoShop CS5新功能详解

随着 Adobe 新系列设计套装的更新,我们迎来了期待已久的 Photoshop CS5 。各种新的功能让我们的工作流程变得更迅捷。我们今天将要去了解和使用的一个新功能叫做内容识别(Content Aware)。这个功能让我们能够快速的填充一个选区,用来填充这个选区的像素是通过感知该选区周围的内容得到的,使填充结果看上去像是真的一样。在下面这个例子里我们将要从照片里移除一个人,移除的过程不会超过5分钟,然后我们还会为图像增强一些效果,完成这些总共大约需要10分钟。[......]

阅读全文

4大Java OSGi框架比较 (Knopflerfish、Apache Felix、Equinox、Spring DM)

   OSGi正在成为一种趋势,越来越多的项目采用了OSGi,越来越多的中间件都开始采取了OSGi的标准。身为一名Java开发人员,如果你还对OSGi结构一无所知,那你真的有点Out了。

      什么是OSGi

      OSGi的名称来源于其开源组织的名称Open Services Gateway initiative,OSGi是一个标准,它致力于提供给Java项目一个模块化的底层环境,以及一系列通用的服务(Service)。和普通的JVM 程序相比,OSGi的程序天生拥有动态模块的特点,不同的模块(OSGi里称之为Bundle)有着独立的生命周期,可以独立进行安装、启动、停止、卸载的操作,模块间的依赖性管理也由OSGi提供。你可以看出,OSGi非常适合需要进行Plugin管理的项目,一个典型的成功案例就是Eclipse和它众多的Plugin。OSGi标准还规范了一系列我们常间的操作,日志、配置文件、事件队列、Web开发、JPA&JDBC等等,大部分部署 OSGi标准的框架都提供了这些服务,这样一方面规范了我们代码的结构,一方面节约了我们开发的时间。[......]

阅读全文

Web页面内容优化与性能优化技巧

回想一下,以前我们不得不花费大量时间去优化页面内容(图片、CSS等等),如今用户有更快速的互联网连接,我们似乎能够使用更大的图像或更大的 Flash文件,里面包含的有视频或者图片。然而,随着移动开发的兴起,我们又回到了过去的窘状。网站优化是十分重要的,需要下载的内容少,反应速度快,就能使我们加载应用程序更快速。[......]

阅读全文