微服务架构的ERP应用系统的优势及挑战
发布时间:2021-08-04 15:23
随着近年来云计算,虚拟化技术的发展,以及传统单体式架构ERP系统暴露出的软件复杂性,系统扩展性等问题,使得单体应用已很难适应或满足对扩展性,可用性,灵活性要求较高的系统。采用新型微服务架构的应用系统可以有效解决这些问题,微服务也可看作是一种软件架构风格,一个大型的系统应是由若干微服务构成。在此架构下,各个微服务能够单独部署,测试和运行,微服务之间耦合度是较为松散的。各个微服务模块只关心该服务所关联的业务,也即每个独立的微服务模块负责传统ERP系统中一个或多个关联的业务系统。
【文章来源】:制造业自动化. 2020,42(06)CSCD
【文章页数】:3 页
【部分图文】:
微服务架构的系统整体设计
在ERP系统的使用初期阶段,由于各个业务的数据量并不大,系统的各个模块并没有到满载负荷,系统中的有关数据的查询,以及业务的计算,历史数据的处理等运行得很流畅。但是随着功能的完善以及公司业务的发展,订单量、库存量的积累,以及后期各业务部门的数据查询、数据导出需求的多样性,使得系统运行得越来越慢,用户的体验越来越差。于是我们可能最先会想到的问题就是数据库系统的负载问题,因为传统ERP应用架构都是将应用所涉及的数据存放在单一全局数据库中,随着业务数据的增加,最终导致数据库系统的负荷满载,针对这种情况,我们常用到的解决方案就是,优化数据库系统。我们可能会将应用和数据库做物理分离,也可能会采用读写分离的方式缓解压力,再或者是优化数据库等方法。但这些方法都只是缓兵之计,真正需要我们做的是如何将庞大的应用或数据分散化,再集中化,也就如何将复杂的系统化整为零。为了提升ERP系统的运行性能,负责底层架构的部门通常也会主动从一些互联网公司获取技术经验,其中就包括一些解决性能和扩展性的方案,包括高并发、高性能、读写分离、数据库分库分表等方案。但会发现有些方案可能不适合企业信息系统,这是由于互联网应用和传统企业信息系统的业务有很大的不同。对于ERP系统来讲,它的并发量并不高,主要的区别在于业务的复杂性,各种业务耦合度远高于互联网应用,对于这种复杂的数据依赖,想要做数据库层面的分库分表是比较困难的。ERP系统中的业务执行逻辑比互联网系统要复杂的多,单个页面需要的数据,通常需要关联的表高达两张及以上。
在微服务架构的设计过程中,服务的拆分是必不可少的,拆分的原则可以有多种方式,但大多数都是围绕业务进行拆分的。但对于服务的拆分粒度,没有一个统一的标准。所以按照业务划分的各个微服务应做到高内聚,尽量减少分布式事务。服务粒度划分很难有统一的标准,当服务粒度过粗时,服务内部的代码容易产生耦合。服务的粒度也不是划分的越细越好,拆的越细,系统之间的依赖关系就会变得复杂,出现问题时也很难以定位。对于服务的拆分粒度,应尽量保证服务本身所具有的业务独立性和完整性,应尽量减少服务间的依赖,特别是多层依赖以及链式调用。5.2 服务间的通信
本文编号:3321941
【文章来源】:制造业自动化. 2020,42(06)CSCD
【文章页数】:3 页
【部分图文】:
微服务架构的系统整体设计
在ERP系统的使用初期阶段,由于各个业务的数据量并不大,系统的各个模块并没有到满载负荷,系统中的有关数据的查询,以及业务的计算,历史数据的处理等运行得很流畅。但是随着功能的完善以及公司业务的发展,订单量、库存量的积累,以及后期各业务部门的数据查询、数据导出需求的多样性,使得系统运行得越来越慢,用户的体验越来越差。于是我们可能最先会想到的问题就是数据库系统的负载问题,因为传统ERP应用架构都是将应用所涉及的数据存放在单一全局数据库中,随着业务数据的增加,最终导致数据库系统的负荷满载,针对这种情况,我们常用到的解决方案就是,优化数据库系统。我们可能会将应用和数据库做物理分离,也可能会采用读写分离的方式缓解压力,再或者是优化数据库等方法。但这些方法都只是缓兵之计,真正需要我们做的是如何将庞大的应用或数据分散化,再集中化,也就如何将复杂的系统化整为零。为了提升ERP系统的运行性能,负责底层架构的部门通常也会主动从一些互联网公司获取技术经验,其中就包括一些解决性能和扩展性的方案,包括高并发、高性能、读写分离、数据库分库分表等方案。但会发现有些方案可能不适合企业信息系统,这是由于互联网应用和传统企业信息系统的业务有很大的不同。对于ERP系统来讲,它的并发量并不高,主要的区别在于业务的复杂性,各种业务耦合度远高于互联网应用,对于这种复杂的数据依赖,想要做数据库层面的分库分表是比较困难的。ERP系统中的业务执行逻辑比互联网系统要复杂的多,单个页面需要的数据,通常需要关联的表高达两张及以上。
在微服务架构的设计过程中,服务的拆分是必不可少的,拆分的原则可以有多种方式,但大多数都是围绕业务进行拆分的。但对于服务的拆分粒度,没有一个统一的标准。所以按照业务划分的各个微服务应做到高内聚,尽量减少分布式事务。服务粒度划分很难有统一的标准,当服务粒度过粗时,服务内部的代码容易产生耦合。服务的粒度也不是划分的越细越好,拆的越细,系统之间的依赖关系就会变得复杂,出现问题时也很难以定位。对于服务的拆分粒度,应尽量保证服务本身所具有的业务独立性和完整性,应尽量减少服务间的依赖,特别是多层依赖以及链式调用。5.2 服务间的通信
本文编号:3321941
本文链接:https://www.wllwen.com/jingjilunwen/xmjj/3321941.html