当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

Pike-HTTPCache

高效简单的 HTTP 缓存服务
授权协议 MIT
开发语言 Google Go
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 唐元青
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Pike:HTTP缓存服务,提供高效简单的HTTP缓存服务,类似于varnish但配置更简单。

Pike由最开始基于fasthttpfasthttp的性能的确很高效,但该项目在2017年底之后就没有commit,提的issue也没有反馈,BUG只能自己修复,因此后续切换至echoecho的大部分增强的功能都基本没使用到,自带的http已足够满足现有的业务场景,最终选择了直接使用自带的http,版本1.0.0也正式发布。

简洁的配置:

# HTTP response header 中的 Pike 
name: Pike
# 程序监听的端口,默认为 :3015
listen: :3015
# 数据缓存的db文件(必须指定)
db: /tmp/pike.cache
directors:
  -
    # 名称
    name: tiny 
    # backend的健康检测,如果不配置,则默认判断该端口是否被监听
    ping: /ping
    # prefix与host是AND的关系
    # 判断请求url的是否包含该前缀,如果是,则是此director
    prefixs:
      - /api
    # backend列表
    backends:
      - http://127.0.0.1:5018
  -
    name: npmtrend
    ping: /ping
    hosts:
      - npmtrend.com
    backends:
      - http://127.0.0.1:5020
      - http://127.0.0.1:5021

特性

  • 基于yaml的配置,简洁易懂

  • WEB管理后台,提供节点监控、系统性能、缓存清理功能

  • 标准化的基于HTTP头Cache-Control缓存控制

  • 压缩保存的响应数据,避免每次响应时重新压缩(如果客户端不支持压缩则解压)

  • 自定义日志格式,支持二十多种placeholder,如:cookie,请求头字段,响应头字段,响应时间等

  • 访问日志支持以文件(按天分隔)或者UDP的形式输出

  • 支持自定义HTTP请求、响应头配置

  • 支持自定义最小压缩长度,对于内网之间的访问,避免压缩、解压的时间损耗

  • 支持自定义文本压缩级别与指定压缩数据类型

  • 根据客户端智能选择响应数据压缩方式:gzip或者brotli

性能

测试机器:8核 8GB内存,测试环境有限,wrk与测试程序均在同一机器上运行

wrk -H 'Accept-Encoding: gzip, deflate' -t10 -c2000 \
-d1m 'http://127.0.0.1:3015/api/i18ns' --latency --timeout 3s

Running 1m test @ http://127.0.0.1:3015/api/i18ns
  10 threads and 2000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   203.61ms  226.35ms   3.00s    85.52%
    Req/Sec     1.31k   240.96     3.15k    74.11%
  Latency Distribution
     50%  157.26ms
     75%  315.03ms
     90%  506.21ms
     99%  963.79ms
  785711 requests in 1.00m, 4.13GB read
Requests/sec:  13075.99
Transfer/sec:     70.40MB

安装

因为pike支持br的压缩处理,此功能需要依赖于动态库,建议直接使用打包好的docker镜像:vicanso/pike:1.0.0,相应编译好的动态库(ubuntu)也可以在github中的release中下载。

docker run -d --restart=always \
  -p 3015:3015 \
  -v /data/pike/config.yml:/etc/pike/config.yml \
  --name=pike \
  vicanso/pike

结语

Pike在性能已超过10k/rps,对于大部分的网站已经能满足性能上的需求,如果对于性能有更高要求的可以不使用docker的形式执行,或者直接使用varnishPike性能虽然比不上varnish,但它的配置更简单,而且也有直观的管理后台功能,如果有兴趣试用,可以在github上向我反馈。在此,感恩不言谢!

