火币在在安全中作了哪些实践

火币CTO巨建华访谈:数字货币交易平台的基础架构和技术挑战
在最近举办的“比特币产业峰会暨火币网一周年庆”活动期间,InfoQ就数字货币交易平台的基础架构和技术挑战采访了火币CTO巨建华,他分享了本身在行业领域的宝贵经验和精彩观点。前端

InfoQ:首先请作一下自我介绍。算法

相关厂商内容sql

微信数百亿条消息收发背后的Yard平台设计
网易严选售后核心模型的抽象及架构迭代
Go语言团队主管透露下一代Go/Go2关键改变
华为:开源产品云化最大的坑以及思路分析
区块链浪潮来袭,企业技术leader如何理性抉择?
相关赞助商数据库

巨建华:我前后毕业于电子科技大学和中国人民大学,曾就任于海虹控股、中国搜索、大麦网和YOKA时尚网等知名IT企业,多年以来一直从事互联网电子商务、搜索和门户网站相关技术研发工做。后端

在工做期间成功构建了目前国内最大票务网站大麦网的全国联网票务系统,部署在数千个场馆节点,支撑了全国70%以上的演出和体育赛事的售票;5年互联网金融软件领域创业经历,主持开发了多款基于上证所Level-2高速行情数据的软件产品;2013年进军医疗行业应用开发,推出基于知识库的艾默康智能处方评估系统被应用于100多家大型医院得到了较高的行业知名度;2014年加入火币网后,对火币网的比特币交易系统进行了彻底的重构,使之具有了更加高速,稳定和开放的能力。缓存

InfoQ:相比传统金融交易平台,火币网比特币交易系统(如下简称火币网)的不一样点在哪里?安全

巨建华:因为市场性质的不一样,致使火币网和传统的金融交易平台在业务营运方式较大差别,比特币是一种全球性的数字资产,它的价格行情会受到全球市场的影响,启动了金融杠杆交易后这种价格波动的影响被放大了多倍,这致使了交易系统必知足整年24x7任什么时候刻不间断的交易服务,系统服务的中断意味着行情将受到剧烈的波动加大交易的风险,所以咱们在系统设计上须要尽量的避免停机维护,从硬件到软件都作到了完整的冗余和高可用,每个系统都充分围绕着高可用和容错来设计和实现,咱们作到了全部系统模块的高可用和核心交易系统的快速故障转移。服务器

相对于传统金融交易平台,火币作数字加密货币金融业务的同时也是一家互联网公司,众所周知互联网产品的创新迭代是很是快速的,在快速迭代的产品开发过程咱们推出了大量不一样的创新金融业务,这也致使了很是复杂的资产结算逻辑,在高峰期时天天的交易额达到了10个亿人民币的规模下,咱们不能像传统证券交易所那样当天卖出证券资产后次日才能提现,由于比特币领域太新,在没有法律承认的第三方资金监管的状况下,用户但愿本身的资产随时掌握在本身手里才踏实,这带来了用户对法币和虚拟货币充值提现的实时结算需求,使咱们结算和风控系统的设计也变得很是复杂,实现结算提现加比特币资产的不可追回特性,致使出现任何问题很是致命的,所以咱们比传统金融平台来讲在技术上存在更大的挑战。微信

InfoQ:火币网的技术难点有哪些? 如何解决的?网络

巨建华:火币网的技术难点主要在于对比特币的撮合交易引擎和比特币数字资产的管理这两方面。

和传统证券交易所同时进行数千个商品的撮合交易不一样,在火币网目前只有比特币和莱特币这两种主流数字货币在交易,这意味着天天10个亿的交易额到将来交易额不断增加的时候,全部用户都是对这两种商品在报价交易,因为撮合交易的规则要求彻底遵循时间优先和价格优先的原则进行撮合成交,这致使咱们在单个品种天天的交易额在很大程度上超过了大部分如今流通的股票证券交易,不能像传统的证券交易所经过增长集群节点将不一样的商品放到不一样的服务器上实现交易系统容量的提高,这个难题咱们经过选择对单进程计算最占优点的硬件,在对算法进行了大量的改进实现了单机撮合性能的数量级提高,确保了对将来交易业务增加的支撑。

比特币自己是一个分布式网络,普通用户使和比特币只须要下载和安装一个钱包客户端,或者使用在线钱包服务便可知足使用比特币的需求,可是因为比特币网络还处于发展初期,并无很是有效的开源软件能够支撑住比特币交易所这样集中式的大量比特币资产充值和提现的业务需求,所以咱们须要按照比特币协议,从新设计并量身打造出交易所钱包软件,高效安全的知足数十万用户的充值和提现需求。

InfoQ:火币网的技术栈是怎样的?

巨建华:火币网最初是基于LNMP搭建的交易平台,在关键的钱包和撮合引擎方面使用C++实现,随着业务的发展和业务增加带来的营运压力提高,咱们逐渐根据业务的特色进行了相应的技术升级。

首先咱们升级到了面向服务的架构,原来的PHP做为Web层实现与用户的交付,将业务层转向用Java开发的后端服务中,这种架构下咱们能够在保持很是高效的前端产品迭代周期上,并确保整个服务平台的稳健。

在服务框架方面咱们分别采用了Rest.li和Thrift,根据不一样的应用场景灵活选用,并经过ZooKeeper实现了服务的配置管理和集群管理。 和大部分互联网企业同样,咱们在实际业务中大量使用了Redis作持久化的存储和数据缓存,经过Haproxy和LVS结合Keepalived实现关键系统的软件负载均衡。

消息服务方面咱们分别使用了RabbitMQ和Appolo,用于实现订单和行情数据的发布管理,经过Node.js和QuickFix这两个开源项目咱们实现了实时的行情推送,并为用户提供了可靠的交易API服务。

