文档章节

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

book
 book
发布于 2016/04/18 02:42
字数 574
阅读 345
收藏 9

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

粉丝 43
博文 22
码字总数 15217
作品 2
海淀
高级程序员
私信 提问
CentOS 7 多网卡绑定

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

孤鸿子
2017/08/17
0
0
Linux的bond模式绑定及模式区别

Linux的bond模式配置 原理 多块网卡虚拟成一张,实现冗余;多张网卡对外显示一张,具有同一个IP;工作在网卡是混杂模式的情况下;对于多物理网卡的 Bond 网卡而言,其中一块物理网卡会被设置...

刀锋
07/13
0
0
tns 2.2.0 发布,thrift rpc 分布式组件

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

book
2016/05/12
1K
0
bond双网卡绑定总结

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

黎董
2017/04/24
0
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
0

没有更多内容

加载失败,请刷新页面

加载更多

我是如何将博客转成PDF的

前言 只有光头才能变强 之前有读者问过我:“3y你的博客有没有电子版的呀?我想要份电子版的”。我说:“没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航去找来看呀”...

Java3y
4分钟前
0
0
nginx的一些总结

Linux下安装Nginx完整教程及常见错误解决方案 1.Nginx安装环境 Nginx是C语言开发,建议在linux上运行,本教程使用Centos7.0作为安装环境. 1)gcc 安装nginx需要先将官网下载的源码进行编译,编译...

Yao--靠自己
10分钟前
0
0
Predicate函数式接口

Predicate接口主要用于流的筛选,比如在filter方法中传入Predicate判断。 作为函数式接口,这里居然有三个default方法,一个static方法,子孙满堂! 正统的接口方法,就是boolean test(T t)...

woshixin
11分钟前
0
0
sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
22分钟前
1
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部