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

网页制作作业网站网站可以称为系统吗

网页制作作业网站,网站可以称为系统吗,经典seo伪原创,网站开发技术的发展流程node node单线程#xff0c;没有并发#xff0c;但是可以利用cluster进行多cpu的利用。cluster是基于child_process的封装#xff0c;帮你做了创建子进程#xff0c;负载均衡#xff0c;IPC的封装。 const cluster require(cluster); const http require(http); if (clu…node node单线程没有并发但是可以利用cluster进行多cpu的利用。cluster是基于child_process的封装帮你做了创建子进程负载均衡IPC的封装。 const cluster require(cluster); const http require(http); if (cluster.isMaster) { let numReqs 0; setInterval(() { console.log(numReqs ${numReqs}); }, 1000); function messageHandler(msg) { if (msg.cmd msg.cmd notifyRequest) { numReqs 1; } } const numCPUs require(os).cpus().length; for (let i 0; i numCPUs; i) { cluster.fork(); } for (const id in cluster.workers) { cluster.workers[id].on(message, messageHandler); } } else { // Worker processes have a http server. http.Server((req, res) { res.writeHead(200); res.end(hello world\n); process.send({ cmd: notifyRequest }); }).listen(8000); } 我们通过cluster.fork()来创造几个子进程让子进程来替我们工作。在fork的时候会传一个参数到子进程cluster.isMaster就是根据有没有这个参数判断的。 如果是子进程就起一个server。 每个子进程都会绑定到8000端口这不会引起端口占用吗 答案是不会因为listen并不会真的监听到8000端口它会通过IPC把子进程的消息传到主进程主进程会创建服务器然后调用子进程的回调。 在子进程的回调中子进程会根据主进程是否返回handle句柄来执行下一步的操作如果没有handle句柄说明在负载均衡的策略没有选中本进程。那么就自己造一个handle对象返回。 那自己造个对象怎么返回请求呢 请求到主进程主进程会分发请求处理到该请求的子进程会通过IPC与主进程通信这样就完成了一个请求的响应。 通过cluster完成单机器的负载均衡那么多机器呢还是得用nginx。 node pm2 pm2 是node的进程管理工具它封装了cluster可以通过命令行来创建多个进程来处理。 写个config文件 app.json { name : app, script : src/main.js, watch : true, merge_logs : true, instances : max, // 使用cluster error_file : ./log/error.log, out_file : ./log/asccess.log, pid_file : ./log/pid.pid, cwd : ./, max_restarts : 10, min_uptime: 10s, env: { NODE_ENV: development, BABEL_ENV: node }, env_prod : { NODE_ENV: production } } pm2 start app.json 也可以不写配置文件直接写pm2 start -i 4 --name server index.js 开启4个instance。 通过参数开启多个子进程而不需要修改我们的业务代码。 go go也是非阻塞ioGolang默认所有的任务都在一个cpu核里如果想使用多核来跑goroutine的任务需要配置runtime.GOMAXPROCS。 自从Go 1.5开始 Go的GOMAXPROCS默认值已经设置为 CPU的核数我们不用手动设置这个参数。 我们先说说go的并发。 go本身就可以通过go关键字来进行并发操作。go关键字创建的并发单元在go中叫goroutine。 比如 package main import ( fmt time // runtime ) func main() { go func(){ fmt.Println(123) }() go func(){ fmt.Println(456) }() // runtime.Gosched() fmt.Println(789) time.Sleep(time.Second) } 会打印789 123456或者 780456123。 在主线程开始就通过go字段开启了2个goroutine两个goroutine的执行顺序不确定。 如果当前goroutine发生阻塞它就会让出CPU给其他goroutine。 如果当前goroutine不发生阻塞一直在执行那么什么时候执行其他goroutine就看go调度器的处理了。 不过go提供runtime.Gosched()来达到让出CPU资源效果的函数当然不是不执行会在之后的某个时间段执行。如果把注释去掉789就会最后执行。 单核的时候其实goroutine并不是真的“并行”goroutine都在一个线程里它们之间通过不停的让出时间片轮流运行达到类似并行的效果。 如果我在123或者456之前加 time.Sleep(time.Second)。那么CPU的资源又会转让回主进程。 当一个goroutine发生阻塞Go会自动地把与该goroutine处于同一系统线程的其他goroutines转移到另一个系统线程上去以使这些goroutines不阻塞主线程返回的时候goroutines又进入runqueue 下面这段代码 import ( fmt runtime ) var quit chan int make(chan int) func loop() { for i : 0; i 100; i { //为了观察跑多些 fmt.Printf(%d , i) } quit - 0 } func main() { runtime.GOMAXPROCS(1) go loop() go loop() for i : 0; i 2; i { -quit } } 会打印什么呢 runtime.GOMAXPROCS(2)改成双核cpu又会打印什么呢 我们能看到双核cpu的时候goroutine会真正的并发执行而不是并行。他们会抢占式的执行。 参考https://studygolang.com/articles/1661 python python是有多线程的但是python有gil影响了他的多cpu利用。 GIL是CPython中特有的全局解释器锁 这把锁在解释器进程中是全局有效的它主要锁定Python线程的CPU执行资源。 想要执行多核的进程需要满足2个条件 被操作系统调度出来【操作系统允许它占用CPU】 获取到GIL【CPython解释器允许它执行指令】 python在单核cpu上执行没有问题这个线程总能获得gil但是在多核的时候线程会出现竞争GIL只能同时被一个线程申请到没申请到的就会被阻塞就会一直处于闲置状态。 到线程切换时间然后睡眠被唤醒之后获取gil又失败恶性循环。 特别是计算型线程会一直持有gil。 GIL 可以被 C 扩展释放Python 标准库会在每次 I/O 阻塞结束后释放 GIL因此 GIL 不会对 I/O 服务器产生很大的性能影响。因此你可以 fork 进程或者创建多线程来创建网络服务器处理异步 I/OGIL 在这种情况下并没有影响。 解决方案 使用python3.4或更高版本对GIL机制进行了优化 使用多进程替换多线程多进程之间没有GIL但是进程本身的资源消耗较多 指定cpu运行线程使用affinity模块 全IO密集型任务时使用多线程 协程 gevent模块 Python 3.2开始使用新的GIL。新的GIL实现中用一个固定的超时时间来指示当前的线程放弃全局锁。在当前线程保持这个锁且其他线程请求这个锁时当前线程就会在5毫秒后被强制释放该锁。 总结 node是没有多线程的利用的只能用多进程来利用多核cpupython因为gil的问题也没法完全利用多线程但是有一些神奇的方案可以利用比如指定cpu运行。 go的实现是比较好的毕竟是后来的语言可以多核跑协程来利用cpu
http://www.sadfv.cn/news/64151/