Python承担了部份运维管理和平常数据处理任。

数据库层面咱们使用MongoDB承担了所有行情数据的存储和分发,经过MySQL、InnoDB实现了业务数据的存储。同时咱们的交易终端覆盖Windows/Mac OS X/Android/iOS,在桌面和移动端为用户提供了更好的交易体验。

InfoQ:安全性对于数字货币来讲相当重要,火币网是如何从技术方面保障安全的?

巨建华:安全对于交易所来讲是很是重要的一面,日本最大交易所MtGox由于安全问题的倒闭在世界范围内影响了比特币的价格走势,为整个比特币交易领域敲响了警钟。

火币网在成立初期就创建了安所有,由经验丰富的安全专家带队参与到了火币网开发和运营的方方面面,从代码安全到系统监控甚至社交攻击防御,处处都有安所有门的影子。 在火币网发展速度最快的时候,咱们面临了大规模的DDOS攻击,最高时攻击的流量达到80多G,咱们在改进自身系统和的同时,也引入乌云、安全宝、加速乐等安全领域的公司的专业服务,这些工做使火币网一直以来未发生过安全隐患。 在解决自身安全问题的同事,咱们也在风控系统中增长了对用户的安全监控,好比有用户账号被盗之后若是存在异常的登录提现等行为,咱们客服系统上会有相应的报警,客服人员会在第一时间和用户进行电话核实。

InfoQ:对于7x24的服务承诺,火币网在架构和运维方面是如何作的?

巨建华:咱们在全部的系统架构都为高可用作了大量的设计,在前端Web层面和后台数据缓存和业务服务层均容许作任意的节点失效。在数据库层面咱们经过复制和数据分区的方式实现了主备层面的高可用,在出现故障后经过相应的业务日志检查便可迅速经过ip漂移实现数据库的故障恢复。

运维方面,从硬件层面的IDC机房线路到防火墙等网络设咱们都实现了自动化的主备切换的能力,使用Zibbix完善了监控系统,除了对全部服务器和网络设备的监控外,还根据业务场景提供了数百个监控点,使咱们能够在第一时间得到系统的运行情况和问题报告。 工做时间上咱们运维和客服都是24小时待命的,确保了不会出现管理上的空档期带来的意外故障,并为用户提供了随时能够联系报故障的渠道,使咱们能快速响应用户的问题。

InfoQ:对于火币网的重构过程,你有哪些经验收获能够分享给你们?

巨建华:火币网的重构工做主要体现对技术平台的升级和技术团队的建设上,经过初期的问题分析、方案制定和人员招聘,咱们只花了比较短的时间,这个过程当中管理团队的支持显得很是重要。 重构过程最重要一环,是火币网重构完成的升级工做主要的挑战在于过程当中不能暂停业务,所以从重构初期到完成成级,咱们没有发布过一次停机服务的公告。 不停机的重构加上复杂的业务环境,使咱们在重构升级的过程当中常常面临一些两难和折中的选择,在这些过程当中也产生和遗留下了一些问题,在这个过程当中我所得到的主要经验如下几点比较重要:

充分和原业务和技术团队沟通,深刻了解业务了解是重构的前提
架构设计和实现上须要支持灰度升级,随时回滚
创建尽量真实的测试环境
对可能产生的问题作好规划和演练是重构成功的前提
InfoQ:火币网下一步的发展路线图是什么?

巨建华:火币网下一步将经过完成在整个产业链的布局,推进比特币整个产业务链的发展。具体在技术层面来讲,咱们将进行新一代交易系统的设计,使之具有更好的性能和自动灾难切换的能力,同时咱们将加大在矿场投资管理、比特币钱包及比特币支付、虚拟货币基金、虚拟商品期货等金融衍生品领域的技术研发力度,为提高比特币在金融领域和现实世界中的应用提供有力的技术支持。

InfoQ:目前互联网金融很火,不少IT人员都想进入该领域,你从本身的职业生涯角度,会有哪些建议?

巨建华:目前互联网行业广泛缺乏高级IT人才,在互联网金融领域更是如此,可是和社区门户、搜索以及电商等领域不一样,互联网金融领域对于安全和稳定有着超乎寻常的需求,对于基础技术的掌握要求更加深刻。

举个例子,不少人都很是熟悉的MySQL数据库,在传统互联网领域只须要了解通常的主从复制和sql语句编写调优便可,可是在将MySQL用到存储用户资产、时刻进行高并发的交易时就要求对于数据库事务有着深刻的了解才能在确保数据的准确性和一致性的前提下,保证计算的精度和性能。在金融领域对于主从复制成功的数据库还须要数据正确性的较验在其它领域是不多见的。 多数中小型的互联网金融企业由于成本方面的缘由在大量的使用MySQL数据库而不是Oracle这样的解决方案,所以值得但愿进入互联网金融领域的人员深刻学习,可是当成长到必定规模之后Oracle、DB2又会在必定程度上成为主流,也是须要掌握的。

Java平台是互联网金融领域技术平台的主力军,几乎全部主流的金融平台都是使用Java开发的,对于想进入互联网金融领域的IT人员来讲最好可以系统的掌握Java平台的开发和设计。

对于金融知识的掌握也是进入互联网金融领域的一大挑战,若是不了解金融产品的基础知识,就没法理解复杂的业务逻辑,难以胜任高级的系统架构师和开发人员的职位,这些都是挑战同时也是机遇。

在10月份举行的QCon上海2014大会上,巨建华将做为特邀讲师在“互联网思惟对金融的挑战”专题中进行有关“火币网比特币交易系统的构建实践”的演讲分享。

相关文章
相关标签/搜索