特性

  • 向用户暴露节目的别名 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] 874. 行走机器人模拟(周赛)

    874. 行走机器人模拟 模拟 描述方向时有个技巧:int[][] dx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; 分别存储机器人向上.右.下.左走时,坐标应该如何变 ...

  2. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  3. ALD技术产品形态

    ALD技术产品形态 原子层沉积研究设备 TFS 200是适合科学研究和企业研发的最灵活的ALD平台.倍耐克 TFS 200专门设计用于多用户研究环境中把可能发生的交叉污染降至最低. 大量的可用选项和升 ...

  4. Camera HDR Algorithms

    Camera HDR Algorithms HDRI是High-Dynamic Range(HDR)image的缩写,也就是高动态范围图像.它就是为了解决更好的存储高动态范围图像这个问题而发明出来的. ...

  5. application/octet-stream二进制流, springboot项目, postman 测试参数设置

    这里使用 原生String接受,之后解析,

  6. 牛客网sql实战参考答案(mysql版):1-15

    1.查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment) CREATE TABLE `employees ...

  7. WEB 页面认证

    1:安装htpasswd工具生成加密文件 安装工具 # yum install httpd-tools # htpasswd -cm /etc/httpd/passwd/password useraN ...

  8. ffmpeg实战-音视频合成案例

    转发自白狼栈:查看原文 很多小伙伴私下里留言说,之前没接触过音视频,对于ffmpeg可以做什么还是有些懵. 今天我们一起看下我们究竟可以用 ffmpeg 做什么? 很多小伙伴应该都玩过抖音,你在&qu ...

  9. 【VBA】MsgBox用法

    MsgBox用法: Sub subMsgBox() Dim iok As Byte iok = MsgBox("是否XXX", vbYesNoCancel + vbQuestion ...

  10. 『动善时』JMeter基础 — 45、脚本录制工具Badboy介绍

    目录 1.Badboy软件介绍 2.Badboy下载 3.Badboy安装 4.Badboy界面介绍 (1)菜单栏: (2)工具栏: (3)左下角界面视图: 1.Badboy软件介绍 Badboy是一 ...