推荐花椒直播服务端的 4 个开源项目

Posted 程序IT圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐花椒直播服务端的 4 个开源项目相关的知识,希望对你有一定的参考价值。

新年伊始,花椒直播服务端系统开发组对多个内部广泛使用到的基础服务开源,包括之前介绍过的总线系统和分布式 cron 管理:

  • gokeeper - 集中化配置管理中心

  • pepperbus - 花椒直播总线系统

  • peppercron - 花椒直播分布式 cron 管理

  • dashboard - pepperbus & peppercron 操作后台

gokeeper

  • https://github.com/huajiao-tv/gokeeper

  • docker 镜像仓库:docker pull huajiao/gokeeper


gokeeper 是一个基于 go 语言编写的集中化配置管理中心,支持服务发现功能,默认使用 ETCD 作为后端配置存储(可支持 consul, zokeeper 等),支持单节点或集群方式部署。

运行

前提条件

  • 本地配置 Docker 环境及 docker-compose

  • Clone gokeeper 代码至本地

启动 gokeeper

  • 进入 deploy/docker_compose 目录

  • 执行 docker-compose up -d

集中配置

gokeeper 支持 go 语言内置的 gob 编码,并支持 go 语言的大部分数据类型及复合结构:

bool, []boolint, int64[]int, []int64float64, []float64string, []stringmap[string]string, map[string]int, map[string]boolmap[int]string, map[int]int, map[int]boolmap[string][]string, map[string]struct{}, map[int]struct{}time.Duration

除以上 go 语言类型外,还持将 json 字符串到自定义类型的映射,配置类型为 json

此外,为了兼容其它语言,gokeeper 还支持使用 gRPC 协议,目前其它语言的 SDK 仍在开发测试中。

接入

  • 引入 go get -u github.com/huajiao-tv/gokeeper

  • 使用自定义的 ini 格式定义配置

    ini 文件使用 <key> [type] = [value] 的格式,如果不指定类型,默认为 string

  • 生成配置对象

go get -u github.com/huajiao-tv/gokeeper/cmd/gokeeper-cli$GOPATH/bin/gokeeper-cli -in ./ini_file_path -out data
  • gokeeper client

//your sections to usesections := []string{"test.conf/DEFAULT"}
//gokeeper.WithGrpc() will use grpc to connect gokeeper server,otherwise use gorpcclient := gokeeper.New(keeperAddr, domain, nodeID, component, sections, nil, gokeeper.WithGrpc())client.LoadData(data.ObjectsContainer).RegisterCallback(run)if err := client.Work(); err != nil { panic(err)}

服务发现

原理

推荐花椒直播服务端的 4 个开源项目

特性

  • client 端服务注册与发现的接口只与 gokeeper 交互,不关心 gokeeper discovery 后端存储

  • 服务的订阅者只订阅自己感兴趣的服务,没有订阅的服务不会得到信息变动的推送

  • gokeeper discovery 与后端存储建连,监听服务的节点信息变化,如果有增删节点,discovery实时将信息推送给服务的订阅者

  • 在 client consumer 与 gokeeper discovery 不通的情况下,原有的节点可用

  • 负载均衡策略由后台配置,通过 gokeeper 写到存储中,各个 gokeeper discovery 节点同步更新,然后通过 gokeeper 同步给各个 Service Consumer

接入

  • 引入 go get -u github.com/huajiao-tv/gokeeper/client/discovery

  • Service Provider

instance := discovery.NewInstance(discovery.GenRandomId(), "demo.test.com", map[string]string{discoverry.SchemaHttp: "127.0.0.1:17000"})instance.Id = "test_id_1"
client := discovery.New( // gokeeper server address(grpc address) "127.0.0.1:7001", // registry service discovery.WithRegistry(instance), discovery.WithRegistryTTL(60*time.Second), // schedule strategy,default:random discovery.WithScheduler(map[string]schedule.Scheduler{ "demo.test.com": schedule.NewRoundRobinScheduler(), }),)
  • Service Consumer

// start gokeeper clientclient := discoverry.New( // gokeeper server address(grpc address) "127.0.0.1:7001", // subscribe a group of service discovery.WithDiscovery("example_client1", []string{"demo.test.com"}),)
// TODO
// get service addressaddr, err := client.GetServiceAddr("demo.test.com", discovery.SchemaHttp)if err != nil{ // TODO}

pepperbus

  • https://github.com/huajiao-tv/pepperbus

  • docker 镜像仓库:docker pull huajiao/pepperbus

peppercron

  • https://github.com/huajiao-tv/peppercron

  • docker 镜像仓库:docker pull huajiao/pepperbus

dashboard

  • https://github.com/huajiao-tv/dashboard

  • docker 镜像仓库:docker pull huajiao/dashboard

dashboard 是为了简化 pepperbus 和 peppercron 的使用,根据花椒直播的业务需求开发的通用管理后台。

dashboard 使用说明

启动

Clone 代码至本地后,执行 docker-compose up -d,会创建以下容器:

  • redis - pepperbus 消息落地存储

  • mysql - 后台 dashboard 数据库

  • gokeeper_etcd - gokeeper 及 peppercron 使用的 ETCD

  • gokeeper - 配置中心

  • peppercron - 分布式 cron 管理服务

  • php-fpm - 总线 php 消费

  • pepperbus - 总线系统

  • dashboard - pepperbus & peppercron 管理操作后台

登录

浏览器登录 localhost:8360,启动后的默认账户为:

  • 默认管理员:admin

  • 密码:

  • admin@pass (在 config.yaml 中指定)

创建系统

推荐花椒直播服务端的 4 个开源项目

pepperbus 总线

为系统添加 pepperbus 服务器

推荐花椒直播服务端的 4 个开源项目

为系统添加 redis 存储

推荐花椒直播服务端的 4 个开源项目

添加队列

推荐花椒直播服务端的 4 个开源项目

为队列添加两个 Topic

代码仓库中的 example/php/consume.php 已经通过 php 的 SDK 实现了两个消费者,分别为:queue1/topic1queue1/topic2。其中 topic1 默认返回成功,topic2 默认返回失败。

推荐花椒直播服务端的 4 个开源项目

测试 Topic

  • topic1

推荐花椒直播服务端的 4 个开源项目

  • topic2

推荐花椒直播服务端的 4 个开源项目

peppercron 任务管理

为系统添加 peppercron 任务服务器

推荐花椒直播服务端的 4 个开源项目

添加任务

推荐花椒直播服务端的 4 个开源项目

测试任务

启动之前可以先测试任务是否配置正常

推荐花椒直播服务端的 4 个开源项目

推荐花椒直播服务端的 4 个开源项目

修改任务输出至文件

推荐花椒直播服务端的 4 个开源项目

验证任务执行结果



以上是关于推荐花椒直播服务端的 4 个开源项目的主要内容,如果未能解决你的问题,请参考以下文章

iOS项目 -- 模仿花椒直播做的第一层次界面

Golang实践之花椒直播总线系统

“不安分”的花椒直播,搞了史上首个网红演唱会

案例分享 | 深度学习在花椒直播中的应用 — 神经网络与协同过滤篇

如何把直播嵌入网页

推荐4个不错的开源项目