#overview
banyan is a tree has thick branches which grows in the East Asia.
Thanks for @ok95 & @Joy-Zhang given the good idea & guidance.
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:
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 :
and some core model's maintenance such as queue :
##Restful API
##scenario & usage
###produce & consume
- produce / pull consume
- produce / push consume
- produce / async consume with another thread
- produce-loopback / consume-loopback
###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:
- single thread,same message size,use client channel pool or not,compare:
###consume
- single thread,multiple message size,async receive,compare:
- single thread,same message size,use client channel pool or not,compare:
##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.