Zan 连接池

一、设计背景

Zan是基于PHP协程的网络服务框架,提供最简单的方式开发面向C10K+的高并发HTTP服务或SOA服务。 核心特性: 1. 基于 yield 实现了独立堆栈的协程
2. 类似于 Golang 的并发编程模型实现
3. 基于 swoole 提供非阻塞I/O服务
4. 连接池支持
5. 类似 Golang 的defer机制解决由于异常导致的资源未释放、锁未释放的问题
6. .......等

连接池作为其核心特性之一,内置了MySQL、Redis、syslog等多种组件。

二、设计结构

结构图 Zan连接池实现基于PHP协程,在服务启动时通过ConnectionInitiator进行初始化,将初始化好的connection对象被放入连接池中,connection中有操作连接的基本方法。
connection对象 进行初始化时可根据系统需要进行参数配置,示例如下:

<?php  
return [  
    'default_write' => [
        'engine'=> 'mysqli',
        'host' => '127.0.0.1',
        'user' => 'user',
        'password' => 'password',
        'database' => 'db',
        'port' => '3306',
        'pool'  => [
            'heartbeat-time' => 35000,
            'init-connection'=> 5,
            'maximum-connection-count' =>20,
            'minimum-connection-count' =>1,
        ],
    ]
];

连接池的使用也非常方便。

    $connection = (yield ConnectionManager::getInstance()->get($poolName));

性能很好,与传统的方式一个fmp需要建立一个连接相比,Zan连接池常驻内存,资源可共享,存取速度快,性能远远高于传统方式。

三、特点

  • 使用简单。
  • 可动态增减连接。
  • 性能高。
  • 可监控连接池状态。

四、源码

对此连接池感兴趣的朋友,可以在github查看文档和源码,欢迎共同探讨。

QQ群: 115728122

知识共享许可协议
如无特殊说明,本文版权归 本文作者及有赞技术团队 所有,采用 署名-非商业性使用 4.0 国际许可协议 进行许可。
转载请注明:来自有赞技术团队博客 http://tech.youzan.com/zan-connection-pool/

欢迎关注有赞技术团队微信公众账号
了解更多,保持联系