Skip to content

yanghua/banyan

Repository files navigation

#overview

Build Status

img 15

banyan is a tree has thick branches which grows in the East Asia. 

Thanks for @ok95 & @Joy-Zhang given the good idea & guidance.

img 14

banyan used to communicate and integrate over multi-app. It depends on RabbitMQ as backend broker(message exchanger). Most scenario:

  • enterprise information Integration
  • oriented-component & oriented-module distributed developer
  • infrastructure for esb or soa
  • json-rpc / IDL-RPC(thrift)
  • configured compress/uncompress
  • http-bridge for all platform
  • web-console UI

the necessity of encapsulating with RabbitMQ:

  • provide router pattern
  • embed permission into client-jar
  • removed create & delete & update operation from client, replaced with central-register mode

more information please see : banyan-category

##tree topology structure the message bus's implementation is based on Rabbitmq. It can takes advantage of multiple message exchange-types rabbitmq provided and builds many kinds of router pattern. The message bus's router topology lists below:

img 3

the advantages of the tree topology:

  • hide the router topology from client-caller (just need to know the proxy node)
  • multiple message communication pattern (p2p, pub/sub, broadcast)
  • implement the message log without interrupting the message channel
  • communication-policy configure once , push everywhere

##web-console banyan has its' own web console that built as a Apache-ofbiz's component. The web console provide a dashboard about rabbitmq :

img 16

and some core model's maintenance such as queue :

img 17

##Restful API

##scenario & usage

###produce & consume

###request & response

###publish & subscirbe

###broadcast & notification-handler

###json-rpc(wrapped-offical-java-client)

###thrift-rpc(thrid-party-rpc-integrated)

###http-restful

##benchmark it shows the client performance:

###hardware client :

OS : Mac os x Yosemite (version 10.10)
Processor : 2.5GHz Intel Core i5
Memory : 8GB 1600 MHz DDR3
JDK Version : 1.7.0_45

server :

OS : Ubuntu Server 14.04.1 (GNU/Linux 3.13.0-37-generic x86_64)
Processor : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz (8核)
Memory : 8GB
JDK Version : 1.7.0_72

###produce

  • single thread,multiple message size ,cycle send,compare:

img 10

  • single thread,same message size,use client channel pool or not,compare:

img 11

###consume

  • single thread,multiple message size,async receive,compare:

img 12

  • single thread,same message size,use client channel pool or not,compare:

img 13

##licence Copyright (c) 2014-2015 yanghua. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

a message bus implemented with RabbitMQ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages