自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(361)
  • 收藏
  • 关注

原创 最新 跟我学spring3 电子书下载

下载地址:http://jinnianshilongnian.iteye.com/blog/pdf注:图片因为是外链,无法生成在pdf中(最好还是看博客吧)。目录:【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3【第二章】 IoC 之 2

2012-03-03 22:41:01 3637 2

凯叔解密京东千亿商品系统核心架构

作者:尤凤凯, 京东商城研发-交易平台-商品研发负责人。2010年加入京东,先后参与设计研发京东第一代监控、消息、EDM等系统。12年开始致力于商品系统SOA化、商品系统的持续架构演进。现主要负责商品中台及组件化建设。 商品,黄金交易流程最基础、最核心的环节,无商品不电商。商品数据无处不在,商家(采销、供应商)发布管理、供应商下采购单、仓储配送、促销、搜索、商详页展现、购物支付...

2018-04-05 14:01:27 1355

线程中断、超时与降级——《亿级流量》内容补充

​最近一位朋友在公众号留言问一个关于熔断的问题:使用hystrix进行httpclient超时熔断错误,我是顺序操作的(没有并发),发现hystrix会超时断开,但是会导致hystrix线程池不断增多,直到后面因线程池装不下拒绝? 而该问题跟线程中断、超时与降级等有关,因此本文将详细介绍导致这个问题背后的原因。 需要提前了解的知识:你的Java代码可中断吗(1)...

2017-06-13 07:15:14 1139

《亿级流量网站架构核心技术》一书值得看吗?

扫一扫,关注我的公众号  我的新书 购买地址 在“《亿级流量网站架构核心技术》目录一览”中,已经介绍了本书的大体内容,其中主体内容是2014年/2015年/2016年公众号/博客文章的汇编,比如聊聊高并发系列、商品详情页架构系列、还有一些碰到并解决的问题等。 比如聊聊高并发系列,内容偏理论,如何实现并没有过多介绍。《亿级流量网站架构核心技术》一书会补...

2016-12-25 12:37:31 1326

《亿级流量网站架构核心技术》目录一览

扫一扫,关注我的公众号  我的新书 购买地址 在2011年年底的时候笔者就曾规划写一本Spring的书,但是因为是Spring入门类型的书,框架的内容更新太快,觉得还是写博客好一些,因此就把写完的书稿放到了博客(jinnianshilongnian.iteye.com,因为是龙年开的博客,所以很多网友喊我龙年兄),并持续更新,到现在已经不多五年了。大家再网上找资源时会发...

2016-11-22 20:57:01 1217

聊聊高并发之隔离术

扫一扫,关注我的公众号  我的新书 购买地址 隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的;而资源隔离有脏数据隔离、通过隔离后减少资源竞争提升性能等。我遇到的比较多的隔离手段有线程隔离、进程隔离、集群隔离、机房隔离、读写隔离、动静隔离、爬虫隔离等。而...

2016-09-12 19:06:27 940

聊聊高并发系统之HTTP缓存

扫一扫,关注我的公众号  我的新书 购买地址 简介最近遇到很多人来咨询我关于浏览器缓存的一些问题,而这些问题都是类似的,因此总结本文来解答以后遇到类似问题的朋友。 因本文主要以浏览器缓存场景介绍,所以非浏览器场景下的一些用法本文不会介绍,而且本文以chrome为测试浏览器。 浏览器缓存是指当我们使用浏览器访问一些网站页面或...

2016-08-23 08:32:22 964

是时候闭环Java应用了

你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗?在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;2、目录结构没有规范,jar启动时通过-classpath任意指定;3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置文件太费劲;4、不管是非web应用还是we...

2016-08-16 19:48:32 926

电商前端交易型系统设计原则

