文档章节

tns cluster 简介

book
 book
发布于 2016/01/11 11:57
字数 833
阅读 1656
收藏 50
点赞 4
评论 6

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

© 著作权归作者所有

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
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
win7上更改oracle 11g的归档模式

在win7上更改oracle 11g的归档模式,描述包括可能遇到的错误,这些错误也是写这篇博文的初衷,就是为了让其它通道避免同样的错误,或者碰到同样的错误指导如何解决,因为命令已经很清楚,所以...

技术小胖子
2017/11/15
0
0
管理11gRAC基本命令 (转载) 很详细

在 Oracle Clusterware 11g 第 2 版 (11.2) 中,有许多子程序和命令已不再使用: crsstat crsregister crsunregister crsstart crsstop crsgetperm crsprofile crsrelocate crssetperm crsc......

技术小美
2017/11/12
0
0
11gR2 RAC 新特性-SCAN-GNS-RAC One Node等

11gR2 RAC 新特性: 1.SCAN --single client access name: 客户端与RAC之前又架设了一层,目的是把RAC的IP信息对客户屏蔽掉, 让用户更加方便透明,不用再去管去连接哪个实例,新增加节点或删...

长平狐
2013/09/17
453
0
oracle提示TNS:无监听程序的解决办法

进入dos窗口,快捷键是 菜单键+R,输入cmd,在dos窗口中输入lsnrctl status 查看你的运行状态,如果结果如下: LSNRCTL for 32-bitWindows: Version 10.2.0.1.0 - Production on 20-9月 -200...

源哥L
07/05
0
0
处理oracle没有监听器错误

在CMD中输入以下内容. Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:Documents and SettingsAdministrator>LSNRCTL LSNRCTL for 32-bit Windows: Versio......

西昆仑
2010/11/21
0
0
centos7更改机器名后oracle无法使用

1、更改机器名称  ~]# hostnamectl --static set-hostname oracle 2、 ~]# su - oracle Last login: Tue Apr 12 10:11:34 CST 2016 from 192.168.30.250 on pts/0 [oracle@oracledb ~]$ l......

lcpljc
2016/04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
2
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
158
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部