buaazp / zimg

A lightweight and high performance image storage and processing system.
http://zimg.buaa.us
BSD 3-Clause "New" or "Revised" License
2.69k stars 402 forks source link

关于zimg能否支持保存文档 #142

Open likai2016 opened 8 years ago

likai2016 commented 8 years ago

你好,昨天我编译通过了这个程序,感谢你共享了这么好的程序,所以决定使用在项目中,但我们还是有一些需求有点不一样,下边是我不成熟的想法,想交流一下

1 我们的项目最开始需求是需要一个图片服务器来负载微信,APP,网站的请求上所带的图片。但是现在客户需求不仅仅是图片还有各种文档。我的想法是无论是保存图片或者文档,这个动作应该是一样的。只不过在取图片的时候,图片操作有imagemagick的操作来支持,是不是各种文档在存储中只需要注意分片存储就行了?

2 在[zhttpd.c] post_request_cb,在接受数据的时候用了一个临时的buffer,请问这个buffer能不能用数据节点队列管理起来,因为根据我的经验在socket通信的时候,接受数据这部分是很耗时的,因为缓冲区会很大,接收的数据是文件级别的

3 对于链接内存数据库的链接是不是应该发送心跳包保持链接,或者参照java提供的客户端提供出来一个pool来,这方面我写过很多池,我尝试着写一下

buaazp commented 8 years ago

一看就是老手啊,说的都很在理。我说下我的想法。

  1. 以前一直不想支持除图片外的文件类型,是因为不是图片的话过zimg一下没有任何意义。如果你想支持,需要根据content-type来判断,属于image/*的走imagemagick,不是的直接返回,纯粹退化成了一个HTTP代理。
  2. 直接使用一个buffer确实应对大文件的时候有弊端,基于工作量的权衡就一直懒得改,其实不用队列,可以走stream直接发往后端存储。
  3. hiredis因为没有长链接保活,导致连接超时之后就崩溃(见 #136 ),最近正在头疼这个问题,如果你能帮忙把长链接那块优化一下,实在是太好了!
likai2016 commented 8 years ago

好的 我试试吧,不过项目比较紧,等这个完事的 我慢慢写

likai2016 commented 8 years ago

我写了一个版本加了一个url的处理 -- 参照于 七牛的API做的,而且我想这个处理应该是比较常用的,直接让图片服务器去相对应的机器上下载图片,而不是全部传输到web服务器上

第三方资源抓取 (fetch) 从指定URL抓取资源,并将该资源存储到指定空间中

就是将参数url进行base64解码,然后根据url在去相对应的地方取图片

我下一步想完善以下几点: 1 将程序涉及到存储缓存的地方,能不能直接让存储(内存数据库,。。。。)直接读取socket,如果不能的话,写一个缓冲池 2 将涉及到链接管理的地方全部用连接池管理起来,使用守护线程的方式管理他们的释放 3 判断一下程序唯一的启动性

我刚刚写这个版本没有加多少注释,我想测试测试效率,你在看看写的怎么样

shengxiang200788 commented 7 years ago

@likai2016 李凯可以分享一下您的改进吗? @ @