文档章节

tns load balance及master/slave使用模式和灰度发布

book
 book
发布于 2016/04/18 02:42
字数 574
阅读 343
收藏 9
点赞 1
评论 0

tns的两种模式


    tns客户端tnsclient支持不同的使用模式,包括load balance、master\slave模式,接下来介绍不同模式的作用和设计原理


load balance

    在集群模式中,一个请求过来后要通过某种策略将请求分配到后台某个服务器上,这个策略我们可以称为负载均衡

    tns采用加权随机的方法实现负载均衡

    举例:服务serviceA下面有3个实例,对不同的实例分配不同的vNodes个数(权重),假如:a1:2;a2:4;a3:4,那么客户端会将请求的2/10分配到a1节点,将请求的4/10分配到a2节点或a3节点,从而实现了负载均衡


    在tnsclient中使用LoadbalanceTSNodeIndexBuilderRandomTSNodeSelector


master\slave


    在集群模式中,我们希望将请求分发到主节点(master),然后当master down后,将请求分发到某slave节点

    大多数分布式系统master/slave由分布式系统本身实现,即系统自身包含一个监控组件,当监控组件检测到master不可用后自动提升某slave为master,典型代表为zookeeper(leader、flower)

    tns自身并不提供master\slave功能,通过tnsclient在调用某个服务时实现。同样基于vNodes机制,tnsclient将获取到的某服务的所有实例,根据vNodes进行自然排序,vNodes小的节点优先,若vNodes相同,再根据id进行排序

    同上面例子,如果采用master\slave模式,a1 vnodes最小,排在第一位,作为master;假如a1 down掉,那么a2或a3被提升为master,此时a2和a3 vnodes相同,所以id小的会被提升为master


    在tnsclient中使用MaterSlaveTSNodeIndexBuilderMasterSlaveTSNodeSelector


灰度发布

    所谓灰度发布,就是对要发布的程序先小批量上线,一旦出现问题,不至于影响到所有用户。

    tns实现方式天然具有灰度发布的特性。基于vNodes,并且采用load balance模式,我们只需将发布的新节点的vNodes设置比较小(权重低),那么线上的流量只会有一小部分流到这个新节点,从而实现灰度发布的效果


© 著作权归作者所有

book

book

粉丝 42
博文 18
码字总数 15217
作品 2
海淀
高级程序员
tns 2.2.0 发布,thrift rpc 分布式组件

tns为thrift rpc分布式组件,实现rpc的高可靠、负载均衡、水平动态可扩展等,工具提供完整的命令行管理方式。 更新内容: 优化 重构协议 合并cnode和snode同步操作 分离cluster和client rpc ...

book ⋅ 2016/05/12 ⋅ 0

CentOS 7 多网卡绑定

根据官方文档RedHatEnterpriseLinux-7-NetworkingGuide-en-US用nmcli做起来还是相当容易的。下面把俺的步骤贴下。 1、查看目前网卡的名称和状态。 #nmcli device status DEVICE TYPE STATE C...

孤鸿子 ⋅ 2017/08/17 ⋅ 0

bond双网卡绑定总结

bond双网卡绑定总结 什么是bond? 所谓bond,是一种通过把多个物理网卡绑定成一个逻辑网卡实现网卡冗余、负载均衡、提高带宽,从而实现网络性能高可用高可靠的技术。 bond有七种模型: mod0...

黎董 ⋅ 2017/04/24 ⋅ 0

Redis cluster管理工具redis-trib.rb详解

先从redis-trib.rb的help信息,看下redis-trib.rb提供了哪些功能。 可以看到redis-trib.rb具有以下功能: 1、create:创建集群 2、check:检查集群 3、info:查看集群信息 4、fix:修复集群 ...

哲别0 ⋅ 05/14 ⋅ 0

linux bond配置步骤,七种bond模式说明

一、网卡绑定: 第一步:创建一个ifcfg-bondX # vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0BONDING_OPTS="mode=0 miimon=100"BOOTPROTO=noneONBOOT=yesBROADCAST=192.168.......

