Comments (8)
The current, pretty simple, balancer implementation relies on object mutability. This is not good. In order to fix it from package consumer perspective, you can do:
proxy.all('/XYZ/api1/*') .balance(Array.from(serverList))
proxy.all('/XYZ/api2/*') .balance(Array.from(serverList))
from rocky.
Yes, you can change whatever you want via middleware. See:
https://github.com/h2non/rocky#request
from rocky.
woha , i am your fan now. Thank you so much 💃
implemented manual round robin on server array using middleware. 💯
from rocky.
- You can't combine multiple routes with different behaviours at rocky API level (you can achieve that, however, writing your own middleware function).
- You must declare the specific route first.
- Then declare the generic one with the wildcard.
You code might look like:
proxy.get('/XYZ/api1/*') .balance(serverList).useForward(middleware)
// GET /XYZ/api1/* HTTP requests won't never reach the route below:
proxy.all('/XYZ/*') .balance(serverList)
from rocky.
but here if we define balance at individual API, Case will be:
take a scenario I have app. XYZ which has two API api1, api2.
whenever I receive request for any of these I have to load balance on application level not API level.
example: (suppose XYZ has two instances running xyz1 , xyz2)
in case of proxy.all('/XYZ/*') .balance(serverList)
request sequence:
api1 -> hits xyz1
api2 -> hits xyz2
api1 -> hits xyz1
api2 -> hits xyz2
in the case of individual load balance:
api1 -> hits xyz1
api2 -> hits xyz1
api1 -> hits xyz2
api2 -> hits xyz2
i want 1st case not second
from rocky.
The just register multiple routes that you want to balance independently:
proxy.all('/XYZ/api1/*') .balance(serverList)
proxy.all('/XYZ/api2/*') .balance(serverList2)
from rocky.
this is what i am doing right now which leads
//here server list is xyz1.com, xyz2.com
proxy.all('/XYZ/api1/*') .balance(serverList)
proxy.all('/XYZ/api2/*') .balance(serverList)
which leads :
api1 -> xyz1
api2 -> again xyz1 but i want it to go on xyz2 because it should load balace on application level
api1 -> xyz2 // even if this is 3rd hit to same application because of api level balancing it will go to xyz2
and so on.
from rocky.
thank you, I tried that but not working as well. can we change target URL in middleware ?
from rocky.
Related Issues (20)
- Bug in Middleware Flow (only for HEAD Requests?) HOT 2
- Support for Additional HTTP Methods HOT 1
- Using 'body-parser' middleware causes TypeError HOT 3
- How to update load balance ? HOT 3
- for multipart file or large body pay load 'useForward' is making request to fail when some async task needs to be done like fetching data from some api. HOT 5
- can we have one more option for method ? HOT 2
- Changing request URL randomly fails to get any response
- Can we have middleware to support custom load-balancing? HOT 3
- websocket middleware usage and examples needed, eg sniffing HOT 2
- custom load balancer support HOT 5
- How to access upstream response's statusCode in response middleware callbacks? HOT 2
- Test http2 support
- Request cloning breaks HTTP agents
- transformRequest has a gotcha, docs or code fix?
- Rocky breaks if domains has no registered A DNS records HOT 3
- Release security patch to npm HOT 1
- Rocky not working on node@16 HOT 2
- Forwarding with Express integration not working HOT 4
- Remove built-in retry support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rocky.