Apache Tribes

Tomcat的组通讯模块
授权协议 Apache
开发语言 Java
所属分类 服务器软件、 应用服务器
软件类型 开源软件
地区 不详
投 递 者 越嘉树
操作系统 跨平台
开源组织 Apache
适用人群 未知
 软件概览

Apache Tribes是Tomcat的一个模块,支持服务器集群中的组通信。Filip Hanik谈到了异构集群中的挑战以及Tribes如何帮助实现Tomcat集群的组通信需求。

Tribes是一个具有组通信能力的消息传递框架,这些是在Tomcat 5容器的集群/session复制代码之外创建的。它是为Tamcat集群实 现提供的通信框架。它的目的之一是简化分布式应用点对点(peer-to-peer)及点对组(peer-to-group)通信。Tribes支持两种 类型的消息传递:可用于两个节点间事件的并发(concurrent)消息传递和可用于发送消息给多个节点的平行(parallel)消息传递。

Tribes框架的其它特性包括:

  • 有保证的消息传递:默认实现是基于TCP的,使用了java.io和java.nio包。
  • 保证级别:Tribes支持3个级别的消息传递保证(NO_ACK、ACK和SYNC_ACK)。
  • 每消息传递语义:这些语义允许被传递的每个消息都是不同的,而且每个消息使用不同的保证级别。
  • 可插拔拦截器:可被用来拦截贯穿已定义方法的任何事件并操作消息属性(标记)。ChannelInterceptorBase类可以把非拦截方法的冗余代码降至最少。
  • 传递反馈:Tribes试图对每个消息和每个传递语义(NO_ACK、ACK、SYNC_ACK)都传递反馈。消息传递既可以是同步的也可以是异步的。
  • 并发和平行传递:并发传递意味着任一时刻可以发送或接收多于一个的消息。没有“消息阻塞”意味着使用SYNC_ACK保证级别传递10M消息不会中断使用NO_ACK保证级别传递的10KB信息。平行传递则允许一个线程发送消息给多个目的地(NIO)。
  • 固定的节点层级:这一特性支持确定集群领导、自动合并组以及在多点传送不工作的地方发现节点。
  • 失败检测:包括一个简单的拦截器TcpFailureDetector以在一个集群成员宕机时提供反馈。这样就不需要等待超时而且也没有在繁忙网络上ping节点时上当受骗的风险。

