#primitive #proxy #json-rpc #transaction #ethereum #cache #load-balancing

ethereum-transaction

一组用于构建以太坊交易的原始组件

6 个版本 (重大更改)

0.6.0 2021 年 2 月 3 日
0.5.0 2021 年 2 月 3 日
0.4.0 2020 年 9 月 4 日
0.3.0 2020 年 9 月 4 日
0.1.0 2019 年 11 月 17 日

#45 in #负载均衡

GPL-3.0-or-later

10KB
205

jsonrpc-proxy

状态

这个库已经有一段时间没有更新了,这里仅作存档之用。您可能可以考虑查看 https://github.com/AcalaNetwork/subway,它应该具有相同的目的,并且更新得更加及时。

概览

该代理具有可插拔的中间件架构。每个中间件都会接收每个 RPC 调用,并可以决定是终止它(返回响应)还是将其传递给下一个中间件。中间件还可以修改响应对象。

作为最后一个中间件,我们使用 Upstream 中间件,它负责调用目标节点。

包含在此存储库中的中间件

  • 简单的缓存中间件
  • 简单的权限中间件
  • WebSocket 上游中间件

同样可插拔的是代理公开的 JSON-RPC 传输。目前支持

  • TCP 服务器
  • HTTP 服务器
  • IPC 服务器
  • WebSocket 服务器

Proxy Overview

想法

  • 速率限制
  • 故障转移
  • 负载均衡

用法

rpc-proxy 0.1
Parity Technologies Ltd <admin@parity.io>
Generic RPC proxy, featuring caching and load balancing.

USAGE:
    rpc-proxy [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --cached-methods-path <cached-methods-path>
            A path to a JSON file containing a list of methods that should be
            cached. See examples for the file schema. [default: -]
        --http-cors <http-cors>
            Specify CORS header for HTTP JSON-RPC API responses.Special options:
            "all", "null", "none". [default: none]
        --http-cors-max-age <http-cors-max-age>
            Configures AccessControlMaxAge header value in milliseconds.Informs
            the client that the preflight request is not required for the
            specified time. Use 0 to disable. [default: 3600000]
        --http-hosts <http-hosts>
            List of allowed Host header values. This option willvalidate the
            Host header sent by the browser, it isadditional security against
            some attack vectors. Specialoptions: "all", "none". [default: none]
        --http-ip <http-ip>
            Configures HTTP server interface. [default: 127.0.0.1]

        --http-max-payload <http-max-payload>
            Maximal HTTP server payload in Megabytes. [default: 5]

        --http-port <http-port>
            Configures HTTP server listening port. [default: 9934]

        --http-rest-api <http-rest-api>
            Enables REST -> RPC converter for HTTP server. Allows you tocall RPC
            methods with `POST /<methodname>/<param1>/<param2>`.The "secure"
            option requires the `Content-Type: application/json`header to be
            sent with the request (even though the payload is ignored)to prevent
            accepting POST requests from any website (via form submission).The
            "unsecure" option does not require any `Content-Type`.Possible
            options: "unsecure", "secure", "disabled". [default: disabled]
        --http-threads <http-threads>
            Configures HTTP server threads. [default: 4]

        --ipc-path <ipc-path>
            Configures IPC server socket path. [default: ./jsonrpc.ipc]

        --ipc-request-separator <ipc-request-separator>
            Configures TCP server request separator (single byte). If "none" the
            parser will try to figure out requests boundaries. [default: none]
        --tcp-ip <tcp-ip>
            Configures TCP server interface. [default: 127.0.0.1]

        --tcp-port <tcp-port>
            Configures TCP server listening port. [default: 9955]

        --tcp-request-separator <tcp-request-separator>
            Configures TCP server request separator (single byte). If "none" the
            parser will try to figure out requests boundaries. Default is new
            line character. [default: 10]
        --upstream-ws <upstream-ws>
            Address of the parent WebSockets RPC server that we should connect
            to. [default: ws://127.0.0.1:9944]
        --websockets-hosts <websockets-hosts>
             List of allowed Host header values. This option will validate the
            Host header sent by the browser, it is additional security against
            some attack vectors. Special options: "all", "none". [default: none]
        --websockets-ip <websockets-ip>
            Configures WebSockets server interface. [default: 127.0.0.1]

        --websockets-max-connections <websockets-max-connections>
            Maximum number of allowed concurrent WebSockets JSON-RPC
            connections. [default: 100]
        --websockets-origins <websockets-origins>
             Specify Origin header values allowed to connect. Special options:
            "all", "none".  [default: none]
        --websockets-port <websockets-port>
            Configures WebSockets server listening port. [default: 9945]

lib.rs:

一组用于构建以太坊交易的原始组件。

依赖关系

~1–1.7MB
~36K SLoC