FFLIB 框架Broker 之Master/Slave 模式

          在FFLIB的两篇介绍中,已经介绍了FFLIB是基于Broker模式构建的框架,核心组件关系图如下:

http://www.cnblogs.com/zhiranok/archive/2012/07/30/fflib_framework.html

http://www.cnblogs.com/zhiranok/archive/2012/08/08/fflib_tutorial.html

         这种情况,比较明显的瓶颈是Broker 只有一个。在Client 和 Service 节点不断增多的情况下,单个Broker 将会无法承载。所以本文将探究如何扩展FFLIB 。

         其实解决之道也很直接,就是增加Broker 。为了能够为FFLIB 增加Broker 节点, 参考了Mysql 中的Master/Slave 结构, 设计FFLIB 的多Broker 框架如下图:

         Service 调用注册服务和接口时只通过Broker Master节点, Master将注册的服务和接口信息同步给所有的Slave节点,而所有的Service 接口和Client 节点和Slave 都是有连接的,所以不同的Service 就实现了通过不同的Slave 完成消息转发,实现了负载均衡。而且消息转发的开销和原来单个Broker的开销完全相同。

         关于 Master 和 Slave 节点核心通信逻辑如下图所示:

总结:

  • Master/Slave 模式是可选的,但Broker 仍然是可以工作的。
  • 源码 svn co http://ffown.googlecode.com/svn/trunk/
  • 构建borker : cd example/broker && make
  • 开启Broker Master(默认就是Master): ./app_broker –l tcp://127.0.0.1:10241
  • 开启BrokerSlave :./app_broker –l tcp://127.0.0.1:10242 -node slave –master_host  tcp://127.0.0.1:10241
  • 构建Echo 测试Service :cd example/echo_server && make && ./app_echo_server
  • 构建 Echo 测试Client:dd example/echo_client && make && ./app_echo_client

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT可乐

RabbitMQ详解(一)------简介与安装

1525
来自专栏Java技术

Kafka 单机和分布式环境搭建与案例使用

zookeeper:http://www.apache.org/dyn/closer.cgi/zookeeper/

1242
来自专栏Java编程技术

分布式消息中间件 RocketMQ:概述与源码编译篇

Apache RocketMQ 是一个分布式消息中间件,其具有低延迟、高性能和可靠性、万亿级容量、灵活的可扩展性特性;它是阿里巴巴在2012年开源的分布式消息中...

1111
来自专栏JAVA同学会

RocketMQ 基本概念

生产者发送业务系统产生的消息给broker。RocketMQ提供了多种发送方式:同步的、异步的、单向的。

1092
来自专栏个人分享

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特...

1415
来自专栏Pythonista

centos7之saltstack使用手册

  salt是一个异构平台基础设置管理工具(虽然我们通常只用在Linux上),使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apac...

1761
来自专栏吴柯的运维笔记

Git(分布式版本控制系统)配置与使用

“每个理性的IT人士都置顶了吴柯的运维笔记” Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git是一个开源的分布式版本控...

3035
来自专栏13blog.site

CentOS 7.2:Failed to start IPv4 firewall with iptables

问题 系统是centos7.2,且已经安装了iptables服务,但是在执行启动命令后,却报了iptables服务无法正常启动的错误。 启动命令如下: syst...

4645
来自专栏大学生计算机视觉学习DeepLearning

ImportError: No module named cv2 或 ModuleNotFoundError: No module named 'cv2'

原文链接:https://www.cnblogs.com/DOMLX/p/9747019.html

1.1K2
来自专栏about云

Kafka权威指南 —— 1.2 初识Kafka

什么是Kafka Apache Kafka是一个基于分布式日志提交机制设计的发布订阅系统。数据在kafka中持久化,用户可以随时按需读取。另外数据以分布式的方...

4036

扫码关注云+社区