Tribes还支持像RPC消息传递的特性以及把通道构建到JNDI树中的JNDI通道。该框架架构包含如下组件:

  • 通道:这是链中的第一个拦截器。它有一个或多个ChannelListener及MembershipListener. 它把消息序列化并反序列化,而且支持传递纯byte[]数据的ByteMessage。
  • 拦截器:拦截器的例子包括有失败检测/静态成员、总体顺序或每个成员顺序、领导选举/消息数据加密、消息分派(异步消息传递),以及所有或没有传递担保(delivery guarantee)。
  • 协调器:这是链中的最后一个拦截器。它协调I/O组件如Sender, Receiver和Membership。
  • org.apache.catalina.tribes.ChannelException: java.net.SocketException: error setting options; No faulty members identified. 这是犯下的一个低级错误,没连网线就进行集群的配置,结果报错

  • tomcat server.xml 中 <MembershipclassName="org.apache.catalina.tribes.membership.McastService"             address="224.0.0.1 "             port="45564"             frequency="500"             dropTime

  • 起因: 我在做tomcat的共享session 经过: 百度启动之后发现 28-Jun-2019 15:30:17.287 WARNING [main] org.apache.catalina.startup.Catalina.load Catalina.start using conf/server.xml: Error at (164, 114) : org.apache.catalina.t

  • 准备相关软件 下载安装Apache2.2.4 Apache下载地址:http://archive.apache.org/dist/httpd/binaries/win32/,选择下载windows平台安装包文件apache_2.2.4-win32-x86-no_ssl.msi。                         接受安装协议   配置Apache服务器信息   Network Dom

  • 问题1. 前提: web.xml下要加<distributable/> 或 在tomcat的context.xml的context标签属性加入distributable="true"(未尝试) 遇见问题: 在登陆时发现如下异常: Caused by: java.lang.IllegalArgumentException: setAttribute: Non-serializable attribu

  • 漏洞描述 2020年5月21日,阿里云应急响应中心监测到某安全研究人员披露Apache Tomcat在一定条件下使用自带session同步功能时存在反序列化代码执行漏洞,并在GitHub上公布该漏洞远程命令执行可利用EXP程序,风险较大。 Apache Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器。当Apache Tomcat集群使用了自带session同步

  • Overview Package Class Tree Deprecated Index Help Apache Tomcat 8.5.54 Prev Next Frames No Frames Apache Tomcat 8.5.54 API Packages Package Description org.apache.catalina org.apache.catalina.ant T

  • apache-tomcat-8.5.27, 0 , 2018-01-18 apache-tomcat-8.5.27\bin, 0 , 2018-01-18 apache-tomcat-8.5.27\conf, 0 , 2018-01-18 apache-tomcat-8.5.27\lib, 0 , 2018-01-18 apache-tomcat-8.5.27\logs, 0 , 2018-01-

  • 1、Tomcat集群配置关键点: begin/// <1>All your session attributes must implement java.io.Serializable ==>session中存储的对象必须是可序列化的,即实现类【java.io.Serializable】 <2>Uncomment the Cluster element in server.xml ==>在serv

  • 编译apache服务器 首先编译apache服务器。在编译之前需要执行其自带的检测配置脚本。对于不同发行版本的Linux,默认安装的库都有所差别,即便是同一个发行版本,由于用户安装软件的软件不同,也会导致系统内包含的库有所区别。因此apache作为开源服务器,在编译前需要了解系统的库安装情况,某些模块需要依赖于特定的库,如果这些库不存在,配置脚本将自动忽略这些库的编译。经过检测时候会生成合适的Ma

  • apache2.2与tomcat集成(可以多个tomcat)  需求概况:  有3个服务: localhost:9091, localhost:9190。 localhost:9191分别对应3个tomcat下的3个web应用。 由apache httpd作为互联网接入服务器,在80端口接收对这3个服务的请求。apache httpd再将这3个请求分别对应到不同的后端web服务器(Tomcat)处

  • Apache Http Server部署负载均衡 一、Apache下载安装: Apache 下载:建议从官网下载http://httpd.apache.org/download.cgi 安装方法参照http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html 安装的时候若出现:(OS 5)拒绝访问。 : AH00369: Failed

  • 【问题描述】 在做tomcat session共享的时候,遇到了如下的问题: java.lang.ClassNotFoundException: org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor 【问题原因】 tomcat8.5.40,已经没有MessageDispatch15Interceptor

  • <问题解决05>导入的新项目报org.apache.catalina不存在--解决方案如下: 参考文章: (1)<问题解决05>导入的新项目报org.apache.catalina不存在--解决方案如下: (2)https://www.cnblogs.com/newlyfly/p/7555002.html (3)https://www.codeprj.com/blog/7347ba1.html 备

 相关资料
  • EOSIO智能合约由一组 action 和 type 的定义(definitions)组成.action的定义指定并实现了合约中的行为.type的定义指定了所需的内容及结构.EOSIO的actions主要在基于消息的通讯结构中执行.客户端可以通过发送(推送)信息到nodeos来执行actions.这可以通过使用cleos命令来完成.也可以通过EOSIO的send方法之一来完成(例如:eosio::

  • 利用react的机制进行通信 ref属性 <Text ref={(com)=>this.text = com} /> 父类更新子类 父类把state作为属性传递给子类的props,任何时候state改变,会触发子类的componentWillUpdate 以下例子任何时候state的id改变,child里的componentWillUpdate会被触发 class ChildCom ext

  • 概述 通信模组是智能硬件连接到网络的必要模块,根据不同的联网方式,需要的通信模组也不尽相同。小米根据市场需求,提供如下来自合作伙伴的模组。 2G模块 SIM800是一款四频GSM/GPRS模块, SMT封装。其性能稳定,外观小巧,性价比高,能满足客户的多种需求。 SIM800工作频率为GSM/GPRS 850/900/1800/1900MHz,可以低功耗实现语音、SMS、数据和传真信息的传输。SI

  • (要求Workerman版本>=3.3.0) /Channel/Client 客户端

  • (要求Workerman版本>=3.3.0) __construct void ChannelServer::__construct([string $listen_ip = '0.0.0.0', int $listen_port = 2206]) 实例化一个ChannelServer服务端 参数 listen_ip 监听的本机ip地址,不传默认是0.0.0.0 listen_port 监听的端口

  • (要求Workerman版本>=3.3.0) 源码地址:https://github.com/walkor/Channel Channel是一个分布式通讯组件,用于完成进程间通讯或者服务器间通讯。 特点 1、基于订阅发布模型 2、非阻塞式IO 原理 Channel包含Channel/Server服务端和Channel/Client客户端 Channel/Client通过connect接口连接Cha

  • 代码如下 this.changeTableData是要刷新表格的数据,provide发送changeTableData方法,在App.vue点击触发this.changeTableData,但是没有生效 用了inject: ['changeTableData'],reset是点击触发这个this.changeTableData,不但没有生效,还在页面上报 大佬们,怎么在app.vue,点击触发这个

  • (要求Workerman版本>=3.3.0) 源码地址:https://github.com/walkor/Channel Channel是一个分布式通讯组件,用于完成进程间通讯或者服务器间通讯。 特点 1、基于订阅发布模型 2、非阻塞式IO 原理 Channel包含Channel/Server服务端和Channel/Client客户端 Channel/Client通过connect接口连接Cha