相关文章:

  • 太原市建站外包公司wordpress标题转英文
  • 众美商务公馆做网站杭州建设网址
  • 怎么做网站里导出没有水印的图桂林户外论坛
  • 怎么做电商平台网站腕表手表网站
  • 一级a做爰片免费网站 视频医疗云网站建设
  • psd做网站切片云服务器 能用来做网站吗
  • 高校网站群建设方案丰城网站建设公司
  • 优质校建设网站有专门做预算的网站没
  • 北京网页制作网站wordpress访问速度突然好慢
  • 织梦保险网站源码博客新手wordpress
  • 沈阳外贸网站建设寻找外贸客户的网站
  • 用jsp做视频网站营销网站制作哪家好
  • 上海专业做网站公司有哪些网站开发英文文献
  • 网站建设可行性实施报告网页制作工具的英文名
  • 网站ui设计软件工业设计招聘信息网站
  • 沧州网站建设 网络服务高质量的赣州网站建设
  • ck播放器做解析网站优化课程设置
  • 网站建设需要工作计划社区门户网站模板
  • 广告传媒网站模板嘉峪关建设局公告网站
  • 网站优化就是搜索引擎优化无极网址
  • 个人可以建论坛网站吗个人简历模板下载可编辑
  • 网络电话聊天网站建设多少钱山西太原网站建设公司
  • 深圳住房和建设局网站置换平台网站认证金额怎么做分录
  • 请求做女朋友的网站源码用dede做的网站首页
  • 网站关键词优化报价wordpress完成静态化
  • 网站建设与规划实训总结网页游戏开发技术
  • 企业网站推广的方法有免费网站大全下载
  • 公司网站更换域名流程北京市西城区住房建设局官方网站
  • 租车公司网站 模板chat gpt 国内版
  • 网站开发tt0546上海做网站推广公司