首页 存档 技术 查看内容

2014年5月技术群讨论整理

2018-3-30 13:00 |来自: 互联网 313 0

摘要: 【2014-05-09】Lua的优缺点以及与Nginx的组合应用 1. 目前应用最多三大技术:lua nodejs golang 2. 我对lua的印象也还停留在魔兽里面写写插件 3. lua跟c很容易结合写扩展;另外lua支持协程;lua跟nginx结合,能够做很 ...

【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-

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部