- 浏览: 21503910 次
- 性别:
博客专栏
-
跟我学spring3
浏览量:2418628
-
Spring杂谈
浏览量:3008766
-
跟开涛学SpringMVC...
浏览量:5639454
-
Servlet3.1规范翻...
浏览量:259915
-
springmvc杂谈
浏览量:1597308
-
hibernate杂谈
浏览量:250216
-
跟我学Shiro
浏览量:5858946
-
跟我学Nginx+Lua开...
浏览量:701997
-
亿级流量网站架构核心技术
浏览量:785216
最新评论
-
xxx不是你可以惹得:
认真看错误代码,有时候重启电脑就行了 醉了 我把数据库配置写死 ...
第十六章 综合实例——《跟我学Shiro》 -
dagger9527:
holyselina 写道您前面说到能获取调用是的参数数组,我 ...
【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3 -
xxx不是你可以惹得:
Access denied for user 'root'@' ...
第十六章 综合实例——《跟我学Shiro》 -
dagger9527:
只有@AspectJ支持命名切入点,而Schema风格不支持命 ...
【第六章】 AOP 之 6.5 AspectJ切入点语法详解 ——跟我学spring3 -
dagger9527:
支持虽然会迟到,但永远不会缺席!
【第四章】 资源 之 4.3 访问Resource ——跟我学spring3
文章列表
1、前些日子某服务被刷,每分钟达到上几百万请求;当时采用了nginx cache来解决的;但是因为某服务不能缓存太久,当时设置了5s,那么带来的问题就是产生大量小文件,而且很快就删除了。
2、通过free -m
会发现used是27G;但是通过top查看进程占的内存并没有那么多
那内存去哪了?
3、通过查阅资料会发现(cat /proc/meminfo)
Slab: 22464312 kB
SReclaimable: 16474128 kB (这些是内核保持的但是可以释放的inode和dentry的缓存)
SUnreclaim: ...
流量复制
在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线。这其实就需要进行流量复制,把流量复制到其他服务器上,一种方式是使用如tcpcopy引流;另外我们还可以使用nginx的HttpLuaModule模块中的ngx.location.capture_multi进行并发执行来模拟复制。
构造两个服务
location /test1 {
keepalive_timeout 60s;
keepalive_requ ...
本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格、库存、服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后拼装 ...
此处我说的HTTP服务主要指如访问京东网站时我们看到的热门搜索、用户登录、实时价格、实时库存、服务支持、广告语等这种非Web页面,而是在Web页面中异步加载的相关数据。这些服务有个特点即访问量巨大、逻辑比较单一;但是如实时库存逻辑其实是非常复杂的。在京东这些服务每天有几亿十几亿的访问量,比如实时库存服务曾经在没有任何IP限流、DDos防御的情况被刷到600多万/分钟的访问量,而且能轻松应对。支撑如此大的访问量就需要考虑设计良好的架构,并很容易实现水平扩展。
架构
此处介绍下我曾使用过Nginx+JavaEE的架构。
1、单DB架构
早期架构可能就是Nginx直接ups ...
动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。
如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-resty-template模板引擎可以认为是JSP,其最终会被翻译成Lua代码,然后通过ngx.print输出。
而lua-resty-template和大多数模板引擎是类似的,大体内容有:
模板位 ...
JSON库
在进行数据传输时JSON格式目前应用广泛,因此从Lua对象与JSON字符串之间相互转换是一个非常常见的功能;目前Lua也有几个JSON库,本人用过cjson、dkjson。其中cjson的语法严格(比如unicode \u0020\u7eaf),要求符合规范否则会解析失败(如\u002),而dkjson相对宽松,当然也可以通过修改cjson的源码来完成一些特殊要求。而在使用dkjson时也没有遇到性能问题,目前使用的就是dkjson。使用时要特别注意的是大部分JSON库都仅支持UTF-8编码;因此如果你的字符编码是如GBK则需要先转换为UTF-8然后进行处理。
...
对于开发来说需要有好的生态开发库来辅助我们快速开发,而Lua中也有大多数我们需要的第三方开发库如Redis、Memcached、Mysql、Http客户端、JSON、模板引擎等。
一些常见的Lua库可以在github上搜索,https://github.com/search?utf8=%E2%9C%93&q=lua+resty。
Redis客户端
lua-resty-redis是为基于cosocket API的ngx_lua提供的Lua redis客户端,通过它可以完成Redis的操作。默认安装OpenResty时已经自带了该模块,使用文档可参考https://githu ...
在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此 ...
目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端直接访问;而这些持久化存储大多数使用了如LevelDB、RocksDB、LMDB持久化引擎来实现数据的持久化存储;京东的JIMDB主要分为两个版本:LevelDB和LMDB,而我们看到的京东商品详情页就是使用LMDB引擎作为存储的,可以实现海量KV存储;当然SSDB ...
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
Nginx+Lua入门
http://17173ops.com/2013/11/01/17173-ngx-lua-manual.shtml
nginx 配置指令的 ...
首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格、秒杀、动态服务、单品页、列表页等都在使用Nginx+Lua架构,其他公司如淘宝、去哪儿网等。
安装环境
安装步骤可以参考http://openresty.org/#Installation。
...
跟叶子学把妹系列汇总贴
- 博客分类:
- 跟叶子学把妹
《跟叶子学把妹》系列已经完结,《跟叶子学把妹》原名其实是《天方叶谈》,博主擅自给改成《跟叶子学把妹》目的是为了和之前的教程统一,。《天方叶谈》在每周三晚发布在公司内部的微信公众号《咚咚小报》上,对程序员来说,不管是真的把妹或者娱乐还是其他,笑笑就好。
把妹目录:
跟叶子学把妹——教程序猿把妹第一集
跟叶子学把妹——教程序猿把妹第二集
跟叶子学把妹——教程序猿把妹第三集
跟叶子学把妹——教程序猿把妹第四集
跟叶子学把妹——教程序猿把妹第五集
跟叶子学把妹——教程序猿把妹第六集
跟叶子学把妹——教程序猿把妹第七集
跟叶子学把妹——教程序猿把妹第八集
下图我 ...
跟叶子学把妹——教程序猿把妹第八集
- 博客分类:
- 跟叶子学把妹
自《天方叶谈》创刊以来,叶子一直在努力将自己的所见、所思、所感一点一点终结成泡妞经验,目的只有一个,就是让更多的伙伴们能够找到属于自己的“幸福”!不过,说来说去,现实中叶子其实就是个妞,还是个被别人追的妞(害羞ing… 没办法老娘就是这么炙手可热)
思来想去,这些经验也只是很小的一部分,叶子作为程序猿们的知心小妹妹,必须要捕获更多的信息量,才能让程序员哥哥们成功捕获猎物,啊~不对,是找到心仪的女盆友。有时候我也会想,到底自己跟大家总结的这些经验真的对么?现实中真的对程序员哥哥有效么?好惶恐…SO… 叶子决定这次变身八卦小记者,采访采访那些成功的案例,看看那些已经成功骗到妹子的人是 ...
跟叶子学把妹——教程序猿把妹第七集
- 博客分类:
- 跟叶子学把妹
我一直很有自信 平常不怕说出口
但在你身边时候 突然感觉好害羞
不知道 为什么,对你说 喜欢你,却说不出口,好想跟你表白~
随着萧亚轩的歌词,叶子回到了读书时代,青涩年华,爱情,从搭讪到认识,从认识到暗恋,从暗恋到明恋,现在我们总算到了关键时刻,可能也是大家最期待的时刻之“表白”,想必每个人都曾经辗转反侧难以入眠,纠结一个问题——是否要捅破这个窗户,和心仪的她“表白”呢?
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC Test HtmlUnit简介
Spring4.1新特性——静态资源处理增强
Spring 4.1对静态资源处理进行了细化,ResourceHttpRequestHandler细分为两大部分 ...