特性

  • 向用户暴露节目的别名 URL ,在用户访问时重定向至真实的目标资源 URL ,以高效地进行 CDN 切换和便捷地建立失效转移机制。
  • 异步转发请求至统计服务,以解耦用户请求和数据统计,可方便地接入多个数据统计服务或替换失效的统计服务。
  • 内建针对数据库的本地缓存层以提供高性能的服务并降低攻击流量带来的影响。
  • 内建基于 Prometheus 的监控和统计系统。

快速开始

环境要求

  • MySQL: 用于播客和节目数据持久存储。
  • Golang: 用于编译项目。
  • Nginx(推荐): 反向代理原始的 podistributor 服务,以加入限流、HTTPS 等机制。
  • Prometheus(可选的): 结合内建的数据统计埋点对系统进行监控和统计。

安装

首先按照 SQL example 将数据库和数据表结构导入 MySQL 实例中。

随后使用 Golang 编译源码:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o podistributor main.go
chmod 773 podistributor
./podistributor -decryptKey <AES 加密密钥> -configLocation <配置文件的目录地址>

decryptKeyconfigLocation 为必传参数,其他参数可参照 config file example 配置于文件中。

除了独立运行程序,还可以借助 systemd 开启守护进程以作为服务运行。可在 /usr/lib/systemd/system/ 添加如下配置并保存为 podistributor.service

[Unit]
Description=podistributor
After=network.target [Service]
Type=simple
User=root
ExecStart=/usr/sbin/podistributor/podistributor -decryptKey <AES 加密密钥> -configLocation <配置文件的目录地址>
StandardOutput=append:/var/log/podistributor.log
StandardError=append:/var/log/podistributor.log
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always [Install]
WantedBy=multi-user.target

接着我们就可以将程序作为 systemd 的服务来运行并支持开机自启动:

systemctl enable podistributor
systemctl start podistributor

使用

访问播客数据

如下格式的请求将会被解析并重定向至真实资源地址:

<protocal http or https>://<domain or ip>:<Optional listen port if using nginx>/<listenPath>/<podcast unique name>/ep/<episode unique name>

系统将根据播客 DB 配置中的等级字段来在资源 uri 集合中确定重定向的目标 url ,此等级即可理解为资源集合数组的数组索引。

此外,若主 uri 资源列表均不可用,可将播客 DB 配置中的备用 url 标识字段设置为 true ,系统即将根据备用资源等级字段来在备用资源 uri 集合中确定重定向的目标 url 。同理,这里的备用资源等级字段亦为备用资源 uri 集合数组的数组索引。

若配置了统计 URL 列表,则所有的统计 URL 都将被异步请求,请求是否成功均不影响原始请求。

访问统计信息

Podistributor 借助 Prometheus 的 client_golang 进行指标统计并将数据以 HTTP 接口的形式向外暴露,默认 HTTP 端口号为 11800 ,可在 podistributor-confi.yaml 修改 monitorPort 的值以指定其他端口。

curl http://127.0.0.1:11800/metrics

对于 Prometheus 服务端,只需在配置文件 /etc/prometheus/prometheus.yml 中新增数据拉取 job 即可:

...
- job_name: 'podistributor'
static_configs:
- targets: ['127.0.0.1:11800']
labels:
instance: pod-instance
...

授权协议

Apache License 2.0

博客链接:https://easonyang.com/2021/02/19/podistributor-cn-readme/

关注公众号「举一得一」获取最新文章更新

