文档章节

tns cluster 简介

book
 book
发布于 2016/01/11 11:57
字数 833
阅读 1659
收藏 50

tns(thrift name server)是我在700Bike开发的一个thrift rpc分布式组件,可以实现高可靠、负载均衡、动态水平扩展等.

相比haproxy、zookeeper等有什么优势?我们知道网络程序唯一保证可靠的方式就是心跳包,同haproxy方式有什么区别,可以阅读wiki why

使用方式wiki上都有,这里简单说说tns cluster的特性,及设计结构。

cluster结构图

cluster结构图

tns cluster 采用无中心化设计,也就是cluster中每个node都是均等的,在任一节点执行命令都等效,集群组件类似于redis,在节点上执行meet <other host>即可,满足传递性,例如: 1 meet 2;2 meet 3 等效于1 meet 3; 1 meet 2

每个node均有一个ID,ID唯一,根据hostname+port生成,在集群中cluster按ID排序,组成一个环,如上图绿色环,其中ID较小的会负责检查比其稍大的ID的节点健康状态,并将自己知道的cluster list及健康状态和service list(不包含健康状态)传输到对方,实现集群信息同步,假如2节点Down了,1会标记2节点状态为down,并将自己的信息以后同步给3,因为2一旦down掉,是不可自动恢复的,只能手动恢复(重启2,并执行meet 重新上线). 如上,这种做法,一个节点有且仅有一个节点会同步信息给它,并且它也只同步信息给一个节点,集群增加节点不会增加单个node的压力。service list只会同步列表,不会同步service节点状态,避免1节点状态传递到6延迟比较高,每个tns节点自行维护service 状态,这样客户端不论从那个cluster node中同步service列表均比较实时。

tns内部结构图 tns

如图,在nameserver中添加三个rpc server节点,service名称定义为drpc,每增加一个节点时,可以指定ping的周期,nameserver会定时调用drpc的ping方法,ping方法返回vNodes,含义为虚拟节点,用于客户端对请求负载均衡,另外nameserver也根据每次ping返回的vNodes值来判断service server是否可用,若vNodes<0,nameserver会标记service node为down,nameserver只会同步UP状态的service节点列表给客户端,增加或下线一个节点,一个周期后(客户端设定周期)也会被客户端同步到。

单个的vNodes没什么含义,在一个service下有多个node时才有含义,例如上图中drpc包含三个节点,并且每个节点vNodes分别为7、2、1,客户端负载均衡后,其中7/10的流量会流向node1,1/10会流向node3,从而实现负载均衡,客户端默认提供一个随机选择器,大家可以按自己的意愿自己实现。

线上不论是tns node还是service node均可随时增加或减少,从而实现水平动态可扩展。

详细使用帮助文档,朋友们可以参考thriftnameserver 的WIKI。


tns交流群

jerry 于北京 2016-1-11

© 著作权归作者所有

下一篇: cap in tns
book

book

粉丝 42
博文 22
码字总数 15217
作品 2
海淀
高级程序员
私信 提问
加载中

评论(6)

book
book

引用来自“多多de棉花糖”的评论

好高级,最小租网几台机器,生产环境
两台就可以
多多de棉花糖
多多de棉花糖
好高级,最小租网几台机器,生产环境
猫扑风铃
猫扑风铃
猫扑风铃
猫扑风铃
云海哥哥
云海哥哥
哈哈4
蜜蜜的猫薄荷
蜜蜜的猫薄荷
tns 2.2.0 发布,thrift rpc 分布式组件

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

book
2016/05/12
1K
0
Oracle常见故障——Listener类:Hang、Crash及连接风暴的判断

目录 监听状态正常,应用反馈时断时连 Listener进程crash ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 11G SCAN LISTENER无法注册服务故障 Listener hang TNS-12535 TNS-00505处...

杨志洪 胡杰
2015/12/23
0
0
Oracle TNS 协议抓包分析

TNS 协议传输可以使用 TCP/IP 协议、使用 SSL 的 TCP/IP 协议、命名管道和 IPC 协议传输,其中 TCP/IP 协议传输是使 用明文传送。 这里只分析基于 TCP/IP 协议上的 TNS 数据。 简介 TNS(Tran...

China丶小可
08/23
0
0
php5实现web services

WEBService简介: Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。 它是一种构建应用程序的普遍模型,可以在任何...

Adam-Lee
2011/08/08
0
1
【故障|监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe

【故障|监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到...

小麦苗best
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
3
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
3
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
7
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部