jastme ⋅ 2015/08/12 ⋅ 0

RHEL5 双网卡绑定

Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。 ...

Start-up ⋅ 2012/11/08 ⋅ 0

centos7--shell脚本自动实现bond配置

#!/bin/bash 创建一个名为bond0的链路接口 IP=$1GATE=192.168.18.1ETH1=eno1ETH2=eno2 ETH3=eno3 ETH4=eno4 modprobe bonding 备份网卡1文件 cp /etc/sysconfig/network-scripts/ifcfg-$ETH......

银luo九tian ⋅ 2017/11/15 ⋅ 0

使用shell脚本实现php应用的批量更新

拓扑: control_server 192.168.1.200 lb1 192.168.1.202 lamp1 192.168.1.101 lamp2 192.168.1.102 网站: www.aaa.com 注意点: 1.所有服务器之间通过hosts来解析主机名 2.control_server与......

362475097 ⋅ 2017/02/15 ⋅ 0

Linux中bond的七种网卡绑定模式详解

概览: 目前网卡绑定mode共有七种(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6 常用的有三种: mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。 mode=1:自动备援...

菜鸟东哥 ⋅ 2017/08/18 ⋅ 0

Linux下多网卡绑定(bond)

网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6 常用的有三种 mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。 mode=1:自动备援模式,其中一...

科技小能手 ⋅ 2017/11/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

分布式数据库中间件DDM的实现原理

随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性、甚至指数级上升的情况。此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也...

中间件小哥 ⋅ 15分钟前 ⋅ 0

字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享。 1、引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭...

JackJiang- ⋅ 22分钟前 ⋅ 0

Spring Cloud构建微服务架构:服务消费(基础)

使用LoadBalancerClient 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介...

itcloud ⋅ 22分钟前 ⋅ 0

MaxCompute产品最新进展 -- 从马力到计算力

摘要:本文从马力作为功率衡量标准为切入点,介绍了大数据领域的计算力衡量标准TPCBB以及MaxCompute2.0在Big Bench上的卓越表现。同时详细地分享了取得优异成绩背后的产品在最新有哪些进展,...

猫耳m ⋅ 23分钟前 ⋅ 0

Linux系统

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Linux系统: Unix:是C语言转做出来的,最早的网...

凯哥学堂 ⋅ 23分钟前 ⋅ 0

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

13.1 设置更改root密码 启动MySQL数据库 [root@linux-10 ~]# /etc/init.d/mysqld startStarting MySQL SUCCESS! 由于MySQL的相关命令的所在路径不在系统的环境变量中,因此需要将路径添...

影夜Linux ⋅ 26分钟前 ⋅ 0

jeesite shiro+redis实现cache和session共享

jeesite这个开源框架本身集成的有shiro+redis来实现cache和session共享,但是需要修改一下文件配置即可 首先找到spring-context-shiro.xml文件 找到bean id为sessionDAO,将其修改为如下 <!...

wangxujun59 ⋅ 26分钟前 ⋅ 0

基本JNI搭建

1、编写Java代码 首先我们需要编写自己的java代码 public class Hello { static{ System.loadLibrary("hello-jni"); } public native String sayHello();} 2、把...

国仔饼 ⋅ 28分钟前 ⋅ 0

MaxCompute产品最新进展 -- 从马力到计算力

摘要:本文从马力作为功率衡量标准为切入点,介绍了大数据领域的计算力衡量标准TPCBB以及MaxCompute2.0在Big Bench上的卓越表现。同时详细地分享了取得优异成绩背后的产品在最新有哪些进展,...

阿里云云栖社区 ⋅ 32分钟前 ⋅ 0

AppDelegate 设置Root相关

self.window = UIWindow.init(frame: UIScreen.main.bounds) self.window?.backgroundColor = UIColor.white self.window?.makeKeyAndVisible() self.window?.rootViewController = RootTabB......

west_zll ⋅ 40分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部