注:管理后台体验http://xs.aslant.site:3000/pike/index.html#/,token是abcd

  • 安装keystone服务 1、安装软件包 yum install openstack-keystone httpd mod_wsgi mod_ssl -y 2、修改http配置文件(三台主机执行) cp -a /etc/httpd/conf/httpd.conf  /etc/httpd/conf/httpd.conf_bak  sed  -i  "s/#ServerName www.example

  • 1、集群安装配置(pacemaker三个节点执行) yum install -y lvm2 cifs-utils quota psmisc pcs pacemaker corosync fence-agents-all resource-agents 2、启动服务并且设置开机自启动(三个节点执行) systemctl start pcsd systemctl enable pcsd 3、修改管理员

  • 部署dashboard 1、首先安装dashboard软件包 yum  -y install openstack-dashboard 2、修改配置文件 /etc/openstack-dashboard/local_settings ALLOWED_HOSTS = ['*', 'localhost'] OPENSTACK_API_VERSIONS = { #    "data-processing"

  • nova安装 1、首先创建nova数据库,并且赋予数据库权限 mysql -u root -p123456 CREATE DATABASE nova_api; CREATE DATABASE nova; CREATE DATABASE nova_cell0; CREATE DATABASE  nova_placement ; GRANT ALL PRIVILEGES ON nova_placeme

  • 第1章 环境准备 1.1 openstack各个版本安装包地址 https://buildlogs.centos.org/centos/7/cloud/x86_64/ 至少两台centos 7或以上系统服务器 1.2 主机名解释 cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.loca

  • 作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ Nova 安装软件包 # yum install openstack-nova-compute -y 修改配置文件/etc/nova/nova.conf [DEFAULT] enabled_apis = osapi_compute,metadata firewall_driver = nova.virt

  • 作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ 安装rpm包 # yum -y install openstack-dashboard 修改配置文件 /etc/openstack-dashboard/local_settings ALLOWED_HOSTS = ['*', 'localhost'] OPENSTACK_API_VERSIONS = {

  • 作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ 1、安装软件包(三个节点) yum install memcached python-memcached -y 2、修改memcache配置文件(三个节点) 修改vim /etc/sysconfig/memcached配置文件 cat <<END > /etc/sysconfig/memcached POR

  • 作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ 创建数据库ova_api, nova, and nova_cell0 databases: # mysql -u root -pChangeme_123 CREATE DATABASE nova_placement ; CREATE DATABASE nova_cell0 ; CREATE DATAB

  • 作者:【吴业亮】 博客:https://wuyeliang.blog.csdn.net/ 创建用户 # openstack user create --domain default --project service --password Changeme_123 neutron 赋予neutron用户admin权限 # openstack role add --project service

  • devstack部署Pike版本的OpenStack 本文记载的是个人环境的使用devstack部署的一个案例,仅供参考。 ■环境 系统:Ubuntu 16.04 LTS OpenStack 版本:Pike ■环境构成 两块IP, 一块是enp0s3,用于连接外网,使用virtualbox的NAT网络,另外一个块enp0s8 使用的hostonly网络。 2: enp0s3: <BROADCAST

  • 本文存储节点直接用的计算节点,所有的cinder 服务都在计算节点上操作,且cinder-volumes 安装在计算节点上 在kvm 环境中生成一个数据盘 [root@kvm images]# qemu-img create -f raw storage.raw 100G Formatting 'storage.raw', fmt=raw size=107374182400 把数据盘添加到计算节点

  •   主机环境:ubuntu 18.04 devstack版本:pike 安装devstack过程中出现了多个问题,经过几天的摸索,终于安装成功,详细的步骤如下: 1、设置网卡并重启主机 cd /etc/network vi interfaces auto enp0s3 iface enp0s3 inet static address 192.168.104.10 network 255.255.2

 相关资料
  • 本文向大家介绍超简单的Python HTTP服务,包括了超简单的Python HTTP服务的使用技巧和注意事项,需要的朋友参考一下 超如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等。那么, Python 可能帮助你。使用Python可以完成一个简单的内建 HTTP 服务器。于是,你可以把你的目录和文件都以HTTP的方式展示出

  • 我有一个页面,它向同一个位置发出超文本传输协议请求,只是根据用户的需求使用不同的参数。所以我的代码看起来像这样: 例如,在 JQuery 中,您在框架中构建了一个缓存属性,该属性会自动缓存并且非常容易实现: Angular2有类似的东西吗?只要用户在应用程序中,我就希望缓存这些动态响应。因此,如果用户使用相同的参数请求相同的url,那么它只会从缓存中获取它,如果参数从未被使用,那么它会进行网络调用

  • 问题内容: 我正在寻找一个简单的Java内存缓存,该内存具有良好的并发性(因此LinkedHashMap不够好),并且可以定期序列化到磁盘。 我需要但很难找到的一个功能是一种“窥视”对象的方法。我的意思是从缓存中检索对象,而不会导致缓存对对象的保留时间超过其应有的保留时间。 更新: 我忽略提到的另一个要求是,我需要能够就地修改缓存的对象(它们包含浮点数组)。 谁能提供任何建议? 问题答案: 自从最

  • 除了前面章节讲到的服务器端缓存外, Web 应用还可以利用客户端缓存 去节省相同页面内容的生成和传输时间。 通过配置 yii\filters\HttpCache 过滤器,控制器操作渲染的内容就能缓存在客户端。 HttpCache 过滤器仅对 GET 和 HEAD 请求生效, 它能为这些请求设置三种与缓存有关的 HTTP 头。 Last-Modified Etag Cache-Control Las

  • 本文向大家介绍C++实现简单的HTTP服务器,包括了C++实现简单的HTTP服务器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++实现HTTP服务器的相关代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 问题内容: 我有一个Angular应用程序,其中包含基于Angular的内置服务的许多服务。其中许多使用来创建自己的独立缓存。但是,我想在有人注销时将所有这些(命名的高速缓存和“默认” 高速缓存)销毁。现在,我可以使用来完成此操作,该功能当然可以工作,但是如果有可能在不完全更改应用程序结构的情况下不重装就可以实现。 需要澄清的是,我知道如果引用范围内的单个缓存,则可以删除缓存的值,但是我想做的是全