《基于Nodejs的数据库中间层q.pptx》由会员分享,可在线阅读,更多相关《基于Nodejs的数据库中间层q.pptx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Node.js的数据库中间层王达心2013.4OverviewWhatstheproblem?ChallengesWhyNode.js?ExperiencesonNode.jsWhatstheproblem?读写分离分库分表DB虚拟化DB保护ArchitectureChallenges10K+ConnectionsStabilityFastDevelopmentCompatibilityFlexibleconfigurationWhyNode.js?HighPerformanceforhighlyconcurrentI/OInterfaceofJavascript,heartofC+Eve
2、rythingNon-blockNoLockVariousmodules高并发服务解决方案多线程+同步开多少线程合适?CPU_NUM/(1-等待耗时占比)不怕死,就怕慢异步轻量级线程简化异步复杂度ClassA.prototype.process_req=function(req,res).if(failed)if(this.retried)res.send(error);return;this.retried=true;varself=this;setTimeout(function()self.process_req(req,res);,1000);return;res.send(resul
3、t);简化异步复杂度varself=this;setTimeout(function()self.process_req(req,res);,1000);-setTimeout(this.processReq.bind(this,req,res),1000);更好地利用NUMA?平滑重载/重启重载配置重载代码?重启进程Nodecluster处理完客户端+服务端请求再退出先起新进程,再退旧进程deleterequire.cachelogger_conf_path;varlog_conf=require(logger_conf_path);PerformanceEnvironment:CPU:E5
4、6452.40GHz2*6(multiprocess)Linuxkernel:node.jsversion:singlekvqueryQPS(LongConnection):100KResourceconsumptioncpuidle:0%,mem:70MB/process开发效率代码行数开发时间服务稳定性性能分析和优化Whatstheproblem?ChallengesWhyNode.js?ExperiencesonNode.jsGCissues-trace_gc70MB,nomorethan3msIdlenotificationDeprecatedsincev0.10-max_old_sp
5、ace_size异步写性能问题多进程负载均衡Clustermodule长连接process.send(msg,handle);零零碎碎能直接用Buffer的就不转换成string能用binary编码的string就不用默认utf8多用domain,少用try-catch监控CPU空闲(单核)和内存增长V8特性闭包未使用的外部变量不需要回收变量作用域深度与访问速度无关try-catch影响优化TestMocha+Sinonjscoverageut+ft-coveragePerformance Profilingnode-webkit-agent1.require(node-webkit-agent);2.kill-sigusr2process_id3.openinchromeCPU ProfilingHeapsnapshots一些缺点javascript语言发展受限于浏览器异步复杂度多核利用process.on(exit,function()console.log(Q&A););daxin11