在RAC集群上新建服务 2.启动server_taf服务 3.检查确认服务正在运行 4.找到刚创建服务的service_id 5.根据service_id审查服务的信息 6.给服务添加server side...failover参数 7.再次审查服务可以看到Method, Type和Retries值 8.检查已注册的服务的监听信息 9.创建网络服务名 10.测试TAF功能 1.为设置TAF在RAC集群上新建服务...eg: srvctl add service -d rac -s server_taf -r "rac1,rac2" -P BASIC 使用oracle用户在RAC集群上新建服务server_taf:...服务 eg: srvctl start service -d rac -s server_taf 启动server_taf服务 [oracle@jyrac1 ~]$ srvctl start service...-d jyzhao -s server_taf 3.检查确认服务正在运行 eg: srvctl config service -d rac 检查确认服务正在运行: [oracle@jyrac1 ~]$
作者:温昂展 导语:海量服务之道其一,有损服务; TAF特性其一,容错; Less is more 上一节简单提到了客户端在选取Invoker节点时,会对Invoker列表执行死活检查,屏蔽掉一定时间内异常的节点...下面对TAF容错机制做具体探讨。 一、容错性 从概率学的角度,随着分布式系统规模不断扩大,即使是小概率的系统错误依然不可忽略不计,容错设计必不可少。...三、TAF实现 分析清楚问题,再考虑如何实现就比较简单了,TAF的实现同样是从以上两个角度做考虑的。...回想前面在整体架构介绍中提到的,petsvr服务会定期上报心跳到node服务,由node服务统一将心跳上报registry,以此我们可以在registry端设计名字服务排除策略,移除故障节点;而对于节点过载情况...名字服务排除策略: 业务服务 svr 主动上报心跳给名字服务,使名字服务知道服务部署的节点存活情况,当服务的某节点故障时,名字服务不再返回故障节点的地址给Client,达到排除故障节点的目标。
2 服务端 2.1 服务端启动过程 服务需要继承taf基类Application, 调用框架main函数,解析服务端配置文件加载到服务端,然后初始客户端通讯器,初始化服务端并创建_epollServer...1)调用parseConfig(),解析TAF服务模板内容配置,包括client和server的locator,超时,log,心跳等。...2.2 服务端分析 2.1.1 基础类图 业务服务系统需继承TAF框架Application类初始化服务端基础配置,并创建TC_EpollServer类对象,在Epoll类中创建网络线程类NetThread...客户端和服务端调用方式如图所示。客户端首先通过stringtoProxy(obj)方式上报taf主控并获取到当前活跃的服务端IP和端口,然后客户端可以发送连接请求与服务端通信。...服务端每台机器需要安装node,node不断上报心跳等信息到taf主控,并通过patch实现主控控制服务节点。
本文描述基于Oracle 10g rac,客户端TAF方式的故障转移并给出示例。 ...(Load Balance) Oracle RAC 负载均衡测试(结合服务器端与客户端) 有关Oracle RAC failover 连接时故障转移请参考 Oracle RAC failover...测试(连接时故障转移) Oracle RAC failover 测试(Server TAF方式) 1、TAF描述 #下面关于TAF来自Oracle 的官方描述 ID 453293.1...#通过在客户端的tnsnames.ora中配置FAILOVER_MODE项实现TAF 2、服务器端、客户端的环境 #服务器端环境,host信息 oracle@bo2dbp:~> cat /etc...方式实现了Oracle客户端到服务器透明故障转移 b、主要在客户端tnsnames.ora配置FAILOVER_MODE来实现基于客户端的TAF c、FAILOVER_MODE中基于连接方式(METHOD
导语:对于服务端来说,异步处理相比同步处理在性能上可能会有成倍的提高,本篇就对taf的异步处理进行一个简单的分析。描述客户端进行异步调用之后,taf的都进行了哪些的处理。...通过定义 jce 协议,taf 自带工具是可以自动生成相应的异步调用的接口实现。...; taf_invoke_async(taf::JCENORMAL,"doRequest", _os.getByteBuffer(), context, _mStatus, callback);...} 在该方法中,通过调用父类 ServantProxy 的 taf_invoke_async 方法进入异步处理。...如果你业务需要调用另外一个服务的时候,那么使用异步会很明显提升性能的。
Oracle RAC中,除了基于客户端的TAF方式之外,还有基于服务器端的TAF方式,可以把服务端的TAF方式看作是客户端TAF方式的一个升级版吧。...服务器端的TAF,当然是需要在服务器端进行配置了,这个是通过Service来完成的。本文主要描述Oracle 10g rac 下通过service方式配置服务器端的TAF。 ...) #注意我们客户端的SERVICE_NAME,我们设置为TAF ) ) 2、在服务器端配置service 配置service有多种方式,如dbca,oem,srvctl命令行...The command completed successfully 3、测试服务器端TAF robin@SZDB:~> sqlplus fail_over/fail@gobo4 fail_over...TAF方式的failover通过在服务器端配置service来完成 b、服务器端的TAF方式与客户端的TAF方式产生同样的效果 b、一旦在服务端配置了基于服务器端的TAF,客户端再无需通过在客户端添加
其实就是对请求量的控制问题 二、 过载保护 依据之前介绍的TAF线程模型进行的分析,首先一个新的请求到达服务端先是建立一个连接,接着直到该连接被释放,期间发生的读写请求都会占用线程池的资源。...前面已经分析,TAF多个Obj都会对同一个监听端口复用,也就是说在服务接收到请求的时候是没有办法直接区分开是哪个Obj的请求的,只有在后面的业务线程处理时才会分发到各个服务Obj上处理。...容易想到,由于TAF基于容器理念,在管理上各个服务Obj是相互独立的,因此对每个服务设定一个最大负载max-load并维持一个调用计数器,在每次服务被调用时计数加一,服务调用结束计数减一,当计数器的值大于最大负载时可判定当前服务过载...在具体实现上,TAF的负载均衡主要是放在客户端TAF-Client实现的,之后再展开探讨。 2....在服务监控中,可以将CPU、内存等资源作为监控指标,若占用率到达阈值及时告警。在TAF监控的实现上,确实也是这么做的。除了对请求流量和相关的业务指标做上报监控,系统资源监控,JVM监控必不可少。
软负载均衡架构大体可以分为: 基于客户端 基于DNS 基于反向代理 基于第三方应用或系统,如:哈雷、TGW、LVS 除了基于客户端方式,其他架构上实际上都是引入一个均衡服务器做控制或代理,或是返回请求的调度结果...而TAF的实现,我们把重点放在客户端。 二、TAF实现 根据前面对Client调用的分析可知,客户端会采用选定的负载均衡策略选择一个Invoker,对请求进行路由分发。...()); 2. hash 均衡 根据请求上下文的hash值对服务节点列表大小取模运行,进行路由分发,在系统正常运行情况下,可以保证相同hash值路由到同一服务节点。...一致性hash均衡 根据一致性hash算法生成一定空间(虚拟节点)大小的调用序列哈希环,整个空间按顺时针方式组织,将对应的服务节点根据哈希映射到环上,在发生移除/添加操作时,它能尽可能小的改变已存在的Key...带静态权重策略 上述算法的简单实现都假定每个服务节点都是完全对等的,而实际上每个服务节点的处理能力不尽相同,因此我们可以给每个节点根据处理能力的大小分配对应的权值。
初始化服务代理配置 首先根据CommunicatorConfig初始化服务代理配置ServantProxyConfig,同时设置远程服务名;这里要特别说明的是服务代理配置中有一项为是否直连isDirectConnection...初始化负载均衡策略 TAF服务多节点部署,发起服务请求时应该选择哪个服务节点最为合理呢?...); long syncTimeout = url.getParameter(Constants.TAF_CLIENT_SYNCTIMEOUT, Constants.default_sync_timeout...Throwable e) { throw new ProxyException(servantProxyConfig.getSimpleObjectName(), "Fail to create taf...目前TAF-Java还没有实现这种方式,设想以后可以从这个方面多学习思考,对比分析一下。 感谢阅读,有错误之处还请不吝赐教。
四、配置管理 TAF有配置管理服务,此外管理平台上也有许多配置项,代码中有很多地方都会从配置文件中读取配置项的,容易搞混,这里先简单做个介绍。.../app/taf/app.service/data 当然以上这些配置你也在配置文件中看到,管理平台上的操作为: 服务管理页中,点击私有模版可对模版进行更改; 点击Servant管理页可对单个服务的最大连接数...TAF框架正是提供了以上问题的完整方案,服务端采用异步NIO通信模式,客户端可支持同步或异步调用; 数据编码提供了JCE协议支持,同时支持编写IDL运行脚本实现代码自动生成。...从某种意义来说,我觉得可以简化跨语言混合编程, 在服务端处理客户端的并发请求中,TAF实现上采用了Reactor多线程模式,这里贴两张网上看到觉得比较好的NIO时序图,有利于理解。...-必修课(六):容错 TAF-必修课(七):负载均衡 当然,TAF相关的内容远不止这些,比如这里暂时没有具体探讨的还有:协议、IDC分组、Set部署、就近接入、日志相关、消息染色、配置中心、运营监控服务等
同步 VS 异步 首先理解IO操作需要调用系统服务,那么: 同步IO,每个IO请求逐一处理,用户发起请求后需要等待或者轮询内核,直到IO操作完成继续执行; 异步IO,多个IO请求并发执行,用户发起请求后仍然继续执行...二、Java NIO + Reactor多线程 下面回归正题,TAF的网络线程采用了JDK原生NIO实现Reactor模型,此时服务端一个IO线程可以同时处理客户端请求,如果放到Unix的IO模型去理解...线程模型 现在终于到了正题,理解了上面的问题,再来看TAF的线程模型就很容易理解了,其设计思路基本如上,并无二异。...(Throwable e) { crashed = true; e.printStackTrace(); } } 当然从类图中也可以看出,具体实现上TAF...致谢,在TAF的学习上要感谢实习中leader毛哥和导师jack的指导,让我少走了不少弯路,特别是思考问题的方式上,受到了极大的启发; 还有组里像terry浩哥,kahn哥、jeff哥,菠菜、loki
TAF可以在客户端或者服务器端进行配置,如果用户在两端都进行了配置,那么服务器端的TAF配置会覆盖客户端TNS连接串中的TAF配置,也就是说,服务器端的配置具有更高的优先级。...下面分别介绍客户端和服务器端的TAF配置方法。...需要注意的是,PRECONNECT选项只能用于客户端的TAF配置,不能用于服务端的TAF配置。如果TAF是在服务端设置,那么FALIOVER METHOD只能设置为BASIC。...而服务端的TAF可以只配置一次(只配置IP、端口、服务名,该服务可以切换)即可实现Failover。...服务器端TAF(Server-Side TAF)配置是通过创建服务的方式来实现的,即通过srvctl add service命令来配置,创建服务的命令如下所示: srvctl add service -
作者:温昂展 一、程序入口 要说清楚后面的一些TAF实现需要完整地考虑整个框架体系,因此本节先对TAF服务端的整个启动过程进行解析,同时探讨一些相关问题。...光看程序逻辑就比较清晰,如下代码,上来直接找到startUp包下,Main程序,就是这么的简单直白,与优雅,这就是taf服务启动的入口: package com.qq.cloud.taf.server.startup...${service}.config.conf,该文件包括了TAF服务端配置、各个obj服务配置以及客户端连接器的配置。...前面已经提到,TAF另一个大重要的模块就是提供了一整套完备的运营服务,服务端除了拉取路由服务没有使用到之外,其他服务都有应用,代码实现上可以看到封装了很多的Helper,其下则是使用了各个服务的远程代理对象...我的理解是: 首先,功能上各个运营服务是不一样的; 其次,怎么让这些服务不和TAF处理客户端请求和业务处理的代码解构呢?当然是单独开启一个周期执行的线程统一管理啦!
比如我们选择failover_mode为basic创建的taf为racdb_taf srvctl add service -d RACDB -s racdb_taf -r "RACDB1,RACDB2..." -P BASIC bash-4.1$ crs_stat -t|grep taf Name Type Target State Host...------------------------------------------------------------ ora....taf.svc ora....ce.type OFFLINE...OFFLINE 我们手工开启 srvctl start service -d RACDB -s racdb_taf 然后通过dbms_service来配置更多的属性...------------------------------------------------------- 1 SYS$BACKGROUND 2 SYS$USERS 3 racdb_taf
1.修改协议、新增接口及服务时,ProxyServer可以做到不修改代码,不重启,只需要增加新服务的配置即可; 2.ProxyServer支持TAF+JCE调用,后端服务只需要专注业务,提供各自的TAF...接口即可,这样有个好处是,不管什么语言(C++,node.js,python)平台开发的服务,只要支持TAF协议就可以接入ProxyServer,而不用做任何修改; 本文探讨的方案,基本满足上面两点,但是有个缺点是...:当修改新增协议时,ProxyServer需要重新编译JCE发布服务。...一种方法是通过配置,在我们的服务配置文件上写明某服务某接口的req对应类型是HospitalReq,如下所示,这样做的缺点是协议改动,配置也需要跟着改动。..._pJceStr->writeTo(os, i+1); } ...... } 2.调用taf框架提供的异步回调RPC接口,填入调用服务接口名,参数序列化数据,回调类对象(见下面)。
服务:接入层,节点都是无状态的,能部署任意个节点。...Proxy用于屏蔽后端的路由细节,根据从Router服务得到的路由信息和业务提供的filter名和data,去访问BloomFilter服务; Router服务:路由管理服务(单个节点,使用taf平台主备主动切换...1秒调用BloomFilter节点的helloTest接口,如果连续失败N次(可配),则认为节点可能发生异常; b.BloomRouter服务随机向BloomProxy服务发送M次helloTest...服务BloomFilter中,用来提供基本的布隆过滤器接口。...BloomFilter服务通过路由服务通知的信息,可以为本节点上所有备布隆过滤器增量同步数据过来; b.比如该节点上的备布隆过滤器BF1,定时向其master调用接口getBloomIndex,
2.创建触发器 自动在主库启动hbha服务 3.在primary库上设置service的TAF功能 4.修改程序 中的 url,实现服务的自动切换 二:解释几个概念 1.TAF(Transparent...当初始化连接出现问题无法连接时,该功能可以保证应用程序重新连接到可用服务。在重新连接过程中,之前的活动事务将会被回滚,但在“具体条件”下TAF可以保证SELECT语句不被终止。...TAF的特性: 1:TAF是ORACLE客户端提供的一项特性,使用TAF,对客户端的环境有一定的要求,比如Java的JDBC驱动、Oracle客户端的版本等(8i开始支持TAF); 2:大致上TAF可以分为...2种,连接时的TAF和会话建立后TAF; 3:TAF本身与是否RAC环境无关,但一般都用在RAC环境,最小程度的减少最应用的影响,单实例环境下也可以使用TAF,这样使用PL/SQL developer连接数据库...总结:这时候可以测试下,当你主库shutdown abort的时候,你的从库自动转换成主库,然后触发器启动dbha服务,然后pmon自动注册监听,然后由于你配置了TAF特性,所以你的服务并不会报错(ORA
,因此针对这三种服务的接口通过访问TAF接口的方式来进行测试的。...后台TAF接口测试 用户数据服务的接口不与客户端交互,是后台TAF接口,通过直接访问TAF接口来进行测试。...TAF知识准备篇 JCE文件:JCE文件是TAF框架中客户端和服务端的通信协议,是一种类C++语言的标识符,用于生成具体的服务接口文件,了解JCE的语法规则,关键字,基本类型,复杂类型,名字空间和接口是做...Makefile:TAF框架提供了一个makefile.taf的基础Makefile,使用TAF实现的服务,需要遵从Makefile规范:(1)原则上一个目录是一个Server或者程序,即Makefile...单个接口测试 (1)连接服务器, 定义初始化服务器变量taf::CommunicatorPtr _comm; 服务器init函数。
拷贝.ideavimrc 文件到 C:\Users\yourname 的根目录 Taf 支持: 1)拷贝 taf.zip 文件到 D:\Codes\C++目录下解压 起飞 打开 clion,这时候会提示我的一些无效的工程...然后可以通过 svn、git 或者本地文件引入一个 C++服务,这里切忌不要引入一个具有多个服务的目录,一个项目一个服务。...打开一个服务项目后: 自动部署: 把本地的服务目录文件自动同步到目标开发编译的 samba 目录 配置目标同步目录:Files->Settings->Other Settings->Quickly Sync...Cmake: 通过 m2cmake 插件把 taf 的 makefile 相关文件生成 CMakeList.txt 文件。...K,Alt+M 进行构建 构建完成后,尝试下 taf 框架的智能提示和 jce 依赖的智能提示,确认下是否生效。
TAF(Transparent Application Failover):对于已经连接到数据库的客户端连接(会话),当前连接的数据库实例出现问题时,将已经存在的数据库连接透明地迁移到其他数据库实例中。...TAF目前可以实现: 使用相同数据库用户在正常实例中创建一个会话。 在原有服务出现问题之前已经执行过的操作不会被重复执行。...TAF的策略 basic:只与首选节点实例创建连接,在发生failover的时候才与备用节点实例创建连接。 preconnect:在与首选节点实例创建连接的同时与备用节点实例也创建连接。...TAF的类型 session:在failover发生后,新的连接被创建到正常实例,问题出现时正在运行的操作不会被继续执行。...none:不会发生failover(禁用TAF) TAF仅支持使用OCI方式连接到数据库的会话,不支持使用JDBC方式连接到数据库的会话。
领取专属 10元无门槛券
手把手带您无忧上云