当前位置: 首页 > news >正文

有人用axure做网站/软文网官网

有人用axure做网站,软文网官网,做网站怎么申请百度推广,顺德手机网站设计信息引言 做后端开发免不了要和一些 存储服务器, 消息服务器 等等 打交道。 起因 (传统模式, 读取数据库) 大家都知道和这些使用 tcp连接 的服务传递数据的都必须要打开 一个 连接-connection 例如我们打开一个数据库并执行一段 sql, 通常都是 co…

引言

做后端开发免不了要和一些 存储服务器, 消息服务器 等等 打交道。

起因 (传统模式, 读取数据库)

大家都知道和这些使用 tcp连接 的服务传递数据的都必须要打开 一个 连接-connection

例如我们打开一个数据库并执行一段 sql, 通常都是

  1. connection = open "mysql://127.0.0.1:3306/db" (打开数据库,并取得持有连接的句柄)
  2. data = connection.exec "select * from table1" (执行 sql 并获取数据)
  3. connection.close() 显式的关闭连接

这个方式看上去似乎没有什么不对的。

但是对于并发量稍大一些的站点来说。一个单元批次的操作就需要打开并关闭一次连接。。。
显然是不能接受的

为这样做不能接受呢?

建立一个tcp连接需要三次握手。而且还需要为对象分配系统资源和内存空间。所以创建一个tcp连接可以说是昂贵的。

回到刚才的话题。这样平凡的开启关闭连接不仅对增加客户端io的压力,最重要的是大大增加了 tcp 服务器的压力(mysql, redis)。

那我们再尝试另外一种方式,那就是不关闭连接,一直使用这个连接呢。答案是: 可以。这种方式 被叫做 长连接

那这样的话,也有一个问题。因为一段时间内一个连接只能做一件事情。那么在并发的情况下这显然会阻塞整个系统。

那我们能不能尝试创建多个连接,然后当调用的时候,将没有被使用的连接拿出来使用,当使用完毕之后,将连接放回去,以供其他调用者使用的方式的呢?

连接大管家(连接池)

答案是有的:那就是我们要说的连接池。当然一个健全的连接池并不仅仅完成以上我所说的功能。

  • 连接预热 (启动时自动打开n个连接以供使用)
  • 使用 例如 轮转法 均匀分发 连接请求
  • 当池中的连接即将耗尽得时候动态产生新的连接
  • 当池中的连接一段时间没有被调用的时候,自动释放连接
  • 自动丢弃 已经坏掉的 连接
  • 系统关闭的时自动释放所有连接
    ........

以上都属于连接池的功能。连接池可谓是我们管理连接的管家

Node.js 中的 连接池

说到这里好像还是没有说到要点。在Node中我们应该怎么呢?

我们可以使用 node-pool 这个模块 GitHub

1. 安装 npm install generic-pool
2. 创建一个连接池       // 创建一个 mysql 连接池var poolModule = require('generic-pool'); var pool = poolModule.Pool({ name : 'mysql', //将建 一个 连接的 handler create : function(callback) { var Client = require('mysql').Client; var c = new Client(); c.user = 'scott'; c.password = 'tiger'; c.database = 'mydb'; c.connect(); callback(null, c); }, // 释放一个连接的 handler destroy : function(client) { client.end(); }, // 连接池中最大连接数量 max : 10, // 连接池中最少连接数量 min : 2, // 如果一个线程3秒钟内没有被使用过的话。那么就释放 idleTimeoutMillis : 30000, // 如果 设置为 true 的话,就是使用 console.log 打印入职,当然你可以传递一个 function 最为作为日志记录handler log : true }); 
3. 从连接池中获得链接并使用// 默认无任务优先级, 但是与高优先级一样,在竞争队列的前列pool.acquire(function(err, client) { pool.release(client); }); // 高优先级获得链接, 在竞争队列的前列 pool.acquire(function(err, client) { pool.release(client); }, 0); // 中等优先级获得链接 pool.acquire(function(err, client) { pool.release(client); }, 1); // pool.acquire(handler, priority) 方法接受连个参数 // handler: 获取连接的回掉函数 // priority: 获取到链接的竞争优先级 // pool.release(client) 方法会将链接放回到连接池当中,当获得的链接没有release的话。将会导致该链接被一直占用 

更多相关的配置 我就不一一展开讨论了。大家可以去 github 上查看项目的 README.md

【生产级别Nodejs开发实践-强壮的node进程容器PM2】- 敬请期待

注:
存储服务器: (数据库 mysql ..., 缓存 memcached, redis ...)
消息服务器: (RabbitMQ,ActiveMQ ...)

  • 2014年12月18日发布

转载于:https://www.cnblogs.com/dearxixi/p/6822120.html

http://www.jmfq.cn/news/5069863.html

相关文章:

  • 中企建网站/搜索引擎优化师
  • 怎么用手机自己做网站/品牌广告
  • wordpress 单本小说站/百度信息流怎么投放
  • 保定学校网站建设/苏州网站建设公司排名
  • 海南网站开发公司/网站优化培训学校
  • 安徽省建设工程质量安全监督总站网站/上海百度推广电话客服
  • 保利拍卖公司网站/友点企业网站管理系统
  • 如何制作手机免费网站模板/微信营销和微博营销的本质区别
  • 百度收录网站标题/媒体推广
  • 中兴建设云南有限公司网站/百度怎么发布短视频
  • wordpress hsts/seo和sem的区别是什么?
  • 网站日志分析怎么做/商丘seo教程
  • 网站中下滑菜单怎么做/深圳推广公司推荐
  • 做网站签合同/成都网络营销搜索推广
  • 云网站后台操作手册/网站seo顾问
  • 邵阳做网站的公司/广州今日头条新闻
  • dw5怎样做网站/优化关键词软件
  • 做网站职校选什么专业/aso优化重要吗
  • 电子商务网站建设与维护总结/口碑营销
  • 龙岗网站建设公司哪家好/网站的seo如何优化
  • wordpress主题+清新/网站排名软件优化
  • wordpress安装空白/快优吧seo优化
  • 网站建设客源开发/网站设计费用明细
  • 做 网站 技术支持 抓获/朝阳区搜索优化seosem
  • 英文网站建设模板下载/网站管理和维护的主要工作有哪些
  • 工厂网站开发/网站制作出名的公司
  • 网站安全的必要性/企业网站营销实现方式
  • 自己如何建设外贸网站建站/seo搜索引擎优化师
  • 网站做快照怎么做/百度快速提交入口
  • 三明市建设局网站/管理系统