CN113127499B - 一种基于区块链的微服务方法、设备及介质 - Google Patents
一种基于区块链的微服务方法、设备及介质 Download PDFInfo
- Publication number
- CN113127499B CN113127499B CN202110523278.7A CN202110523278A CN113127499B CN 113127499 B CN113127499 B CN 113127499B CN 202110523278 A CN202110523278 A CN 202110523278A CN 113127499 B CN113127499 B CN 113127499B
- Authority
- CN
- China
- Prior art keywords
- service
- transaction
- micro
- core enterprise
- block chain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000012544 monitoring process Methods 0.000 claims abstract description 9
- 230000001360 synchronised effect Effects 0.000 claims abstract description 4
- 238000004590 computer program Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 241000748186 Archaius Species 0.000 description 3
- 206010033799 Paralysis Diseases 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000005304 joining Methods 0.000 description 2
- 241000700189 Hystrix <Rodentia> Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于区块链的微服务方法,包含步骤:为微服务架构中的核心企业微服务分配区块链平台中的记账节点,区块链网关的监听该核心企业微服务的业务,当所述业务属于交易业务,区块链网关通过区块链平台的查询接口定时检索该交易业务是否生成交易数据;当核心企业微服务的交易业务产生交易数据,通过区块链网关调用对应的记账节点并发出记账申请;该记账节点通过部署在区块链平台的智能合约为所述交易数据生成对应的区块加入区块链中,并广播给区块链平台的每个记账节点进行同步备份。
Description
技术领域
本发明涉及微服务、区块链技术领域,特别涉及一种基于区块链的微服务方法、设备及介质。
背景技术
传统的系统大多是单体架构模式,所有业务子模块都集中在一个很重的进程中,所有代码都在同一项目当中,随着规模越来越大,会造成诸如项目臃肿占用大量数据库、内存等资源,严重的会拖垮系,造成统维护困难的情况。为了改变这种状况,兴起了一种把臃肿的单体系统拆分成若干“微服务”的技术。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。
利用微服务框架,把一个系统拆分成若干微小服务,确实解决了传统系统的缺陷,但是这种传统的微服务也有其缺点:
1、服务调用跨网络,增加网络IO,降低性能。
2、服务调用跨更多节点,分布式事务数据不一致性可能更大。
3、需要服务发现,增加复杂度。
4、运维、测试基于微服务架构的应用也很复杂。
5、每个服务都是一个独立系统,代码重复,增加系统框架不一致的可能性。6、服务总的启动时间长。
7、服务依赖的传递性,必须依照顺序逐个部署。
用户向微服务架构发出的业务请求,是基于微服务架构的调用流程,由对应的多个微服务共同实现。生成的重要业务数据被存储在微服务的各个数据库中,一般情况下,微服务中的业务处理采用异步模式,由于系统故障或业务超时等原因,导致微服务的各个数据库所记录的业务数据存在不一致,并难以发现。
微服务中数据的不可信,将导致用户的业务请求发生错误,甚至是系统崩溃。如何保证微服务框架中各个微服务的业务数据可信,是目前亟需解决的问题。
另一方面,重要的业务数据不仅需要备份还需要保证不可篡改、同时还要保证对于相关各个微服务均透明,而微服务架构的分布式业务数据存储方式显然无法满足需求。
发明内容
本发明的目的是提供一种基于区块链的微服务方法、设备及介质,将区块链平台作为微服务平台的第三方应用,通过区块链网关监听微服务平台中的交易业务,为该交易业务的交易数据生成对应的区块存储至区块链,并广播至区块链平台的所有记账节点。同时本发明还在微服务平台中区分了核心企业微服务、非核心企业微服务,并在区块链平台为核心企业微服务、非核心企业微服务分配了对应的记账节点、非记账节点,使得核心企业微服务、非核心企业微服务对于区块链平台存储的交易数据具有不同的调用权限。本发明中通过交易数据的id号将微服务端与区块链端的交易数据相关联,微服务定时将区块链平台存储的交易数据与本地存储的交易数据进行对账,保证了微服务存储的交易数据的一致性。同时,当交易业务操作失败或超时,在微服务端能够实施交易业务的逆向操作(也称为交易回滚),修正微服务数据库内存储的数据,防止微服务各个数据库所记录的数据不一致,避免了微服务端数据的不可信。在交易业务成功时请求区块链平台进行记账,进一步保证了区块链平台存储的交易数据的可信度。
为了达到上述目的,本发明提供一种基于区块链的微服务方法,包含步骤:
为微服务架构中的核心企业微服务分配区块链平台中的记账节点,区块链网关的监听该核心企业微服务的业务,当所述业务属于交易业务,区块链网关通过区块链平台的查询接口定时检索该交易业务是否生成交易数据;
当核心企业微服务的交易业务产生交易数据,通过区块链网关调用对应的记账节点并发出记账申请;
该记账节点通过部署在区块链平台的智能合约为所述交易数据生成对应的区块加入区块链中,并广播给区块链平台的每个记账节点进行同步备份。
可选的,所述的基于区块链的微服务方法还包含:为微服务架构中的非核心企业微服务分配区块链平台中的非记账节点;当该非核心企业微服务的交易业务生成交易数据,通过区块链网关将该交易数据存储至对应的非记账节点。
可选的,所述核心企业微服务包含与其交易业务对应的至少一个交易数据库;所述交易数据库包含对应的交易用户表;
核心企业微服务基于对应的交易数据更新对应的交易用户表;当交易用户表更新成功,核心企业微服务通过区块链网关调用对应的记账节点并发出记账申请;否则,该交易用户表恢复至更新前的状态。
可选的,所述非核心企业微服务包含与其交易业务对应的至少一个交易数据库;所述交易数据库包含对应的交易用户表;
非核心企业微服务基于对应的交易数据更新对应的交易用户表;当交易用户表更新成功,非核心企业微服务通过区块链网关将交易数据存储至对应的非记账节点;否则,该非核心企业微服务的交易用户表恢复至更新前的状态。
可选的,所述核心企业微服务被配置为,能够通过区块链网关获取区块链上的任一区块,以及任一非记账节点存储的交易数据;所述非核心企业微服务被配置为,能够通过区块链网关获取其对应非记账节点存储的交易数据。
可选的,核心企业微服务/非核心企业微服务还为其交易数据生成唯一标识该交易数据的id号;所述id号与对应的交易数据一同被上传至核心企业微服务/非核心企业微服务对应的记账节点/非记账节点;
核心企业微服务定时通过其交易数据的id号获取区块链平台存储的对应区块,并基于该区块核对该核心企业微服务中对应的交易用户表;
非核心企业微服务定时通过其交易数据的id号获取区块链平台存储的交易数据,并基于获取的该交易数据核对该非核心企业微服务中对应的交易用户表。
可选的,区块链平台定时轮询所述记账申请,并向对应的核心企业微服务反馈接受或拒绝该记账申请。
可选的,所述核心企业微服务/非核心企业微服务还包含回滚日志表;所述回滚日志表用于记载在设定的时间内,核心企业微服务/非核心企业微服务的交易业务是否完成;若在设定的时间内该交易业务未完成,所述回滚日志表还记录对应的交易用户表是否恢复至执行对应交易业务前的状态。
本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如本发明所述基于区块链的微服务方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明所述基于区块链的微服务方法的步骤。
与现有技术相比,本发明的有益效果在于:
1)本发明的基于区块链的微服务方法、设备及介质,将区块链平台作为微服务平台的第三方应用,通过区块链网关监听微服务平台中的交易业务,为该交易业务的交易数据生成对应的区块存储至区块链,并广播至区块链平台的所有记账节点。通过区块链建立了一个记账簿,每个微服务的参与方在交易中都通过这个记账簿进行交互,保证每一笔发生的交易数据一定被可靠的记录下来并不可篡改,不必再反复确认,不必担心技术问题导致的业务流程变更,不必担心业务超时或系统故障导致的数据不一致性;通过本发明不必为微服务架构做应急系统,从而降低了信任成本。
2)本发明还在微服务平台中区分了核心企业微服务、非核心企业微服务,并在区块链平台为核心企业微服务、非核心企业微服务分配了对应的记账节点、非记账节点,使得核心企业微服务、非核心企业微服务对于区块链平台存储的交易数据具有不同的调用权限,不仅保障了核心企业微服务的隐私性,还进一步保证了系统的安全性,同时非核心企业微服务也能够参与到联盟企业(由核心企业和非核心企业加盟而成)相关的经营活动中。
3)本发明中通过交易数据的id号将微服务端与区块链端的交易数据相关联,微服务定时将区块链平台存储的交易数据与本地存储的交易数据进行对账,保证了微服务存储的交易数据的一致性。
4)当交易业务操作失败或超时,在微服务端能够实施交易业务的逆向操作(也称为交易回滚、交易业务补偿、事务补偿),修正微服务数据库内存储的数据,防止微服务各个数据库所记录的数据不一致,避免了微服务端向区块链平台提供错误数据,防止微服务端数据的不可信。在交易业务成功时请求区块链平台进行记账,进一步保证了区块链平台存储的交易数据的可信度。
5)微服务架构是一个分布式的应用技术架构,目的是有效的对应用进行拆分,实现敏捷开发、快速演化、便捷容错与弹性伸缩;而区块链技术本质上就是分布式数据库,本发明将微服务架构与区块链平台相结合,区块链平台做为微服务架构的一个第三方应用进行交互,有效的发挥了微服务架构的优点;而微服务架构通过区块链网关与区块链平台交互,区块链网关主要功能包括通讯网关、事件监听,同时配合微服务应用框架,完成数据一致性、对账功能;与区块链网关集成的能力,是微服务架构天生具备的,且不需要改变现有微服务架构的业务流程。
6)本发明允许多种软件系统计划并行运行,降低软件开发和测试团队之间的依赖性,支持多个技术、语言和框架,提升可释放代码通过创新的易用性。
附图说明
为了更清楚地说明本发明技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图:
图1为现有技术中电商平台应用服务的架构图;
图2为基于Spring Cloud实现的微服务架构图;
图3为微服务架构中服务调用流程图;
图4为基于Zuul网关为微服务架构实现分配服务请求示意图;
图5为基于Spring Cloud Config与Spring Cloud Bus联合为集群实现热部署示意图;
图6为本发明中微服务与区块链平台交互示意图
图7、图8为本发明的实施例中核心企业微服务、非核心企业微服务与区块链平台对应节点交互示意图;
图9为本发明的实施例中,对交易业务进行事务补偿示意图;
图10为本发明的基于区块链的微服务方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后等)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变,所述的连接可以是直接连接,也可以是间接连接。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
传统的系统大多是单体架构模式,所有业务子模块都集中在一个很重的进程中,所有代码都在同一项目当中,随着规模越来越大,会造成以下缺点,
1、项目过于臃肿:当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,增加维护难度。
2、资源无法隔离:整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮甚至瘫痪。
3、无法灵活扩展:当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群,但是这种扩展并非灵活的扩展。
针对以上问题,对业务实施了微服务化,微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元。微服务有如下优势:
解耦:对于底层程序员而言,看得见的好处就是解耦。要实现一个功能,可能并不需要很深入的了解别人的代码,新开发的微服务为其他功能提供服务,又不依赖于原来已有的功能,就是维护的这个微服务,可以独立部署,对其他服务也不是强依赖,不会因为其他服务不存在而造成自己的服务不能启动或者不可用的问题。
分布式:微服务架构下不存在一个特别大的系统,包含了很多中心功能,这样也能提高容错性,一个服务的瘫痪并不会使整个系统瘫痪。
权限验证:微服务是高度内聚的服务,在这个微服务中,可以定制任意合理规则,而这个规则又只适用于本身的这个微服务。
微服务下,每个服务是否使用数据库,数据库和其他服务公用还是自建,都有很大灵活性,在微服务架构下,整个系统不会受java、node.js、python或者go等计算机编程限制,而是多方协同不冲突,各个模块的单元测试容易自动化等。
微服务架构(MSA)是对原来的大型系统而言的,将一个大型的系统分散成很多微型小系统。微服务架构目前存在以下核心问题:
1)潜在的大量用户
随着互联网发展,已经越来越难以预估用户量以及由此产生的自然数据增长,企业如何做到无差别地为全世界所有的用户提供服务,成了一道难题。
2)产品迅速迭代
针对快速增长的业务需求,敏捷开发成为了热门的选择。在不断迭代的过程中,时间成本就显得尤为重要。产品快速升级必然会推动测试、交付甚至系统迅速迭代。
3)全天候不间断服务
要保证应用全天候不间断的可用,必须要考虑到随时可能发生的意外,如每次事故造成的宕机都可能会造成巨大的损失。另外,对系统升级和维护时要停机服务。频繁的系统升级同样会对系统可用性产生很大的影响。
4)流量突增
如促销活动、有计划的热点事件等引起的流量突增,可以通过提前扩容、预案演练等方式精心为这些流量突增准备应对方案。而意料之外的热点事件往往事发突然,系统来不及准备应对措施,只有当系统本身的可用性、弹性等非功能需求十分成熟,便可以在某种程度上应对这种突增。
5)业务组合复杂
随着企业发展和竞争愈加激烈,许多企业急于在单一领域编织一个大规模的成型业务系统,造成业务逻辑复杂。
图1是一张关于电商平台应用服务的架构图,可以看到里面交织了各种各样的业务,当行业的扩张速度超出预计的增长的时候,对底层支撑的考验要求也越来越高。任何对于现有微服务的架构的修改势必牵扯到对改造后的微服务架构进行运维、测试,大大增加了经济成本和时间成本。
目前通常基于Spring Cloude建立微服务架构,实现核心业务微服务化。SpringCloud是一个基于Spring Boot实现的应用开发工具,它为基于JVM的开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
如图2所示,Spring Cloude的微服务架构中包含了Zuul客户端、Zuul集群、EurekaServer集群以及Microserver集群。
用户通过Zuul客户端、Zuul集群向服务端(Eureka Server集群)发出服务提供请求(也即业务请求)。Zuul集群实现了路由转发功能和过滤器功能。所述路由转发功能是指接受Zuul客户端的服务提供请求,并转发到后端服务;所述过滤器功能是指提供一系列过滤器,完成权限、日志、限流等切面任务。Eureka Server为服务注册中心,是服务端,微服务架构中的任何服务都必须向Eureka Server进行注册。
Microservice集群包含了若干个微服务实例,分别对应项目中的各个微服务模块(包含服务生产者、服务消费者)。
所述服务生产者是指服务的被调用方,(即:为其他服务提供服务的服务);所述服务消费者是指服务的调用方(即:依赖其他服务的服务)。
如图3所示,服务生产者、服务消费者均可以作为Eureka客户端(服务节点),服务生产者也同时可以是服务消费者,服务消费者也同时可以是服务生产者。服务端(也即图3中的Eureka服务器注册中心)提供服务注册,当Eureka客户端的服务启动的时候,会主动向服务端进行注册,服务端会存储所有已经注册服务节点信息。服务端会管理这些节点信息,并且会将异常的节点移除服务列表。Eureka客户端通过在服务端的服务列表中查找服务提供者,并调用该服务提供者所提供的服务。如图4所示,客户端想要请求到服务,首先请求到Zuul网关,然后Zuul网关将请求分发到对应的服务调用者,服务调用者调用服务提供者,所有的服务必须先在Eureka服务器注册中心进行注册。
用于构建微服务的相关组件包含:
1、Netflix Eureka:
服务中心,云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
2、Netflix Hystrix:
熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
3、Netflix Zuul:
是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul相当于是设备和Netflix流应用的Web网站后端所有请求的前门,具有拦截和路由功能。
4、Netflix Archaius:
配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。可以实现动态获取配置,原理是每隔60s(默认,可配置)从配置源读取一次内容,这样修改了配置文件后不需要重启服务就可以使修改后的内容生效,前提使用archaius的API来读取。
配置文件是用于Spring cloud的一些系统参数配置,使用Archaius可以在改变某一属性值的情况下不需要重新部署生效配置。
5、Spring Cloud Config:
俗称的配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
集群处理了负载均衡,缓存,路由,访问控制,服务代理,监控,日志等。EurekaServer集群服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址。Micro Service集群是各位服务模块的集群。
6、Spring Cloud Bus:
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,如图5所示,可与Spring Cloud Config联合实现热部署。
7、Spring Cloud Sleuth:
日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。
8、Spring Cloud Task:
主要解决短命微服务的任务管理,任务调度的工作,比如说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几次。
微服务,是把传统的一个单体服务拆分成更多微小的服务,更灵活的去管理每一个小服务,有效的解决系统运行中因为一个小服务的卡死影响整个系统的运行状况。微服务的价值体现在单个单位内的技术架构模式,仅仅解决一个单位内部的问题。就比如说如果用微服务去实现不同单位的商业模式,需要开发两套微服务系统,同时要打通协议层和业务层,和底层类似消息总线解耦通信层,开发成本非常大。
而区块链不光能解决单位内部问题还能解决跨单位的问题。区块链的价值体现在跨单位合作的架构模式,能够有效构建不同单位间新商业关系,是跨单位基于协议之上业务处理的新模式。区块链的特点包含:
具有分布式记账簿:
各参与方(区块链的记账节点)在记账之后存在多个副本;
保证提交的交易一定会被记录下来;
保证记账不可逆,无法篡改;
各参与方的交易记录是相对透明的,可以通过这些记录验证新的交易。
区块链的核心价值在于通过数据共享建立了多方的信任机制。多参与方业务产生的信任问题是采用区块链技术的源动力。通过区块链使信任成本大大降低,这就是区块链的价值。
目前建立记账簿的方式有三种:
(1)公有链,一种开放的网络基础设施,向任何人公开,任何人自由加入。
(2)私有链,一个单位内部建立,可以帮助单位内部完成审核工作。
(3)联盟链,因特定业务由相关核心单位(核心企业)建立,采用多中心(每个核心单位为一个中心)的方式,其他上下游单位加入。
本发明提供一种基于区块链的微服务方法,如图10所述,包含步骤:
S1、为微服务架构中的核心企业微服务分配区块链平台中的记账节点(信任节点),区块链网关的监听该核心企业微服务的业务,当所述业务属于交易业务,区块链网关通过区块链平台的查询接口定时检索该交易业务是否生成交易数据(如甲给乙转账100元);
为提高工作效率,减少数据交互,通常不会把微服务架构中各个微服务生成的所有数据都存储在区块链平台中,而是将重要企业的交易数据存储在区块链平台;
S2、为微服务架构中的非核心企业微服务分配区块链平台中的非记账节点(非信任节点);当该非核心企业微服务的交易业务生成交易数据,通过区块链网关将该交易数据存储至对应的非记账节点(在本发明的实施例中,该交易数据也可以是明文,也可以是hash值)。
所述核心企业微服务被配置为,能够通过区块链网关获取区块链上的任一区块,以及任一非记账节点存储的交易数据;所述非核心企业微服务被配置为,能够通过区块链网关获取其对应非记账节点存储的交易数据。如图7、与8所示,本发明中的区块链平台通过联盟链建立分布式记账簿。交易数据存储、调用的安全问题,在技术上很难解决,但通过业务手段是可以规避的,这也是我们实施联盟链的重要原因。
微服务架构中的应用分为核心企业应用(对应若干个核心企业微服务)与非核心企业应用(对应若干个非核心企业微服务),非核心企业作为加盟企业。区块链平台存储所有的交易数据对于核心企业都是可见的,他们拥有记账节点(信任节点);对于非核心企业,只拥有非记账节点(非信任节点)。非核心企业只能查看区块链平台中与本企业相关的数据。很明显,非核心企业放弃了自己交易数据隐私权,但也得到了参与联盟相关经营活动的机会,这种方式加盟企业是可以接受的。
在本发明的一个实施例中,核心企业微服务、非核心企业微服务还为其交易数据生成唯一标识该交易数据的id号;所述id号与对应的交易数据一同被上传至核心企业微服务、非核心企业微服务对应的记账节点、非记账节点。通过该id号实现微服务的本地数据库的数据与区块链平台的交易数据相关联。
S3、当核心企业微服务的交易业务产生交易数据,通过区块链网关调用对应的记账节点并发出记账申请;
一般情况下微服务中的业务处理采用异步模式,发出记账申请后处于等待状态,区块链网关将记账申请转发给区块链平台。如果区块链平台返回接受Accept或者拒绝Reject,将结果通知微服务;如果区块链平台返回超时或者不可确定错误,即开始定时轮询,得到结果后通知微服务。
S4、该记账节点通过部署在区块链平台的智能合约为所述交易数据生成对应的区块加入区块链中,并广播给区块链平台的每个记账节点进行同步备份。
如图6所示,本发明将微服务与区块链平台进行整合,实现了跨单位微服务协同工作的商业模式。
区块链平台记账节点的数据共享是采用一个分布式的记账簿,将交易数据记录在多个副本上。这样的好处有:
(1)数据不可篡改:区块链存储的基本单元是区块,区块采用链式结构,新增的区块都知道自己前一个区块(前一行记录)是什么,可以一直追溯到根,区块的标识是区块的哈希值,同时链式结构保留了业务产生的轨迹,可以在新增交易的时候根据前面的记录做校验,保证了区块的内容不容易篡改(加入了哈希、时间戳等机制在技术上保证链条的正确性)。
(2)存储时的分布式一致性。
点对点可靠传送,确保数据之间的一致;
通过智能合约,在条件满足设定的条件下,交易数据的存储被自动执行;
数据安全,通过在联盟链中为核心企业、非核心企业设置不同的权限来实现。
微服务通过区块链网关与区块链平台交互,区块链网关主要功能包括通讯网关、事件监听,同时配合微服务架构,完成数据一致性、对账功能。与区块链网关集成的能力,是微服务架构所具备的。
在本发明的实施例中,所述核心企业微服务包含与其交易业务对应的至少一个交易数据库;所述交易数据库包含对应的交易用户表;
核心企业微服务基于对应的交易数据更新对应的交易用户表;当交易用户表更新成功,核心企业微服务通过区块链网关调用对应的记账节点并发出记账申请;否则,该交易用户表恢复至更新前的状态。
所述非核心企业微服务包含与其交易业务对应的至少一个交易数据库;所述交易数据库包含对应的交易用户表;非核心企业微服务基于对应的交易数据更新对应的交易用户表;当交易用户表更新成功,非核心企业微服务通过区块链网关将交易数据存储至对应的非记账节点;否则,该非核心企业微服务的交易用户表恢复至更新前的状态。
由于系统故障等原因,往往会造成交易业务无法按期完成。如图9所示,在本发明的一个实施例中,核心企业微服务在进行转账服务,用户1和用户2作为交易用户,用户1、用户2对应的数据库(也即所述交易数据库)分别为数据库1、数据库2。数据库1、数据库2分别包含了与用户1、用户2对应的交易用户表(也即图9中的用户表)。对于“用户1给用户2转账100元”的交易业务(该项操作通过更新数据库1、数据库2中对应用户表的用户余额来实现),当对应的微服务(转账服务)更新用户1的用户余额成功后,在转账服务更新用户2的账户之前,转账服务自己挂了;这时,用户1被扣了100元,但是“用户2”没多出来100元,数据不一致。此时需要对交易业务进行事务补偿。简单说就是如果对各用户表的SQL操作全部成功,则全部提交,如果任何一个用户表的SQL操作出现问题,则全部回滚至交易业务之间的状态,以保证数据的完整性以及一致性。在本发明的另一个实施例中,当区块链网关向微服务反馈记账失败时,为保证区块链平台与微服务的交易数据一致性,也需要对微服务的交易业务进行事务补偿。显然,我们不能依赖区块链平台支持事务的回滚,因为这个分布式的记账簿一旦记账就是不可更改的。
在本发明的实施例中,核心企业微服务、非核心企业微服务包含对应的回滚数据库(简称回滚库),所述回滚库中存储有对应的回滚日志表。我们该回滚日志表判断是否需要进行事务补偿。所述回滚日志表用于记载在设定的时间内,核心企业微服务、非核心企业微服务的交易业务是否完成;若在设定的时间内该交易业务未完成,所述回滚日志表还记录对应的交易用户表是否恢复至执行对应交易业务前的状态。
如图9所示,在本发明的一个实施例中,上述转账服务的操作可以通过下列步骤保证该转账服务被顺利执行:
第1-1步:生成全局唯一事务号(也即交易业务的id号);生成事务号对应的时间戳;
第1-2步:在回滚库的回滚日志表中插入---“事务号开始”的操作;
第1-3步:在回滚库的回滚日志表插入---“扣除用户1的账户100元“的操作;
第1-4步:在数据库1上执行事务(也即业务):
开始事务:
update用户表set(用户1的余额)=(用户1的余额)-100;
insert事务表(事务号,成功)
结束事务:
第1-5步:在回滚库的日志表插入---“增加用户2的账户100元”的操作;
第1-6步:在数据库2上执行事务:
开始事务:
update用户表set(用户2的余额)=(用户2的余额)+100;
insert事务表(事务号,成功)
结束事务:
第1-7步:在回滚库1的回滚日志表插入---“事务结束”的操作;
此时表示转账服务的交易业务被顺利执行。
假设设定转账超时时间是1小时;定期检查回滚库中的回滚日志表;如果交易id号对应的交易业务结束,则忽略;如果交易id号对应的交易业务没有结束,但是没超时,也忽略;如果交易id号对应的交易业务没有结束,交易业务超过1小时,则按照回滚日志,反向操作,对交易业务进行事务补偿,补偿步骤如下:
第2-1步:对用户2进行事务补偿,检查数据库2的用户2是否进账成功;如果成功,则认为事务完成,在事务回滚日志表中将这次事务标识为成功,并跳到“结束步骤”;否则进入第2步;
第2-2步:对用户1进行事务补偿,检查数据库1的用户1的事务是否成功;如果成功,则执行如下事务:
开始事务
update用户表set(用户1的余额)=(用户1的余额)+100;
update事务表(交易id号,回滚成功);
结束事务
第2-3步:在回滚日志表将这次事务标识为成功;
结束步骤
在本发明的另一个实施例中,微服务架构要与区块链平台进行定时对账。既然数据有本地存放,也有区块链平台存放,就有不一致的可能,就必须对账。对账以区块链平台为主。区块链利用已有的时间戳、交易先后次序、交易数据的id号,可以使得对账变得更加容易。
核心企业微服务定时通过所述id号获取区块链平台存储的对应区块,并基于该区块核对该核心企业微服务中对应的交易用户表。
非核心企业微服务定时通过所述id号获取区块链平台存储的交易数据,并基于该区块核对该非核心企业微服务中对应的交易用户表。
图8中体现了微服务与区块链交互的流程。图8中:
①是通讯网关:处理微服务发起的对区块链平台的调用;
②是事件监听:微服务对交易业务进行监听,区块链网关定时通过区块链平台的查询接口检索,发现数据变更时通知微服务;
③是数据一致性(事务回滚)。
④是对账。
本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如本发明所述基于区块链的微服务方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明所述基于区块链的微服务方法的步骤。
本发明将区块链平台作为微服务平台的第三方应用,保证每一笔发生的交易数据一定被可靠的记录下来并不可篡改,不必担心业务超时或系统故障导致的数据不一致性;通过本发明不必为微服务架构做应急系统,从而降低了信任成本。
本发明通过将微服务平台中的核心企业微服务、非核心企业微服务加入区块链平台的联盟链,使得核心企业微服务、非核心企业微服务对于区块链平台存储的交易数据具有不同的调用权限,进一步保证了系统的安全性。
本发明通过定时对账和事务补偿保证了微服务存储的交易数据的一致性。与区块链网关集成的能力,是微服务架构天生具备的,且不需要改变现有微服务架构的业务流程。通过本发明能够有效构建不同企业间的新商业关系。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种基于区块链的微服务方法,其特征在于,包含步骤:
为微服务架构中的核心企业微服务分配区块链平台中的记账节点,区块链网关监听该核心企业微服务的业务,当所述业务属于交易业务,区块链网关通过区块链平台的查询接口定时检索该交易业务是否生成交易数据;
当核心企业微服务的交易业务产生交易数据,通过区块链网关调用对应的记账节点并发出记账申请;
该记账节点通过部署在区块链平台的智能合约为所述交易数据生成对应的区块加入区块链中,并广播给区块链平台的每个记账节点进行同步备份;
为微服务架构中的非核心企业微服务分配区块链平台中的非记账节点;当该非核心企业微服务的交易业务生成交易数据,通过区块链网关将该交易数据存储至对应的非记账节点;
所述核心企业微服务包含与其交易业务对应的至少一个交易数据库;所述交易数据库包含对应的交易用户表;
核心企业微服务基于对应的交易数据更新对应的交易用户表;当交易用户表更新成功,核心企业微服务通过区块链网关调用对应的记账节点并发出记账申请;否则,该交易用户表恢复至更新前的状态;
所述非核心企业微服务包含与其交易业务对应的至少一个交易数据库;所述交易数据库包含对应的交易用户表;
非核心企业微服务基于对应的交易数据更新对应的交易用户表;当交易用户表更新成功,非核心企业微服务通过区块链网关将交易数据存储至对应的非记账节点;否则,该非核心企业微服务的交易用户表恢复至更新前的状态。
2.如权利要求1所述的基于区块链的微服务方法,其特征在于,所述核心企业微服务被配置为,能够通过区块链网关获取区块链上的任一区块,以及任一非记账节点存储的交易数据;所述非核心企业微服务被配置为,能够通过区块链网关获取其对应非记账节点存储的交易数据。
3.如权利要求1所述的基于区块链的微服务方法,其特征在于,核心企业微服务/非核心企业微服务还为其交易数据生成唯一标识该交易数据的id号;所述id号与对应的交易数据一同被上传至核心企业微服务/非核心企业微服务对应的记账节点/非记账节点;
核心企业微服务定时通过其交易数据的id号获取区块链平台存储的对应区块,并基于该区块核对该核心企业微服务中对应的交易用户表;
非核心企业微服务定时通过其交易数据的id号获取区块链平台存储的交易数据,并基于获取的该交易数据核对该非核心企业微服务中对应的交易用户表。
4.如权利要求1所述的基于区块链的微服务方法,其特征在于,区块链平台定时轮询所述记账申请,并向对应的核心企业微服务反馈接受或拒绝该记账申请。
5.如权利要求1所述的基于区块链的微服务方法,其特征在于,所述核心企业微服务/非核心企业微服务还包含对应的回滚日志表;所述回滚日志表用于记载在设定的时间内,该核心企业微服务/非核心企业微服务的交易业务是否完成;若在设定的时间内该交易业务未完成,所述回滚日志表还记录对应的交易用户表是否恢复至执行对应交易业务前的状态。
6.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110523278.7A CN113127499B (zh) | 2021-05-13 | 2021-05-13 | 一种基于区块链的微服务方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110523278.7A CN113127499B (zh) | 2021-05-13 | 2021-05-13 | 一种基于区块链的微服务方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127499A CN113127499A (zh) | 2021-07-16 |
CN113127499B true CN113127499B (zh) | 2023-04-18 |
Family
ID=76781756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110523278.7A Active CN113127499B (zh) | 2021-05-13 | 2021-05-13 | 一种基于区块链的微服务方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127499B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113409048B (zh) * | 2021-08-19 | 2021-11-19 | 杭州云链趣链数字科技有限公司 | 区块链对接平台的监测方法、区块链对接平台和电子装置 |
CN113890189B (zh) * | 2021-09-27 | 2023-02-03 | 国网上海市电力公司 | 基于区块链的变电站自动化通信点表自动处理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108416577A (zh) * | 2018-03-02 | 2018-08-17 | 上海汉得信息技术股份有限公司 | 一种区块链服务系统 |
CN109949033A (zh) * | 2018-11-15 | 2019-06-28 | 陕西医链区块链集团有限公司 | 一种基于区块链的安全交易系统及方法 |
CN110458700A (zh) * | 2019-06-19 | 2019-11-15 | 远光软件股份有限公司 | 一种通证生成方法、供应链金融系统以及电子设备 |
CN110780979A (zh) * | 2019-10-28 | 2020-02-11 | 北京海益同展信息科技有限公司 | 微服务框架下配置的控制方法及装置、介质和电子设备 |
CN111240732A (zh) * | 2020-01-17 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 分布式微服务的发布方法、装置、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447770B2 (en) * | 2017-05-30 | 2019-10-15 | Verizon Patent And Licensing Inc. | Blockchain micro-services framework |
CN110543326B (zh) * | 2019-08-27 | 2023-05-12 | 山东浪潮科学研究院有限公司 | 一种基于区块链的DevOps智能运维方法 |
CN110554927A (zh) * | 2019-09-12 | 2019-12-10 | 北京笔新互联网科技有限公司 | 基于区块链的微服务调用方法 |
CN110691131A (zh) * | 2019-09-26 | 2020-01-14 | 北京笔新互联网科技有限公司 | 基于智能移动终端的微服务框架系统 |
CN111899046A (zh) * | 2020-07-03 | 2020-11-06 | 彭永强 | 一种基于区块链技术数字权益通证与智能行权方法和系统 |
CN112685012A (zh) * | 2020-12-23 | 2021-04-20 | 平安普惠企业管理有限公司 | 基于区块链的微服务架构实现方法、装置、设备及介质 |
-
2021
- 2021-05-13 CN CN202110523278.7A patent/CN113127499B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108416577A (zh) * | 2018-03-02 | 2018-08-17 | 上海汉得信息技术股份有限公司 | 一种区块链服务系统 |
CN109949033A (zh) * | 2018-11-15 | 2019-06-28 | 陕西医链区块链集团有限公司 | 一种基于区块链的安全交易系统及方法 |
CN110458700A (zh) * | 2019-06-19 | 2019-11-15 | 远光软件股份有限公司 | 一种通证生成方法、供应链金融系统以及电子设备 |
CN110780979A (zh) * | 2019-10-28 | 2020-02-11 | 北京海益同展信息科技有限公司 | 微服务框架下配置的控制方法及装置、介质和电子设备 |
CN111240732A (zh) * | 2020-01-17 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 分布式微服务的发布方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113127499A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102346460B (zh) | 一种基于事务的服务控制系统及其控制方法 | |
CN113127499B (zh) | 一种基于区块链的微服务方法、设备及介质 | |
CN110083662B (zh) | 一种基于平台系统的双活架构建设方法 | |
EP2899947A1 (en) | Component oriented hybrid cloud operating system architecture and communication method thereof | |
US8209412B2 (en) | Methods for managing a plurality of devices using protectable communication protocol, including determination of marketing feedback to assess a response to an advertisement | |
CN105471960A (zh) | 一种私有云与公有云的信息交互系统及方法 | |
WO2012145963A1 (zh) | 数据管理系统及方法 | |
US10127077B2 (en) | Event distribution pattern for use with a distributed data grid | |
US8346905B2 (en) | Systems and methods for improved multisite management and reporting of converged communication systems and computer systems | |
CN101771723A (zh) | 数据同步方法 | |
CN102387075A (zh) | 面向企业服务总线的动态服务路由方法及装置 | |
CN111464612B (zh) | 一种恶劣环境下提供稳定计算服务的方法 | |
CN108874590A (zh) | 一种云主机自动备份与恢复的系统 | |
CN109324942B (zh) | 微服务的双活处理方法、装置及系统、设备、存储介质 | |
CN108667928A (zh) | 一种基于区块链状态机组网运作的数据同步方法 | |
CN112685499A (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN115878384A (zh) | 一种基于备份容灾系统的分布式集群及构建方法 | |
CN106254161A (zh) | 基于hdfs的节点失效的快速检测与恢复方法及系统 | |
CN117354260A (zh) | 一种电磁暂态跨域分布式并行计算调度方法及装置 | |
CN101778131A (zh) | 数据同步系统 | |
CN110213359A (zh) | 一种基于d2d的车联网组网数据推送系统和方法 | |
CN113766004A (zh) | 一种基于多云平台的灾备系统、方法及存储介质 | |
CN102185717A (zh) | 业务处理设备、方法及系统 | |
CN101789963A (zh) | 数据同步系统 | |
CN113779143A (zh) | 双活数据中心和业务系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 401122 No.19 datavalley East Road, Xiantao street, Yubei District, Chongqing Patentee after: Chongqing Xinzhi Automotive Technology Co.,Ltd. Country or region after: China Address before: 401122 No.19 datavalley East Road, Xiantao street, Yubei District, Chongqing Patentee before: Chongqing Xinzhi Jinfu Information Technology Co.,Ltd. Country or region before: China |