内容简介:作者:王清培(趣头条 Tech Leader)
read-loadbalance
master-slave(n) 读库集群负载均衡器(简单轮询)+时间间隔错峰。
github 地址:https://github.com/Plen-wang/read-loadbalance使用场景
1.一般我们会有多个从库,需要在从库的读取上做负载均衡。
2.在数仓拉取数据的时候经常对产线DB造成影响,所以会独立一个从库专门用来拉取,但是这个从库的利用率非常低。
数仓拉取数据一般在业务低峰期进行,iops峰值较高,但是持续时间很短。我们可以错开这个时间段,让这台从库的利用率最大化。
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/gocraft/dbr" "github.com/read-loadbalance/lb" "log" ) var slaveLB *lb.SlaveLoadBalancer func main() { //构造数据源 creator := func() *sql.DB { dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&autocommit=1", "root", 123456, "localhost", 3306, "test", "utf8mb4") conn, er := sql.Open("mysql", dsn) if er != nil { log.Fatalf("create db conn error:%v", er.Error()) } return conn } slave1 := creator() slave2 := creator() //构造slave-lb slaveLB = lb.BuildSlaveLoadBalancer(1, 2, 1, slave1, slave2) //获取数据源 _, _, conn := slaveLB.GetPollingNode() //放入任意orm中,这里举例dbr orm := &dbr.Connection{DB: conn} orm.NewSession(nil).SelectBySql("select id from tb_orders limit 1") }
作者:王清培(趣头条 Tech Leader)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 架构师负责订规范,你负责执行!
- 产品新人第一次负责项目应该怎么做?
- 到底谁应该对软件开发的质量负责?
- 产品新人第一次负责项目应该怎么做?
- 产品经理 VS.产品负责人(Product Owner)
- 字节跳动加速布局搜索,前360搜索负责人加盟
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Intersectional Internet
Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016
From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!