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] 雷志伟 等 基于区块链的健康链系统设计与实现. 《计算机与数字工程》2020年第12期

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

  1. 从入门到入土:基于C语言采用SOCKET套接字实现TCP公开扫描程序Web服务器扫描程序|代码展示

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. 基于JAVA疫情社区健康评估系统设计与实现 开题报告

      本科生毕业论文 基于Java疫情下社区健康评估系统springboot框架 开题报告 学    院: 专    业: 计算机科学与技术 年    级: 学生姓名: 指导教师:   XXXX大学本科 ...

  3. 基于Java实现的Web服务器与测试工具开发

    资源下载地址:https://download.csdn.net/download/sheziqiong/85706486 资源下载地址:https://download.csdn.net/downl ...

  4. 无线接入认证web服务器搭建,基于WEB和RADIUS的无线局域网接入认证系统

    摘要: 无线局域网的安全运营管理是近年的研究热点,而用户的接入认证是网络安全管理和运营的基础.常见的接入认证技术有PPPoE,IEEE 802.1x和Web认证三种.本文针对无线局域网的特点,以用户进 ...

  5. 基于区块链的健康链系统设计与实现(5)区块链性能优化

    4.4区块链性能优化 通过更改相关参数和优化,交易性能在单节点的情况下能达到100个TPS以上.比如将生成块的时间由每10分钟改成10秒,将调整难度时间由2周改成80秒,将交易内存池扩大,并扩大交易最 ...

  6. 基于区块链的健康链系统设计与实现(4)系统实现

    4 系统实现 4.1 SDK接口 SDK接口主要是基于PHP语言通过libcurl扩展库实现了基于Http的JSON-RPC客户端.[12] 其主要函数代码为: //初始化一个CURL会话 $curl ...

  7. 基于区块链的健康链系统设计与实现(3)系统设计

    3 系统设计 3.1 系统整体设计 系统架构如图5,系统将搭建SDK接口服务器作为微信程序和区块链的通讯中介.微信程序通过Https协议与SDK接口进行数据交互,SDK接口与区块链系统通过JSON-R ...

  8. 基于区块链的健康链系统设计与实现(1)引言

    摘 要:疫情期间,各大公共场所的人员进出都需要进行测温和信息登记,鉴于人工纸张录入数据的方式效率低下,本系统基于微信小程序开发相关功能,通过扫码的形式实现人员的注册和信息登记,同时基于比特币的区块链技 ...

  9. 基于区块链的健康链系统设计与实现(6)结束语

    5 结束语 通过本文基于区块链体系架构建立的健康链系统,有效地解决了现实生活中的人员进出登记流程的繁琐问题.但同时系统属于疫情防控和复工复产特殊形势下迅速推出的一项举措,由于时间紧迫,尚有很多问题和工 ...

最新文章

  1. 2022-2028年中国卫星互联网产业深度调研及投资前景预测报告(全卷)
  2. error和exception
  3. java 时间序列预测_基于spark的时间序列预测包Sparkts._的使用
  4. Linux策略性路由应用及深入分析(iproute2)
  5. HelloDjango 第 08 篇:开发博客文章详情页
  6. jqueryui时间插件_jQueryUI AutoComplete插件
  7. paip.c++ 指针跟引用的区别.
  8. Iconfont-阿里巴巴矢量图标库
  9. c语言中取反的作用,一位取反 硬件实现_c语言按位取反什么意思
  10. Linux 的日志服务器 详解(Rsyslog)
  11. jQuery 事件冒泡
  12. ios 切换多任务后台界面应用闪屏
  13. 【Github上有趣的项目】Deep-Flow-Guided-Video-Inpainting 从视频中抹去一个人(或消除马赛克)
  14. FME教程:GIS建筑面转CAD格式JMD,还原房屋建筑结构、层数、地物样式,shp转CAD,GIS转dwg
  15. Java客户端开发与服务端开发
  16. Mac修改iPhone备份到移动硬盘或其他位置,避免备份空间不足
  17. 中科大科学岛计算机博士,2017年科学岛分院博士研究生招生拟录取名单公示
  18. spark RDD 打印元素
  19. 2017常见android面试题
  20. 可信计算的功能与技术

热门文章

  1. 图解 Hibernate,session.close(),session.clear()区别
  2. 荣耀30s鸿蒙5g,荣耀赵明:荣耀30S将掀起5G手机购买狂潮
  3. ord()和chr()是一对功能相反的函数_一对平行无限长直载流导线产生的磁场
  4. 大数据时代数据中心的发展思考
  5. C++:C++语言入门级基础知识考察点回顾之函数、结构体和类
  6. Interview:算法岗位面试—11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录
  7. DL之Panoptic Segmentation:Panoptic Segmentation(全景分割)的简介(论文介绍)、全景分割挑战简介、案例应用等配图集合之详细攻略
  8. docker-elk装IK自定义分词库
  9. NumPy学习笔记(一)
  10. (转)select、poll、epoll之间的区别