开发者社区> 问答> 正文

Apache+Tomcat集群下,如何将一个通知请求发给集群下的每个tomcat?400报错

Apache+Tomcat集群下,如何将一个通知请求发给集群下的每个tomcat呢?? 400 报错 Apche+Tomcat集群下,如何将一个通知请求发给集群下的每个tomcat呢?
具体为,
1. 每个tomcat启动后会加载并缓存一些数据,这些数据通过其他的途径修改, 所以对tomcat来说这些是只读的.
2. 数据变化后要通知tomcat重新加载一次.
3.通知请求到达集群后, 却被apache给"负载均衡"的分流了: 仅有一个tomcat收到了更新缓存的通知.
如何让某些特征的http请求(如:符合特定的url、符合特定的cookie等)绕过负载均衡而发给集群的每个tomcat呢? 我查了apache.org的在线文档, 没有说明这种情况该如何配置jk配置文件. 又google了一通, 发现有人在问类似的问题,但是没有人回答.
请了解这一点的oschina大牛们不吝赐教,多谢啦。。。

展开
收起
爱吃鱼的程序员 2020-06-04 16:30:36 783 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    用mq,来收发通知。

    或者如下面所说,建一个全局性的缓存服务器。

    ######mq从来没有听说过, google了下是这个"IBM WebSphere MQ (Message Queue)"吗? 这这..., 要现有的系统整个重来, 有些过了...######JGroups,支持消息广播,集群配置######回复 @技术宅 : 看上去不需要大修改现有的架构哈, 那好我研究下, 谢谢.###### @jollyking 或者采用@lxbzmy所说的mq,基于消息中间件,应用既是消息发布者又作为消费者,这样也可以实现###### @jollyking 将通知请求发给应用实例,在你这种情况下就是tomcat应用实例,由应用实例基于JGroups发送给集群内的其他应用实例。######没有使用过, 这个能应有在apache+tomcat下吗?######
    @Andy "反向代理"?应该算是(对此我们很少这么称呼). 就是典型的、通过mod_jk.conf配置的.
    ######最简答的方法是你把数据放到一个地方,比如memcache缓存中,每个应用都去直接请求数据。######

    明白lz的意思了。如果是这种架构,apache收到一个请求,它只会把它转发到一个Tomcat上,不会同时转到多个上,只能想别的方法解决。

    可以考虑在tomcat里做,如果收到特定URL的请求,就依次调用到集群中每个Tomcat

    ######回复 @Andy : 算了, 看来没有我想象的捷径, 多谢了.######回复 @jollyking : 貌似不行。或者就是把通知功能集成在你的应用里。但这样的结构不好######回复 @Andy : 对此我设想的是仅仅通过配置文件就想达到目的.呵呵,是我太贪婪了吗.######回复 @jollyking : 想要结构上优雅点。那么这件事就不要有tomcat来做,在前端单独起一个进程,维护当前缓存的时间戳和最新文件的时间戳,如果发现有变化,就通知需要更新的tomcat######我现在使用了一种非常土的方式: 1. 每个tomcat都保存一个"最近一次更新缓存数据的时间戳". 2. 得到通知的tomcat向一个公共文件中写一个时间戳. 3. tomcat在使用缓存数据时先比较自己保存的时间戳和公共文件中的时间戳, 以确定是否需要更新缓存数据. 所以想找一个优雅点的方式.######我有一个解决方案。可以 和你交流一下。######我的qq498001203
    2020-06-04 17:12:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像