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

java openresty 调用_OpenResty 究竟解决了什么痛点?

OpenResty解决的是高并发的痛点。现在服务的后台大部分是java写的,但是用java写出稳定的高并发服务是很复杂的一件事,首先是服务器的选择,web服务器有几个选型,tomcat,apache,weblogic,还有商用webphere. 1、tomcat官方宣称的并发量是1000,厉害点的做点参数调优,也不过3000并发,如果要开发一个并发百万的服务,1000000/3000,需要1000台服务器,想想都不可能。 2、apache的并发比tomcat更不堪,200-300 3、weblogic的并发稍好,平均能达到3000左右,但是也没有达到好一个数量级

但是nginx就不一样了,处理几万的请求很轻松,内存占用也不高,之前我们只是把它用作负载均衡,没想过当做一个web服务器,OpenResty的出现解决了享受nginx高并发优势的拦路虎,因为nginx是使用异步 事件模型,跟传统的编程思想不一样,而lua是用c解释执行的脚本语言(执行效率很高),可以用传统的同步编程思想上,在nginx请求接进来后处理稍复杂的逻辑。

对于高并发的系统来说,都是基于内存的,或者说是基于缓存的,题主说的用mysql支撑高并发是不现实的,mysql的并发量在4000-8000,超过这个量mysql性能就会急剧下降。一次内存读取的时间是几十纳秒,一次缓存读取是几毫秒,大家可能对纳秒比较陌生,一纳秒等于1秒的1000000000分之一,一毫秒等于1秒的1000分之一,请求过来之后直接走内存读取,在需要和数据库交互的时候把数据写入内存,然后再批量入库,快速响应。

web流量也符合二八原则,百分之八十的流量集中在百分之二十的页面,比如电商的首页,产品详情页,使用openResty支撑产品详情页的高并发访问,在处理订购单,购物车等环节用其他的高并发框架处理,比如java的NIO网络框架netty。

java的netty也是处理高并发的利器,不过我做过测试,整体性能可以达到nginx的80%,所以,脏活累活都让nginx做吧,关键业务用netty。

当然,每个人对高并发的理解可能不太一样,有人说1000并发就是高并发了,有人说1万的并发才是高并发,有人说并发百万才是高并发,OpenResty是可以做到百万并发的(当然需要各种调优),现在大部分业务OpenResty都可以胜任,但是像腾讯10亿用户,1亿的并发,OpenResty就搞不定了。

不同的并发量要应对的东西不一样,比如1000并发,用tomcat,springmvc框架加缓存就可以应对,1万的并发在关键节点使用内存处理也很容易,百万并发就需要linux内核调优,socket缓冲区,文件句柄数,内存池,RPS/RFS SMP等优化也可以达到。千万并发就需要考虑用户态协议dpdk了

相关文章:

  • plsq如何快捷整理代码_plsql常用快捷键
  • php strpose_PHP之strpos
  • win10装debian 双系统_技术|如何拥有一个 Windows 10 和 Debian 10 的双系统
  • redistemplate怎么修改数据_redisTemplate一opsForValue操作
  • linux命令deploy_Linux deploy 超详细入门教程
  • word文档怎么到下一页去写_word文档怎么把下一页的内容移到上一页?
  • 绞车拆装实训报告_千斤顶实训报告.doc
  • incrby redis 最大值_Redis Incrby 命令
  • 包装函数 python_Python 在函数上添加包装器
  • kirin710f是什么处理器_麒麟710F处理器怎么样
  • epoll编程实例客户端_socket采用epoll编程demo
  • pythonsvd内存不足_python – 有没有办法防止numpy.linalg.svd内存不足?
  • python 统计分析apache日志_Apache 日志分析(一)
  • mysql中groupby会用到索引吗_MySQL优化GROUP BY方案
  • php5.6的apaches的dll_win7(64位)php5.6-Apache2.4-mysql5.6环境安装
  • Angular6错误 Service: No provider for Renderer2
  • CAP理论的例子讲解
  • EOS是什么
  • ERLANG 网工修炼笔记 ---- UDP
  • happypack两次报错的问题
  • js面向对象
  • KMP算法及优化
  • maven工程打包jar以及java jar命令的classpath使用
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • python docx文档转html页面
  • session共享问题解决方案
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 对象管理器(defineProperty)学习笔记
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • Android开发者必备:推荐一款助力开发的开源APP
  • 选择阿里云数据库HBase版十大理由
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • !!Dom4j 学习笔记
  • #{} 和 ${}区别
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (转)http协议
  • .cn根服务器被攻击之后
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net开发时的诡异问题,button的onclick事件无效
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [145] 二叉树的后序遍历 js
  • [Android]Android开发入门之HelloWorld
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [CISCN 2019华东南]Web11
  • [CSS3备忘] transform animation 等
  • [docker]docker网络-直接路由模式
  • [EWS]查找 文件夹
  • [Excel] vlookup函数
  • [Flex][问题笔记]TextArea滚动条问题
  • [Latex学习笔记]数学公式基本命令
  • [Linux] 进程间通信基础
  • [MySQL]数据库基础