Skip to content

Load Balance RPC calls between multiple providers

Notifications You must be signed in to change notification settings

sk1122/svinge-2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to rpc-load-balancer 👋

Version Documentation License: MIT Twitter: sk1122\_

Load Balance RPC Calls between multiple RPC Providers

Demo

Install

yarn add rpc-balancer

Usage

We've used 2 different algorithms to load balance rpc calls, so you can use any algorithm based on your needs, they are

  • Round Robin
    • Switch RPC Provider after certain amount of responses
  • Dynamic Load Balancing
    • Switch RPC Providers based on certain parameters like avgResponse, connections, responses etc

This package can also cache requests for certain amount of time and retry if request fails, you can configure all these options in the constructor.

  • maxConnections - No of max active connections allowed for a RPC
  • maxResponses - No of max responses for a connection before switching it out
  • maxRetries - No of max retries allowed for a failed request
  • cache - Cache Options
    • caching - True or False
    • cacheClear - Duration for cache
    • excludeMethods - JSON RPC methods to be omitted from caching

Round Robin

import { RoundRobin } from "rpc-balancer"
import { ethers } from 'ethers'

const balancer = new RoundRobin({
    maxConnections: 2,
    maxResponses: 2,
    maxRetries: 2,
    cache: {
        caching: true,
        cacheClear: 2000,
        excludeMethods: []
    }
})

await balancer.init(["RPC_LINKS"])

const provider = new ethers.providers.Web3Provider(balancer)

Dynamic Load Balancing

import { RoundRobin } from "rpc-balancer"
import { ethers } from 'ethers'

const balancer = new LoadBalanceRPC({
    maxConnections: 2,
    maxResponses: 2,
    maxRetries: 2,
    cache: {
        caching: true,
        cacheClear: 2000,
        excludeMethods: []
    }
})

await balancer.init(["RPC_LINKS"])

const provider = new ethers.providers.Web3Provider(balancer)

Author

👤 Satyam Kulkarni

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!


This README was generated with ❤️ by readme-md-generator

About

Load Balance RPC calls between multiple providers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published