比特股中文网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

比特股中文网 首页 高级教程 查看内容

BitShares API 服务器架设指南 - 公共API篇

2017-6-23 00:17| 发布者: admin| 查看: 1537| 评论: 1|原作者: @boombastic|来自: Hi区块链

原文地址:http://mp.weixin.qq.com/s/S-TbuvDSVSeJ0lYsTvNhjQ

作者:@boombastic

接上一篇个人API服务器的架设(BitShares API 服务器架设指南(一) 个人篇),这一篇探讨一下公共API服务器的架设。目前暂时还没有最佳实践的规范,行业内很多比特股技术爱好者和先行者都在摸索尝试,也希望这篇文章能引起大家的关注,一起来探讨如何能够最有效的架设公共API服务器,为更多用户提供数据支持服务,提升用户体验,从而推动比特股生态的发展。

公共API服务器一般架设在Linux服务器上,也面向专业技术用户,所以文中更多用命令或者代码来阐述,少了些描述性文字。欢迎技术同好轻拍。因为我目前架设的服务器主要面向国内用户,所以服务器的选择,域名解析的选择,包括本文用中文写,多偏向国内的使用。

我们这里谈到的 API 服务器,实际上有以下几种用法,不同的用法,硬件要求及配置上有很大不同:

1.个人使用
主要是个人用户在使用轻钱包或者网页钱包时,使用运行在本地,独占使用的API服务器。现代的个人电脑配置基本就足够了。请参见个人篇。

2.公共 API 服务器

提供一个公共的API服务器,向公众开放服务。一般需要是托管在IDC的服务器或者从云服务提供商那里租赁的VPS,对配置带宽都有一定要求。


配置公共API服务器

配置一个运行在公网上,面向普通用户的API服务器,包括以下几个步骤。

1.域名

2.租用服务器

3.SSL证书

4.配置站点首页

5.配置并架设节点

6.配置nginx负载均衡

7.架设钱包网站(非必须)

8.架设水龙头(非必须)

我们举例使用 dexhub.io 这个新域名,最后要实现的目标是:

•提供一个介绍性的站点:https://dexhub.io

•提供一个在线网页轻钱包:https://wallet.dexhub.io

•提供一个公共API服务接入点:wss://wallet.dexhub.io/ws

•提供一个水龙头服务:https://faucet.dexhub.io

域名

这部分就简化了,大概人人都会,可以去godaddy注册,比较便宜,选择也多。国内的域名注册商也是可以。不过需要注意到是,如果租用国内的服务器,域名必须完成实名制和备案。否则会造成域名访问被屏蔽。

我一般喜欢注册完后用 dnspod 来做域名解析。在国内解析效果不错,很稳定,如果升级到付费套餐的话,提供更多的智能线路解析,还有A记录,CNANME记录的负载均衡选项。比如在南方机房配置了服务器,也在北方机房配置了服务器,通过域名解析自动指向离用户最近的服务器,这样可以在第一个环节提升用户访问时的速度。当然还有个因素是如果站点访问量比较小,DNS解析量少,local dns就几乎没有缓存,理论上解析速度就慢,反之亦然。

国内其他的域名解析商提供的服务之间的比较我没有深入研究过,比如阿里云的DNS,口碑似乎还不错,欢迎各位补充,这个话题可以聊得很深。

域名解析记录略过。

服务器租用

怎么租用也不废话了,我这里用的是阿里云的服务,购买了服务器,我们需要讨论下配置和架构。

我们现在知道API服务器在提供服务时,以下几个要素需要特别关注:服务器带宽、内存、CPU。经过测试,我觉得下面的架构比较合适。前置一台nginx服务器进行负载均衡,将wss请求分配到后段的多台节点服务器,可以根据监控使用状况,或者增加后端节点服务器,或者增加nginx服务器的带宽是配合实际需求。

在测试例子中,我在阿里云上租用了2个ECS示例,配置都是8核32G,硬盘空间不算贵,各挂了200G的云磁盘,好在IO读写不吃紧,问题不大,所以没用SSD;1个RDS示例,配置可以最小的,为水龙头服务准备,非必须。其中一台仅作为节点服务器,运行witness_node,另一台充当多个角色,即作为节点服务器运行了witness_node,也运行了nginx,充当web服务器。喜欢干干净的话最好各个角色独立出来。

所以目前架构图大致如下

ECS A 和 ECS B是2个ECS示例,其中ECS B上运行了2个witness_node节点,ECS A上运行了一个 witness_node,并且运行了nginx,通过nginx将 wss 请求均衡转发到后端的对它来讲可用的3个节点上。nginx并负责SSL、网页钱包等资源服务。

两台服务器的内网IP假设分别为10.10.10.1和10.10.10.2。

在nginx服务器上先安装nginx,以及SSL证书。

sudo apt-get update
sudo apt-get install nginx

我们并且在2台服务器上创建了用户deploy,用户目录位于/home/deploy,用户有sudo权限。

# 当前是root登录的系统,创建用户 deploy
adduser deploy
adduser deploy sudo

以后我们就用deploy用户通过 ssh 访问系统了。这里最好配置 sshd 以后不允许 root登录,也不允许使用密码登录,只允许用PublicKey登录,摘要如下。

# /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
PermitEmptyP
比特帝国区块链交易所
发表评论

最新评论

引用 fff3669 2017-11-26 19:15
币安:http://www.lelev.com 大陆重新开放注册。

查看全部评论(1)

帝国区交所
点击进入OpenLedger交易所
返回顶部