^m m m m 2021年第05期(总第221期)
解析微服务架构在外贸业务ER P中的设计与实现
林刚
(上海市电子商务促进中心(联合国贸易网络上海中心),上海200000)
摘要:近年来新技术、新场景的快速发展,采用传统技术开发的外贸业务E R P系统在面对新的挑战时,往往显得力不从 心,为了适应业务的快速变化,外贸企业采用了各种各样的第三方系统与现有ERP做对接,以用来增强系统的功能,不断完善和满足业务的发展需求,随着技术更新迭代,各类系统产生了大量异构技术栈,不管是采用DB L in k架构还是通 过Web Service的服务,每次新系统的接入,都是一套另外的技术体系,或是接口,或是应用系统,这些服务各自为政,给 日后的应用和系统维护造成了巨大的困难,耗费了大量的时间和精力。这些拼凑起来的事务都是零碎的,接口代码复用 率不高,而数据冗余大量产生,当第三方系统越来越多的时候,对于日常的运维将会是一个灾难的问题,在ERP的更新 设计规划中,需通过一种公共化、标准化的技术,来厘清不同系统调用链路。微服务的出现,较好地解决了这样的局面,许多开发团队开始将原有的独立、单体应用改造为一个个微服务,来改造、整合E R P系统。微服务使得开发团队能更专 注于某一个独立的应用,更易于扩展和实施,架构更清晰合理,通常来说微服务应用可以通过业界已有的微服务框架来 作为微服务开发和改造
的底层框架,屏蔽并解决了跨网络问题带来的多样性和复杂性。
关键词:微服务;外贸进出口企业信息系统;ERP;外贸ERP核心架构组成部分
中图分类号:TP311 文献标识码:B文章编号=2096-9759(2021)05-0112-03
Design and implementation o f micro service architecture in foreign trade ERP
L in gang
(Shanghai e-commerce promotion center(Trade Point Shanghai),Shanghai200000)
Abstract:Recent years,the rapid development of new technology,new scenarios,using traditional technology to develop the foreign trade business of ERP system in the face of new challenges,ragged,often in order to adapt to the rapid change of the business,foreign trade enterprises have adopted various third party do docking with the existing ERP system,to enhance the function of the system,constantly improve and meet the demand of the development of the business,as the technology update iteration,all kinds of system to produce a large amount of heterogeneous technology stacks,whether it’s a DB Link structure or through the Web Service,every time a new system of a ccess,is a set of additional technical system,or interface,Or applicati
on system,these services are separate,to the future application and system maintenance caused great difficulties,consume a lot of time and energy.Together these transactions are fragile,and interface code reuse rate is not high,and the production of mess data,when the third party system is more and more for the daily operations would be a disaster,in ERP update design planning, to be a public and standardized technology,to clarify the different system call link.The emergence of micro service,a better sol­ution to this situation,many development teams began to transform the original independent,single application into a micro ser­vice,to transform,integration of ERP system.Micro service enables development teams to focus on the application of an inde-pendent,more easy to extend and implement,architecture is more clear and reasonable,can generally micro service application through the existing micro service framework for micro service development and transformation of the underlying jframework, shielding and solve the problem across a network of diversity and complexity.
Key words:Microservice Architecture;ERP;Core structure of foreign trade ERP
〇引言
近年来,随着中国在进出口方面的持续发展,外贸业务方 面的管理变得越来越复杂,从开始的制单、
统计查询、业务过 程控制,到现在的管理决策、电子商务,不断的为管理层提出 新的管理要求。为了能帮助企业的管理层在激烈的竞争中加 强管理,提高效率,微服务架构ERP逐步被采用,传统ERP实 现了的是企业内部的信息化管理。当ERP系统能将其服务发 布出去之后,结合微服务架构,就可以很好实现与第三方系统 的灵活、无缝对接,同时也可以实现扩展ERP本身的功能。
1传统架构E R P与微服务E R P的区别
首先,我们了解一下两个不同架构的演变过程,我将做一 个说明,如果没有采用微服务的ERP应用,我们采用了如下的传统结构,大致功能如下图1。
0外贸ERP系统
图1微服务ER P的构架
收稿日期=2021-03-19
作者简介:林刚(1975-),男,浙江镇海人,本科,工程师,研宄方向:计算机软件开发。
112
那么,传统结构下,我们来新增加一个独立应用系统的接入,可能就会遇到底层数据标准和技术标准不统一的问题,需要进一步同步,举个例子,就比如说一个普通的日常的修改运维:开发者想对用户密码进行修改,由于采用的标准不同,则需要调整和同步的地方就会有很多,也很容易遗漏,给开发维护造成困难。从图1不难看出,各个第三方系统分别和业务ERP做对接,无论是通过自己的Web Service还是通过Web API,都是各干各的的,没能统一进行一个标准化的管理。简单来说就是自己做自己的,别人和我交换数据得遵循我提供的一套独立标准,为对接而需要做的事情都是碎片化的,当第三方系统越来越多的时候,对于日常的运维将会是一个灾难性的问题。需要特别指出的是,常规架构下,不同应用系统调用接口功能,在复用性方面也是个会出现一些问题,假设一个商品库存数的査询接口,商品报价系统和在线交易系统都需要进行调用的,可能需要开发2次。
微服务架构下的ERP系统,它的目标是:让ER P的服务更开放,更灵活!运用微服务的架构,相当于ERP的大部分A P I都可以通过这一服务平台给开发出去,所有之前通过接口可以完成的业务系统,基本上都可以通过这一统一服务平台来完成,它可以实现,对外服务的标准统一,多种技术运用下的A P I服务之间可以实现互相调用,并且实现多服务取数的统一和业务处理逆辑的统一,各系统开发代码的统一,并提髙开发效率,特别是底层公共代码的开发部分,提髙与第三方系统对接的效率和稳定性,所有系统只需要关注与微服务系统的运行稳定性即可。图2展示了通过微服务A P I架构系统之后,ER
P系统和第三方系统之间的对接关系结构。
图2外贸ERP API微服务构架系统
微服务架构的简单模式是一种完全可以满足一般外贸进出口企业开展业务的软件架构方案,使用微服务架构简单模式让开发人员可以不用把精力分散在分布式事务的处理、不同环境(开发、测试、生产)的组建迁移配置、API调用链组件监控、系统超载OLB、API管理和测试的API文档框架,第三方协调服务,以及各种消息队列(MQ)。而只需要关注服务注册中心(Service Registry Center)、服务发现(Service Discovery)、负载均衡(Load Balancer)和服务网关(Gateway)即可。
2微服务功能的实现
相对于传统的单体架构,实现微服务(简单模式)架构下的应用,需要以下步骤和组件的支撑,首先需要建立和考虑的是注册中心。
(勝珊中心)
图3服务注册中心(Service Registry Center)示意图
然后需要建立的是服务发现、负载均衡,沿用ERP中现有的规范标准和技术体系开发单一职责的微服
务,服务提供方将地址信息注册到注册中心,调用方将服务地址从注册中心引入进来,然后通过服务网关将微服务A PI发布给ERP第三方和APP服务网关,最后,通过规则对微服务框架进行集成和管理,并统一到服务的操作界面上。
图4別I务网关(Gateway)示意图
与单体架构不同,微服务架构是由各个单一的服务构成的分布式网状结构应用,服务之间通过轻量机制进行通信,通过W服务方的服务注册后,服务的调用方可以从服务注册中心到需要调用的服务的地址(服务发现,Service Discovery)。
通过微服务的服务框架,三方系统通过同一种模式来调用API,并不需要关心服务是在本地还是远程,只需要按照常规方式使用即可,至于是直接使用本地服务动态链接库还是通过http发送远程A P I调用请求,都交给了框架服务进行处理。例如,假定以外销订单和单证和请求报关服务举个例,ERP销售订单服务对系统外提供了一个订单的创建接口。在订单创建完成后,系统接收到状态变更的消息,业务员可以调用单证、海关的服务来进一步完成客户单整制作和报关数据准备。在用户客户端,通过微服务对外公开的接口,生成接口代理服务,将需要的信息[接口名/方法名]及该方法需要的参数]包装成http接口,向远程服务发起请求,在微服务http接入机制中,我们可以统一的定义入口,当服务侦听到请求后,解析出接口名/方法名及参数信息,并创建对应的实现类。
例如:AppRvmtims.Instance.GetService<IOrderService>〇.
113
SavePOrder(pQrderlnfo),从而执行接口请求,并将返回值通过h ttp返回给客户端,客户端通过访问远程服务创建订单,数据以X M L或者js o n格式进行传输。
下面是一个空接口 ApiService,用来标识和实现服务接口的示例。
pubk ctau Rem oteServkcePro^y lA piS en^tce
I public 料;//代托雇务凼址
private ApiActionR«urt P&stHtrjiRequKHstrinE wte-rlacfld, siring mcm〇didf params abject|) p)
| ApiAcbanRiaull aplRchill - null;
灼I ng <v?rhftpcihe#it = fv e哪 H itpOUcnM Il
{
wr param * new A rra>*L»5t^ //fe*故相
| If Wll)
{{M r a m j A d d(n u l V)'l,}>
| var m ? LGetTYP«().Mama{3K«:
p»ramJield(ns !■ nuJI && itf.EquiLt{*Syssm*) 11: £»nConv«ff3«riiklirflOb)Kt^)|j}»
htfpCqnfe-rf|.WeiHieri.Agld|*Cnterprtw}ldM, |rit«*rpfl»cld.ToJtri<niiO);
httpCanlfrrTLHBa.deri.'CofttBnlTvpe ■ new M«dlaTVpeHejidejVaberdpp!»talio/\/jsQn-|.i
vat u rf« Add/Ki,TrtmEnd(V1 +^"/|^mEffaceld)/(w«ho«tteir:
AppR<intim«s.lftktimce.L〇|«r.〇ctM4j($almpRequMt:{brl>,dau:{pditC〇Aten&rr}H y;
v丨"esponw = httpClieqk.Poj^vri咖fl. httpCprUentK*esul|. //從交请求
if (lM&p〇n».bSu«o>Sutu>Cwk'k
r
AppRurmmKJnscanceAogerirroriS'hRnRMiutisi
D r rtj^: (U M I r lU<(l^c(Kle!|i¥St)C) i43Y U5C〇d« ] a|P
th ro w r>f w I C V I P C w c w t丨p n(•无法這揉到in务霸我取务没II
}
//逄取m求的枯果
J
丨r (lapiReMi i*Suc«»> | throw new BmmMS&cepWjnlJpiRenilLMcMage ?7"彤备请求央W n; |
tcfUlfft ipiRdlUlt; l
完成了服务器与客户端通信的接口后,下面需要实现接口的访问,如 AirayListO中,CommunicationService("SalesCon-trac’t"),实现上面的接口。
lCommun«:»Eiai»Senivie("SilejC〇n tr it'iJ'H
p v b l't S a lB jC ontrac'tC o^rictH fW.
i
frUDlic SaiHC&AtnctEivciry GecstlfriConira^Guui slid, s e n^ cmuhcvmo}
I
return GetSal.«Confcrairt(sld. CoralrartNo- ivullj.
|
W bL»c 5alesG<irvcractlntnv GftSal»stontraet(GuKJ ^W. SiririE ContractNo, iPrefetchPaihi U'T'efrcdil'itfi)
\
rrturm Get^ilmContracMstd, ConfractNo,, pryfclchPalh, iui!||;
I
public claisUserServiceProKy : RemoteServiceProxy, ILiserSe/vIce
private string servlceld = tvpeof(lllser5emce).FullNam&;
public void lncrcw«$CCH-e|int u$<?rld4int $c〇r?)
I
return lnvoVeWithoiftReturn(servlceld^ nameof|lncfea5eScareJ, use rid,score);
I
public User^fo Ge?UserBvld(iftt useM O)
[
return lrrvoVe<Userlnfa >(servkeld, r»arneqf(GetU5^f&Yld), userid);
1
api远程服务代理示例3安全性方面的考虑
在微服务架构下,ERP系统根据业务需求的不同要求被
拆分成了多个职责单一的微服务,每个服务都有自己的一套
完整的API提供给体系中别的服务调用,那么怎么能确定和
保证数据和访问的安全性,是设计中需要认真考虑的问题,JWT是一种认证协议,通过HTTPS来保证数据的安全性,通
过JWT的安全标准,向用户提供用户名和密码给认证服务器,
服务器验证用户提交信息信息的合法性;如果验证成功,会产
生并返回一个Token,用户可以使用这个tokm访问服务器上
受保护的资源。在服务器方面,需要来控制客户端的连接调用,根据业务的不同,服务网关A PI需进行统一认证,且与实
际业务进行关联,我们这边是为了防止接口恶意调用,在客户
端请求访问登入时,需要传入当前客户端程序集的版本的认证,签名标识Token,还有版本参数,根据反馈,服务器端会将
这些反馈数据进行条件话整合,用MD5计算出哈希值。如果
客户端传入的参数数据值,经过MD5复核运算后,与服务器
中这些相同的参数值MD5运算之后的值,完全吻合。服务器
端才允许客户端继续登入并进行相关数据操作,服务端根据
客户端请求,发送服务器的唯一性认证id,形成一种相互认证
的认证机制,也就是说,能证明是我们内部服务发出的服务地址,客户端也是可信赖的,才可以调用我们的服务接口。
If (IStrlngUtJls.hasText(Eiijlh))(
^rlntWrifer print = Writer|)j
分布式和微服务的关系
p rin t w rileilsonl/t 丨丨s-loi5〇fl (Resportse Dataia 丨丨r驗证失f t
ResponseCode,NO>UTH^COOE.setCodB〇)));
r e tu r n;
)
JWTUWs JWTResdc }wt = jwiUtils.thetkToltenlaoth);
If liJwt^sStatusO)(
PrintWrliei print = hupResponse-e&rWriteil):
p rltttw fK c<J b Q f)U't lls J la J5〇fl<H e s p d f*5e D a lii.^il{J w t.ietM5g〇(jw t.g e t C o d e lM I J j
re turn;
I
•cbai^doRlterjhnpRe^uest, n esp〇fis«)j
通过JWT验证TOKEN示例
4结语
通过引入微服务来取代原来的传统分布式架构方案后,
彻底解决了在业务ERP不断更新过程中,新老异构系统互联
互通,数据调用方式多样,格式不统一的问题,提髙了多系统
间协同工作的效率,对实时性要求较髙的数据交换,大业务集
团业务统计、业务分析方面的应用也得以实现,对实施我们ERP系统的企业带来了更多的便利和应用价值。
参考文献:
[1][美]克里斯•理査森(Chris Ridiardson)著,喻勇,译.纖
服务架构设计模式》.世界十大软件架构师之一、微服务架
构先驱者亲笔撰写,微服务实用落地指南.
[2][中图余春龙,著.《软件架构设计》大型网站技术架构与业
务架构融合之道,自成一派的架构设计方法论,体系化的
架构设计思维,中科院软件所计算机硕士毕业.
[3]网络文章参考•
fat^s;//azurei>micia9Q&>ccni]M i-cn4>I^Kts/devpps>tool-inti^irati(»s/
blog.51cto/ityoukiiow/1974080.
blog.csdn/looook/ardcle/detajls/80190409.
114

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。