1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 基于区块链的健康链系统设计与实现(2)区块链平台Web服务器

基于区块链的健康链系统设计与实现(2)区块链平台Web服务器

时间:2022-08-17 04:09:29

相关推荐

基于区块链的健康链系统设计与实现(2)区块链平台Web服务器

2.2 区块链平台分析

Bitcoin(比特币)作为区块链技术的起源,是目前发展最成熟的开源区块链平台之一,拥有大量的开发人员和活跃的开发社区。Ethereum(以太坊)核心是支持智能合约的EVM(以太坊虚拟机),提供了大量方便接口便于开发者进行深度应用开发。 Hyperledger Fabric(超级账本)使用诸如单节点共识、分布式队列共识等共识方式,并支持智能合约和外部组件扩展。但Ethereum和Fabric部署困难相对困难。EOS区块链采用DPOS共识机制,生成区块速度快、延迟低,能支持数百万级别用户。但EOS作为新兴的区块链平台发展还不成熟,同时开发社区及开发人员相对较少,进行开发研究较为困难。[4]

比特币作为一种以交易为模型的数字货币系统,其交易的数据结构如图2。交易由交易输入和交易输出组成,交易输入和交易输出可以有多个,表示一次交易可以将先前多个账户中的比特币合并后转给另外多个, 每个输入主要由上笔交易的哈希PrevTxHash、上笔交易的输出索引Index和输入脚本ScriptSig组成,其中ScriptSig是持有者对当前交易的签名。通过对某个交易的输入可构成多条以交易为结点的链表,并一直向前追溯至源头的Coinbase交易(即挖矿所得的比特币)。如果一笔交易的输出没有任何另一笔交易的输入与之对应,则说明该输出中的比特币未被花费。[5]

区块是区块链的一个数据单元,它由区块头和区块体组成。比特币的区块数据架构如图3,区块体包含所有的交易内容,区块头包含版本号、时间戳、随机值和难度值等基本信息,并包含上一个区块的哈希值和交易的默克尔树根哈希值。区块的哈希值通过对区块头进行两次SHA256哈希运算得到。通过指向上一个区块的哈希值所有的区块构成一个链条,同时,区块的哈希值和对区块内的所有交易计算得到的默克尔树根哈希值都可以保证数据的不可篡改和完整。[6]

2.3 Web服务器分析

Nginx是一个跨平台的Web服务器, 相比Apache、Tomcat和Jetty,它具备高扩展、热部署、单机支持10万以上的并发连接、低内存消耗和高可靠的特性。

Nginx提供了异步的、非阻塞的Web服务,它的系统架构如图4,它主要由一个Master主进程、多个Worker工作进程、一个可选的Cachemanager缓存索引管理进程以及一个可选的Cacheloader缓存索引进程组成。

Master主进程用来启动和管理Worker工作进程,使用管道机制与工作进程通信,并且通过信号机制与外界通信来实现重启、退出、停止等系统服务。Worker进程是提供Web服务的主体,它收到Web请求通过代理转发给后端服务器,由后端服务器进行数据处理和页面组织后返回数据。其中FastCGI是一个可伸缩地、高速地在Nginx服务器和动态脚本语言间通信的应用层通信协议,PHP作为一种服务端、完全跨平台的HTML嵌入式的脚本语言,它的PHP-FPM模块实现了FastCGI协议并负责处理PHP动态请求,从而分担了Nginx前端的压力,使Nginx专注处理静态请求。[7]

Cachemanager进程和Cacheloader进程主要是将历史应答数据进行本地缓存,从而提高请求的响应效率,降低网络压力。Cacheloader进程在Nginx服务启动一段之后(默认是1分钟)由主进程生成,在缓存元数据重建完成后就自动退出。Cachemanager进程存在于主进程的整个生命期,负责管理缓存索引,支持工作进程对缓存数据的快速查询。

多个Worker进程之间是对等的,它们同等竞争来自客户端的请求,通过互斥锁机制保证最终由一个Worker进程进行处理,从而做到资源的负载均衡。[8]

【参考】

[1] 雷志伟 等 基于区块链的健康链系统设计与实现. 《计算机与数字工程》第12期

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。