Podistributor播客分发系统介绍的更多相关文章

  1. 【传智播客】Libevent学习笔记(二):创建event_base

    目录 00. 目录 01. 简介 02. 创建默认的event_base 03. 创建复杂的event_base 3.1 event_config_new函数 3.2 event_base_new_w ...

  2. 传智播客--ADO.net--SqlBulkCopy批量插入数据(小白必知)

    一般情况下,我们在向数据库中插入数据时用Insert语句,但是当数据量很大的时候,这种情况就比较缓慢了,这个时候就需要SqlBulkCopy这个类. SqlBulkCopy本身常用的函数有这么几个 D ...

  3. 传智播客--高级控件--showdialog关闭(小白内容)

    以往我在WPF里,用ShowDialog展示出一个页面,一般都是用Close()进行关闭. 今天看传智播客的视频时,了解到还能直接给DialogResult一个TRUE或者false的属性,使页面关闭 ...

  4. 传智播客DotNet面试题

    技术类面试.笔试题汇总(整理者:杨中科,部分内容从互联网中整理而来) 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化 ...

  5. php 解析 视频 信息 封面 标题 图片 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视

    原文地址:http://www.lianyue.org/2013/2497/ <?php /** * 解析 视频信息 类 * * 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视 ** ...

  6. 大前端时代已经到来!传智播客2015之WEB前端视频教程(全套教程共15G)

    大前端时代已经到来!传智播客2015之WEB前端视频教程(全套教程共15G)大前端时代已经到来!如今,前端开发工程师的职责,不是只有切图.制作网页这么简单哦! G:\传智播客2015-WEB前端视频教 ...

  7. 【.NET】传智播客第【19】期就业班视频(高清无加密)

    [.NET]传智播客第[19]期就业班视频(高清无加密) 下载地址:http://fu83.cn/thread-85-1-1.html

  8. 【高清未加密】2015传智播客 最新21期c#asp.net 基础到就业班视频和源码

    [.NET]传智播客第[21]期就业班视频(高清无加密)本套2015年21期传智播客C#ASP.NET win10通用mvc+app开发视频教程附源码,是一套非常不错的asp.net自学视频教程,传智 ...

  9. 传智播客JavaWeb day01 快捷键、XML

    2015-01-14 一直计划着学习java,今天晚上终于下定决心看了下传智播客朴乾老师的javaweb开发视频day01之第一讲,主要内容是开发工具简单介绍.怎么创建工程.Junit的介绍,我是C# ...

随机推荐

  1. [leetcode] 212. 单词搜索 II(Java)

    212. 单词搜索 II 这leetcode的评判机绝对有问题!!同样的代码提交,有时却超时!害得我至少浪费两个小时来寻找更优的答案= =,其实第一次写完的代码就可以过了,靠!!!第207位做出来的 ...

  2. Django settings 描述

    """ Django settings for log_collect_statistics project. Generated by 'django-admin st ...

  3. Go基础结构与类型05---程序运算

    package main import ( "fmt" "math" ) func main() { /*加减乘除,求余*/ fmt.Println(" ...

  4. ADAS超声波雷达

    ADAS超声波雷达 在倒车入库,慢慢挪动车子的过程中,在驾驶室内能听到"滴滴滴"的声音,这些声音就是根据超声波雷达的检测距离给司机的反馈信息. 倒车雷达系统,英文全称为REVERS ...

  5. pytest命令行参数

    1.-v:可以输出用例更加详细的执行信息,如下图 C:\Users\cale\checkapi\test_cc>pytest test_m1.py -v ==================== ...

  6. fiddler概念及原理

    一.什么是fiddler? fiddler是位于客户端与服务器端的HTTP代理,它能够记录客户端与服务器之间所有的HTTP请求,可以针对特定的HTTP请求,分析请求数据,设置断点,调试WEB应用,修改 ...

  7. ConcurrentSkipListSet - 秒懂

    疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 [博客园总入口 ] 疯狂创客圈 经典图书 : <Sprin ...

  8. 关于Maven repository中pom.xml的jar包依赖

    https://mvnrepository.com 该mvn网站可以找到个个版本的依赖jar包  http://doc.canglaoshi.org 该网站为达内的开发文档服务器,可以找到很多开发中需 ...

  9. c 语言学习第一天

    编辑器:Dev-C++ 变量命名(标识符) 变量名只能是英文字母[A-Z,a-z]和数字[0-9]或者下划线[_]组成. 第一个字母必须是字母或者下划线开头. 变量名区分大小写.例如:Fish≠fis ...

  10. SpringCloud Alibaba实战(7:nacos注册中心管理微服务)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节我们已经完成了Nacos Server的本地部署,这一节我们学习如何将Nac ...