influxdb-relay项目地址: https://github.com/influxdata/influxdb-relay,主要作为负载均衡节点,写入多个influxdb节点,起到高可用效果。

不多说,开搞~

1、main.go

 package main

 import (
"flag"
"fmt"
"log"
"os"
"os/signal" "github.com/influxdata/influxdb-relay/relay"
) var (
//influxdb-realy启动时接收的配置文件参数,因为是falg.String所以接收的是一个字符串类型的参数
//flag.String 函数第一个参数代表启动时参数的名称,第二个参数代表默认值,第三个参数代表用途描述,此方法返回一个指针
//那么启动realy时应该是这个样子的: ./influxdb-relay -config relay.toml ———— "-config" 就是匹配上面flag.String函数第一个参数, "relay.toml" 是-config的值,这里代表配置文件的路径
configFile = flag.String("config", "", "Configuration file to use")
) func main() {
//flag.Parse是用来解析启动时传入的参数,必须调用
flag.Parse() //如果启动参数,配置文件路径为空
if *configFile == "" {
//记录日志
fmt.Fprintln(os.Stderr, "Missing configuration file")
//打印需要的参数提示,也就是会输出上面flag.String函数第三个参数
flag.PrintDefaults()
//退出
os.Exit()
}
//加载配置文件
cfg, err := relay.LoadConfigFile(*configFile)
//LoadConfigFile方法如下: 主要做的事情是把配置文件反序列化成一个Config对象然后return,也就是cfg
// func LoadConfigFile(filename string) (cfg Config, err error) {
// f, err := os.Open(filename)
// if err != nil {
// return cfg, err
// }
// defer f.Close()
// return cfg, toml.NewDecoder(f).Decode(&cfg)
// }
if err != nil {
fmt.Fprintln(os.Stderr, "Problem loading config file:", err)
}
//根据Config对象 创建relay组件
r, err := relay.New(cfg)
if err != nil {
log.Fatal(err)
}
//定义接收操作系统信号的channel
sigChan := make(chan os.Signal, )
//notify用于监听信号,如果操作系统向当前进程发送中断信号(os.Interrupt 表示中断信号)
signal.Notify(sigChan, os.Interrupt)
//如果接收到中断信号,开一个协程调用relay的Stop方法 停止http监听
go func() {
<-sigChan
r.Stop()
}() log.Println("starting relays...")
//relay 运行
r.Run()
}

2、配置文件 relay.toml

 [[http]]
name = "example-http"
bind-addr = "127.0.0.1:9096"
output = [
{ name="influxdb-1", location = "http://127.0.0.1:8086/write" },
{ name="influxdb-2", location = "http://127.0.0.1:7086/write" },
] [[udp]]
name = "example-udp"
bind-addr = "127.0.0.1:19096"
read-buffer = # default
output = [
{ name="influxdb-1", location="127.0.0.1:8089", mtu= },
{ name="influxdb-", location="127.0.0.1:7089", mtu= },
]

总结:

1、加载配置文件 relay.toml

2、根据配置文件创建relay,启动监听端口,接收请求

3、把接收到的请求写入到influxdb1-2节点

后面再研究下核心模块relay怎么把接收到的数据同时写入,influxdb多个节点。

最新文章

  1. 顶级域名和二级域名cookie共享删除和修改
  2. linux centos 6.5下安装nodejs
  3. codev 2147 数星星
  4. 教你轻松计算AOE网关键路径(转)
  5. c++unsigned char的输出问题
  6. xcode7 The operation couldn&#39;t be completed.
  7. shiro错误总结
  8. web项目中加入struts2、spring的支持,并整合两者
  9. KVM虚拟机网络基础及优化说明
  10. linux 常用命令;
  11. php parse_url 函数教程
  12. linux下在多个文件夹中查找指定字符串的命令
  13. C#使用seleium实现一个自动登录器
  14. python魔术方法
  15. c语言,动态数组
  16. Nohttp框架在Android Studio中的使用
  17. element UI 下拉菜单滚动监听(vue指令)
  18. Codeforces 1114 简要题解
  19. 软件工程——移动的HelloWorld
  20. spring如何解决单例循环依赖问题?

热门文章

  1. JavaScript(三) - 精简
  2. C++实现大正整数及其相关运算(长期更新)
  3. 0908期 HTML Frameset框架和选择器
  4. CCproxy 设置代理服务器。
  5. Ajax请求WCF服务以及跨域的问题解决
  6. Nginx rewrite使用
  7. asp.net 初级程序员面试题【待续】
  8. filebeat 笔记
  9. sql中从指定位置截取指定长度字符串
  10. [leetcode]134. Gas Station加油站