因为BTS有很多开放的公共节点,可以直接使用公共节点,并用nginx的反向代理和负载均衡方案来尽可能保障访问公共节点时的稳定性。
目前已发现的BTS可用公共节点:
国内(已测试,可以使用):
1、wss://btsapi.topnewdata.com/ws (wss可换成https)
2、wss://ws.gdex.top 或 wss://ws.gdex.top/ws (wss可换成https)
3、wss://bitshares.dacplay.org/ws (wss可换成https)
4、wss://bitshares-api.wancloud.io/ws (wss可换成https)
国外(已测试,可以使用,但海外速度访问较慢,可作为备用节点):
1、wss://bit.btsabc.org/ws (香港) (wss可换成https)
2、wss://dex.rnglab.org/ws (荷兰) (wss可换成https)
3、wss://dexnode.net/ws (美国) (wss可换成https)
4、wss://la.dexnode.net/ws (美国) (wss可换成https)
每个BTS节点作为一个虚拟主机,并反向代理到对应的BTS节点的https接口。
比如9001端口直接反向代理到https://btsapi.topnewdata.com/ws
server {
listen 9001;
server_name localhost;
location / {
proxy_pass https://btsapi.topnewdata.com/ws;
}
}
这里共有八个BTS节点,所以新建8个虚拟主机,端口从9001到9008.
使用nginx的负载均衡机制,配置upstream,其中9005到9008为国外的BTS节点虚拟主机,设置为backup,表示备用节点(当9001到9004的主节点down掉或者访问繁忙的时候便启用备用节点)
upstream bts_common_server {
least_conn;
server localhost:9001;
server localhost:9002;
server localhost:9003;
server localhost:9004;
server localhost:9005 backup;
server localhost:9006 backup;
server localhost:9007 backup;
server localhost:9008 backup;
}
创建9000端口的虚拟主机,反向代理到bts_common_server
server {
listen 9000;
server_name localhost;
location / {
proxy_pass http://bts_common_server;
}
}
重启nginx服务
systemctl restart nginx.service。
至此,完成BTS公共节点负载均衡的配置。访问使用时直接使用http://192.168.0.128:9000即可。
curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["database", "get_account_by_name", ["oflyhigh"]], "id": 1}' [http://192.168.0.128:9000](http://192.168.0.128:9000/)
附完整配置:
upstream bts_common_server {
least_conn;
server localhost:9001;
server localhost:9002;
server localhost:9003;
server localhost:9004;
server localhost:9005 backup;
server localhost:9006 backup;
server localhost:9007 backup;
server localhost:9008 backup;
}
server {
listen 9000;
server_name localhost;
location / {
proxy_pass http://bts_common_server;
}
}
server {
listen 9001;
server_name localhost;
location / {
proxy_pass https://btsapi.topnewdata.com/ws;
}
}
server {
listen 9002;
server_name localhost;
location / {
proxy_pass https://ws.gdex.top/ws;
}
}
server {
listen 9003;
server_name localhost;
location / {
proxy_pass https://bitshares.dacplay.org/ws;
}
}
server {
listen 9004;
server_name localhost;
location / {
proxy_pass https://bitshares-api.wancloud.io/ws;
}
}
server {
listen 9005;
server_name localhost;
location / {
proxy_pass https://bit.btsabc.org/ws;
}
}
server {
listen 9006;
server_name localhost;
location / {
proxy_pass https://dex.rnglab.org/ws;
}
}
server {
listen 9007;
server_name localhost;
location / {
proxy_pass https://dexnode.net/ws;
}
}
server {
listen 9008;
server_name localhost;
location / {
proxy_pass https://la.dexnode.net/ws;
}
}
参考资料:
https://www.btspad.com/node
https://juejin.im/post/5adc425f518825670f7b6fc8