java 池化_【java】如何理解池化技术?

Q1: 如何理解池化技术?

我的理解是:

比如连接池,就是将连接看作一个资源,放到一个pool里,有一个调度器(不知道这个说法正不正确)根据请求来调度这些连接。连接池的作用是避免每一次使用都要建立连接、销毁连接等这方面的开销。

Q2: php-fpm 可以算是一个连接池吗?

如果 Q1 我的理解正确,那么 php-fpm 算连接池吗? 因为我有看到 php-fpm 会有一个 pool.d 的目录。

如果 php-fpm 算,那么 fastcgi 的其他实现也都算吗? nginx 的 master worker 进程算吗?

Q3: 除了连接池,还有其他的池化技术吗?

回答

Q1:你说的这个是一个方面,我认为还是并发量的限制才会带来“池化”技术,假如mysql只能维持256个长连接,但是我们有1000000个用户每天嗷嗷待哺,那么就得帮mysql请一个经纪人,不管多少人访问,mysql本体都不需要一直处理连接,只需要管好怎么处理数据库相关的部分就好了(仔细想想,这样事务独立性不就被打破了么….)。

Q2:php-fpm不是连接池(网络的),大概可以叫:进程池(本地的)。

Q3:只要是有限的资源,都可以被“池化”。

个人主观观点,仅供参考,如有不足,评论交流~

php-fpm就是fastgi协议的的实现,另外还有内存池、线程池等,php-fpm和nginx master process一方面属于算进程管理器,需要的时候才fork新的进程,当然预设部分也就是进程池了,池化的技术可以这么理解,预设一部分资源,需要的时候直接使用,避免创建过程的开销

java是内存常驻语言,池化技术比较常见,一般池化技术用在有效控制资源和复用而节约系统资源开销;比如

1、假设每一个请求需要操作dba,这个时候每一个并发都需要一个数据库链接session,如果系统并发很大,假设1000,没有池化技术就会同时有1000个session,这很容易导致系统资源崩溃。用上池化技术后,设置池中最大数量上限,高并发下就限制了数据库连接session最大数量了,池化技术核心是复用,这也就不存在session频繁创建和销毁而浪费系统资源,另外一般池化技术几乎都是放在内存中,所以寻找和管理的效率相当高,几乎没有io方面导致的性能问题。

2、另外java中还有线程池概念,复用线程用的;高并发下,既可以有效控制住系统线程过多,也避免了线程创建和销毁浪费系统资源。

5年没有搞php开发了,对于php5后面发展出来的技术已经没有任何了解,见谅不懂php-fpm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值