扫一扫,关注我的公众号  我的新书 购买地址从毕业到现在已经快7年开发经验了,做过基础用户系统、积分商城、偷菜游戏、论坛、博客等等;也一个人全栈开发在线视频网站(http://sishuok.com/),也开发过几万、几十万、几千万、几个亿不同量级的系统,踩过不少坑,也学到许多经验。 设计了一些系统,也有了一些自己的观点,个人认为设计系统要因场景因时间而异,一个系统...

2016-07-20 08:30:19 1081

聊聊高并发系统之降级特技

扫一扫,关注我的公众号  我的新书 购买地址​ 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。本文将介绍...

2016-06-22 08:35:36 1110

聊聊高并发系统之限流特技

扫一扫,关注我的公众号   我的新书 购买地址 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁...

2016-06-15 08:47:11 965

dbcp配置及jdbc超时设置总结

 14年618前夕的某个晚上的如下sql:<!--添加同步数据--><insert id="insert" parameterClass="order"> INSERT INTO aa(ID,ORDERID,CREATEDATE) VALUES (seq.Nextval,#orderId#,#createDate#) <se...

2016-06-01 10:01:10 2259

网站架构经验随笔

扫一扫,关注我的公众号  我的新书 购买地址 本篇是我的电商网站架构经验合集,感谢阅读。 目录电商前端交易型系统设计原则构建亿级前端读服务应用多级缓存模式支撑海量读服务构建需求响应式亿级商品详情页商品详情页系统的Servlet3异步化实践京东商品详情页碎碎念京东商品详情页服务闭环实践应用数据静态化架构高性能单页Web应用使用N...

2016-04-10 19:30:52 820

Nginx+Lua(OpenResty) HelloWorld

《使用Nginx+Lua(OpenResty)开发高性能Web应用》中已经介绍了使用Nginx+Lua(OpenResty)开发Web应用,但是没有具体代码示例。 本文将按照《使用Nginx+Lua(OpenResty)开发高性能Web应用》介绍的Web应用项目结构提供HelloWorld代码。 初始化准备1、安装OpenResty,下载地址:https://github.c...

2016-04-09 16:23:48 1242

使用Nginx+Lua(OpenResty)开发高性能Web应用

在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛。Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀;目前Nginx团队也开始意识到这个问题,开发了nginx...

2016-03-06 17:13:38 3287

Flume架构与源码分析-MemoryChannel事务实现

Flume提供了可靠地日志采集功能,其高可靠是通过事务机制实现的。而对于Channel的事务我们本部分会介绍MemoryChannel和FileChannel的实现。 首先我们看下BasicChannelSemantics实现:public abstract class BasicChannelSemantics extends AbstractChannel { //1、事...

2015-12-17 22:36:08 1093

Flume架构与源码分析-核心组件分析-2

 4、整体流程从以上部分我们可以看出,不管是Source还是Sink都依赖Channel,那么启动时应该先启动Channel然后再启动Source或Sink即可。 Flume有两种启动方式:使用EmbeddedAgent内嵌在Java应用中或使用Application单独启动一个进程,此处我们已Application分析为主。 首先进入org.apache.flume...

2015-12-13 20:46:38 824

Flume架构与源码分析-核心组件分析-1

 首先所有核心组件都会实现org.apache.flume.lifecycle.LifecycleAware接口:public interface LifecycleAware { public void start(); public void stop(); public LifecycleState getLifecycleState();}start方...

2015-12-13 20:37:21 943

Flume架构与源码分析-整体架构

最近在学习Flume源码,所以想写一份Flume源码学习的笔记供需要的朋友一起学习参考。 1、Flume介绍Flume是cloudera公司开源的一款分布式、可靠地进行大量日志数据采集、聚合和并转移到存储中;通过事务机制提供了可靠的消息传输支持,自带负载均衡机制来支撑水平扩展;并且提供了一些默认组件供直接使用。Flume目前常见的应用场景:日志--->Flume---&g...

2015-12-02 21:17:28 1125

京东商品详情页碎碎念

在之前的两篇文章《构建需求响应式亿级商品详情页》和《京东商品详情页服务闭环实践》已经详细介绍了整个系统的架构设计和实现思路。本篇将介绍下杂七杂八的一些实践:静态化突发流量恶意访问托底数据超时时间/重试CDN回源监控和报警日志 静态化我个人总结为:数据静态化、页面片段静态化、页面静态化;数据静态化即把相关数据聚合为一个大数据,这样比如获取数据时只需...

2015-11-26 18:58:34 869

原创 京东商品详情页服务闭环实践

该文章是根据OpenResty Con 2015技术大会的演讲《Nginx+Lua在京东商品详情页的大规模应用》细化而来,希望对大家有用。 京东商品详情页技术方案在之前《构建需求响应式亿级商品详情页》这篇文章已经为大家揭秘了,接下来为大家揭秘下双十一抗下几十亿流量的商品详情页统一服务架构,这次双十一整个商品详情页没有出现不服务的情况,服务非常稳定。统一服务提供了:促销和广告词合并服务、...

2015-11-20 14:54:18 974

使用Docker容器时需要更改GC并发参数配置

最近在做统一服务优化时发现使用容器时垃圾回收偏长,而我们的服务是一个响应时间优先的应用,需要对GC进行一些调优,在对容器内Java应用进行GC时发现: (8核)如下是8核机器的GC,CMS,young gc基本在100ms左右[GC (Allocation Failure) 1540815K->708720K(1992320K), 0.1204106 secs][...

2015-10-08 20:18:35 1089

商品详情页系统的Servlet3异步化实践

在京东工作的这一年多时间里,我在整个商品详情页系统(后端数据源)及商品详情页统一服务系统(页面中异步加载的很多服务,如库存服务、图书相关服务、延保服务等)中使用了Servlet3请求异步化模型,总结了Servlet3请求异步化的一些经验和想法跟大家分享和交流。 我将从如下几点阐述Servlet3异步化之后的好处:1、为什么实现请求异步化需要使用Servlet32、请求异步化后得...

2015-09-24 20:16:59 303

构建需求响应式亿级商品详情页

该文章是根据velocity 2015技术大会的演讲《京东网站单品页618实战》细化而来,希望对大家有用。 商品详情页是什么商品详情页是展示商品详细信息的一个页面,承载在网站的大部分流量和订单的入口。京东商城目前有通用版、全球购、闪购、易车、惠买车、服装、拼购、今日抄底等许多套模板。各套模板的元数据是一样的,只是展示方式不一样。目前商品详情页个性化需求非常多,数据来源也是非常多的,...

2015-08-14 17:08:12 366

我是如何构建一个持续发展的项目

说起项目,每个程序员都应该搭建过自己的项目,而我也搭建过数十个企业级或互联网级项目;在做企业级项目时也抽象了一套通过的开发脚手架ES方便开发,也做过一些通用的代码生成工具来生成通用项目架子或一些CRUD的代码。做这些平台或项目的时候或多或少给我一些启示和原则,而这些启示和原则一直指导着我内心方向,时刻指导我不偏离航线。 启示录心中有原则代码规范化代码审查代码重构代...

2015-08-03 09:04:40 181

构建亿级前端读服务

从入职京东到现在,做读服务已经一年多的时间了,经历了各种亿级到百亿级的读服务;这段时间也进行了一些新的读服务架构尝试,从架构到代码的编写,各个环节都进行了反复尝试,压测并进行调优,希望得到一个自己满意的读服务架构。 一些设计原则无状态数据闭环缓存银弹并发化降级开关限流切流量其他无状态如果设计的应用是无状态的,那么应用就可以水平扩展,当然实际生产...

2015-08-02 14:36:17 301

错误的日期格式可能导致走nginx proxy cache时不能进行304响应

昨天在整合某些系统的nginx配置时,出现了当使用nginx cache时无法返回304响应的情况,出问题的响应头:Content-Type:text/html; charset=gb2312Date:Mon, 05 Jan 2015 01:58:05 GMTExpires:Mon, 05 Jan 15 02:03:00 GMTLast-Modified:Mon, 05 Ja...

2015-04-15 16:37:22 439

开启nginx cache后导致内存几乎100%问题

1、前些日子某服务被刷,每分钟达到上几百万请求;当时采用了nginx cache来解决的;但是因为某服务不能缓存太久,当时设置了5s,那么带来的问题就是产生大量小文件,而且很快就删除了。 2、通过free -m   会发现used是27G;但是通过top查看进程占的内存并没有那么多 那内存去哪了? 3、通过查阅资料会发现(cat /proc/mem...

2015-04-15 16:32:21 1357

跟我学OpenResty(Nginx+Lua)开发目录贴

扫一扫,关注我的公众号  购买地址 使用Nginx+Lua开发近一年的时间,学习和实践了一些Nginx+Lua开发的架构,为了让更多人使用Nginx+Lua架构开发,利用春节期间总结了一份基本的学习教程,希望对大家有用。也欢迎谈探讨学习一些经验。  目录第一章 安装Nginx+Lua开发环境第二章 Nginx+Lua开发入门第三章 Redis/SSD...

2015-03-07 17:29:46 615

第八章 流量复制/AB测试/协程

流量复制在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线。这其实就需要进行流量复制,把流量复制到其他服务器上,一种方式是使用如tcpcopy引流;另外我们还可以使用nginx的HttpLuaModule模块中的ngx.location.capture_multi进行...

2015-03-07 17:25:14 394

第七章 Web开发实战2——商品详情页

本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格、库存、服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后拼装网页模板的。http://item.jd.com/1217499.html 如图所示,商品页主要包括商品基本信息(基本信息、图片列表、颜色/尺码关系、扩展属性、规格参数、包装清单、售后...

2015-03-03 21:40:15 1242

第六章 Web开发实战1——HTTP服务

此处我说的HTTP服务主要指如访问京东网站时我们看到的热门搜索、用户登录、实时价格、实时库存、服务支持、广告语等这种非Web页面,而是在Web页面中异步加载的相关数据。这些服务有个特点即访问量巨大、逻辑比较单一;但是如实时库存逻辑其实是非常复杂的。在京东这些服务每天有几亿十几亿的访问量,比如实时库存服务曾经在没有任何IP限流、DDos防御的情况被刷到600多万/分钟的访问量,而且能轻松应对。支...

2015-03-02 22:05:30 278

第五章 常用Lua开发库3-模板渲染

动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。 如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-rest...

2015-03-01 17:23:31 480

第五章 常用Lua开发库2-JSON库、编码转换、字符串处理

 JSON库 在进行数据传输时JSON格式目前应用广泛,因此从Lua对象与JSON字符串之间相互转换是一个非常常见的功能;目前Lua也有几个JSON库,本人用过cjson、dkjson。其中cjson的语法严格(比如unicode \u0020\u7eaf),要求符合规范否则会解析失败(如\u002),而dkjson相对宽松,当然也可以通过修改cjson的源码来完成一些特殊要求...

2015-02-28 18:46:35 1536

第五章 常用Lua开发库1-redis、mysql、http客户端

对于开发来说需要有好的生态开发库来辅助我们快速开发,而Lua中也有大多数我们需要的第三方开发库如Redis、Memcached、Mysql、Http客户端、JSON、模板引擎等。一些常见的Lua库可以在github上搜索,https://github.com/search?utf8=%E2%9C%93&q=lua+resty。 Redis客户端lua-resty-red...

2015-02-28 09:31:23 465 1

第四章 Lua模块开发

在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此模块的一个副本(Copy-On-Write),即模块可以认为是每Worker进程共享而不是每Nginx Server共享;另外注意之前我们使用init_by_lua...

2015-02-27 10:02:56 317

第三章 Redis/SSDB+Twemproxy安装与使用

目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端直接访问;而这些持久化存储大多数使用了如LevelDB、Rock...

2015-02-26 11:39:39 281

第二章 OpenResty(Nginx+Lua)开发入门

Nginx入门本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:nginx启动、关闭、重启http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.htmlagentzh 的 Nginx 教程http://openresty.org/download/agentzh-nginx-tut...

2015-02-22 19:16:23 1722 1

第一章 安装OpenResty(Nginx+Lua)开发环境

首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格...

2015-02-17 14:35:08 1155

跟叶子学把妹系列汇总贴

 《跟叶子学把妹》系列已经完结,《跟叶子学把妹》原名其实是《天方叶谈》,博主擅自给改成《跟叶子学把妹》目的是为了和之前的教程统一,。《天方叶谈》在每周三晚发布在公司内部的微信公众号《咚咚小报》上,对程序员来说,不管是真的把妹或者娱乐还是其他,笑笑就好。 把妹目录: 跟叶子学把妹——教程序猿把妹第一集跟叶子学把妹——教程序猿把妹第二集跟叶子学把妹——教程序猿把妹第三集...

2014-09-22 11:27:47 297

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除