【2014-05-09】Lua的优缺点以及与Nginx的组合应用 1. 目前应用最多三大技术:lua nodejs golang 2. 我对lua的印象也还停留在魔兽里面写写插件 3. lua跟c很容易结合写扩展;另外lua支持协程;lua跟nginx结合,能够做很多高性能的服务,特别是比如消息类的 4. 项目后端用openresty,写法和php一样,起个nginx就够了 OpenResty是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项,可以用lua写它的模块。 【2014-05-26】互联网app长连接消息push系统的架构和坑 # 区分长连接,半长连接,短连接 1. app的话,可以很容易通过客户端支持的语言,例如java、flash,开一个scoket服务,connet之后就不close,这是长连接(依然特雷西:58同城的帮帮就是flash) 2. web的话,一般通过js来完成,但是ajax的话,没有办法hold一个连接不断,象apache 有keep alive选项,其实还是没有真正的长连接,所以通常意义来说来说,web端的叫半长连接,它可能需要客户端插件辅助,例如js flash 3. 短连接的话,就是通过js的setTimeout,每隔一段时间去后台拉数据,缺点是当用户没有新的消息时,也会不断的浪费请求到后台。(目前微信公众平台是用这种,每隔10s拉一次) # 客户端的处理 1. js的setTimeout 2. js调用flash,java等封装好的接口 3. nodejs的websocket配合服务器端的nodejs # 服务器端的处理 1. 服务器端主要是三个,一个是io处理层,另外一个是逻辑处理层,第三个是数据存储层 2. io处理层是重头,因为要hold住很多长连接 3. 主流方案 a. nginx(lighttpd) module c/c (百度贴吧在用,性能最好,开发调试最麻烦) b. nginx lua redis (第二简单,利用nginx的高性能io和lua的快速开发,也很方便) c. nodejs redis (简单,nodejs提供一个web端用的js半长连接库(猜是socket.io)) d. golang redis (数字公司在用,跟开发普通后端server一样,不过golang是协程机制,hold连接很简单,单机一般有100w,经过优化后连接能到200w) 4. 后端架构一般会包含,register_server, user-server, push-server, message-server, storage-server等几个部分 # 扩展阅读 Comet:基于 HTTP 长连接的“服务器推”技术 【2014-05-28】聊聊常见设计模式及应用 # 单例模式Singleton 设计模式,第一个肯定是单例模式了,基本都会用到,常见的写法是 **::getInstance() 优点很明显 1. 用法写法都简单 2. 类是全局作用域的,随时随到都可以调用 3. 调用时不用考虑初始化问题 缺点主要在架构复杂后会出现 1. 单例意味全局只有一个,解决方法是增加setInstance,getInstance('指定名称') 2. 对单元测试不友好,因为单元测试要求可以构造一个新的对象. 3. 对将来架构的扩展也会埋下隐患 应用 1. 你项目,框架的核心类 如$core = core::getInstance(); $core- |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|