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)

Golang 简单的读负责均衡的更多相关文章

  1. 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡【转载】

      文章 原始出处 :http://sofar.blog.51cto.com/353572/1601552 ============================================== ...

  2. MySQL数据库读写分离、读负载均衡方案选择

    MySQL数据库读写分离.读负载均衡方案选择 一.MySQL Cluster外键所关联的记录在别的分片节点中性能很差对需要进行分片的表需要修改引擎Innodb为NDB因此MySQL Cluster不适 ...

  3. Atlas+Keepalived实现MySQL读写分离、读负载均衡

    一.基础介绍 ========================================================================================== 1. ...

  4. 配置Nginx与tomcat负责均衡集群,

    今天主要说说,nginx如何配置tomcat集群,首先我们先介绍一下各个软件: 一: 1.Nginx介绍: 下载地址:http://nginx.org/en/download.html nginx这个 ...

  5. 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡

    ========================================================================================== 一.基础介绍 == ...

  6. Mysql - 读写分离与读负载均衡之Maxscale

    一.概述 常见的高可用方案如MMM和MHA等都将重点放在主库上,一旦主库出现故障,通过这些方案能将主库故障进行转移. 本文将给大家介绍一款由mariadb公司出品的中间件Maxscale,该中间件能实 ...

  7. windows NLB实现MSSQL读写分离--从数据库集群读负载均衡

    主从模式,几乎大部分出名的数据库都支持的一种集群模式. 当Web站点的访问量上去之后,很多站点,选择读写分离,减轻主数据库的的压力.当然,一主多从也可以作用多个功能,比如备份.这里主要演示如何实现从数 ...

  8. 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

    [前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butt ...

  9. keepalived和lvs实现mysql读负载均衡

    keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...

随机推荐

  1. mysql5.5编译安装

    MySQL是一个关系型数据库管理系统 ,由瑞典MySQL AB公司开发,目前属于Oracle 公司.MySQL分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码 这一特点,一般中 ...

  2. Mock模拟数据,前后端分离

    安装 使用npm安装: npm install mockjs; 或直接<script src="http://mockjs.com/dist/mock.js">< ...

  3. 秘钥分割-Shamir秘钥分割门限方案

    精选: 1.问题的提出 2.需求的抽象: 有一个秘钥S,转换成另一种数据数据形式,分配给12个人(s1,s2,.......,s12),使得任意3个人的数据拼凑在一起就可以反向计算出秘钥S. 3.解决 ...

  4. 使用Nginx对.NetCore站点进行反向代理

    前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...

  5. 有关版本控制--SVN

    什么是版本控制? 这个之前有记录过相关的内容 版本管理就是管理更新的历史记录, 它给我们提供了一些在软件开发过程中必不可少的功能,例如: 记录一款软件添加或更改源代码的过程 回滚到特定阶段,恢复误删除 ...

  6. B样条曲线方程和C++实现

    功能:根据参数u值和k(大小为阶数值)与节点矢量,计算第i个k次B样条基数 输入参数: u—参数值:k—大小值为阶数:i—第i个k次B样条的支撑区间左端节点的下标:aNode为节点向量. 输出参数:返 ...

  7. Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式

    简介 在这一节,我们将介绍如何在Silo和Client中获取Grain及调用Grain Grain获取方式 从Grain内部获取: //根据特定的Key值创建或获取指定的Grain IStudent ...

  8. Linux 文件和目录操作命令(一)

    1.cd (change directory)切换到指定目录 - 返回上次目录 .. 返回上层目录 回车 返回主目录 / 根目录 2.cp (copy)复制文件或目录 -r -R 递归复制该目录及其子 ...

  9. LeetCode 面试题 02.03. 删除中间节点

    题目链接:https://leetcode-cn.com/problems/delete-middle-node-lcci/ 实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定 ...

  10. 【WCF Restful】Post传参示范

    1.传多个参数 接口定义:(ResponseFormat与RequestFormat分别将相应参数序列化.请求参数反序列化) [OperationContract] [WebInvoke(UriTem ...