Page 70 - 《软件学报》2021年第5期
P. 70

1294                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                 3    案例研究及评估结果分析

                 3.1   评估案例
                                                                                    [3]
                    为验证本文所提出的优化的微服务化拆分算法 DFD-A 及原型平台,与 DFD 方法 的案例研究和方法评估
                 思路类似,本文首先需要选择合适的案例,然后使用优化后的 DFD-A 方法及其原型平台进行拆分,最终对拆分
                 结果进行指标评估,并与相关工作方法的应用结果进行对比.尽管 DFD 方法评估中使用的“Cargo Tracking
                 System”案例(https://github.com/citerus/dddsample-core)较为典型,但其在 Github 上公开的源码仅是基于需求分
                 析实现的简单原型,缺乏必要的业务细节,无法获取有效的数据流信息来评估本文提出的优化方法应用的效果.
                 本文最终选择了同样被微服务化拆分工作广泛应用且实现较为完整的单体系统 Jpetstore(https://github.com/
                 mybatis/jpetstore-6)作为案例进行方法的评估研究.作为一个宠物商店电子商务系统,其主要为用户提供宠物浏
                 览、添加宠物到购物车、下单购买宠物的功能,该案例多次被应用到与微服务化拆分的相关的研究中                                     [19−21] .因
                                  [3]
                 DFD 方法的案例研究 已初步表明现有的数据流驱动的微服务化拆分方法相对于其他方法的优势,本文的案
                 例研究只对比分析应用优化前的 DFD 方法和优化后的 DFD-A 方法及其原型平台进行拆分后的结果.
                    本文的案例研究在应用上述两个方法之前都需要对 Jpetstore 案例的业务需求有基本的了解,但二者的目
                 的不同.DFD 方法中,了解业务需求和用例用以构建不同层级的数据流图来支持基于规则的微服务化拆分;而
                 DFD-A 方法中,则需要根据业务需求设计尽可能覆盖整个系统全部功能的测试用例,并使用测试套件如 Jmeter
                 来模拟用户请求,为基于 Pinpoint 的链路追踪和数据收集做准备.需要注意的是:相对于数据流图,测试用例在企
                 业级项目中一般比较容易获取.本文通过对 Jpetstore 的需求和业务逻辑进行分析,得到了该系统要实现的 10 个
                 主要的高层次功能需求用例和 14 个数据库表,分别见表 1 和表 2.
                                            Table 1    High-level use cases of Jpetstore
                                                表 1  Jpetstore 高层次用例需求
                                       编号      用例名称                  说明
                                        P 1      登录               用户登录系统
                                        P 2      注册             用户注册系统账号
                                        P 3   查询账户信息           用户查询账号相关信息
                                        P 4   修改账号信息           用户查询账号相关信息
                                        P 5   浏览商品信息         用户浏览系统中的宠物信息
                                        P 6    加入购物车         用户将宠物商品加入购物车
                                        P 7    移除购物车        用户将宠物商品从购物车中移除
                                        P 8    更新购物车       用户更新购物车中宠物商品的数量
                                        P 9      下单             用户下单购买宠物
                                       P 10    查看订单             用户查看购物订单
                                              Table 2  Database tables of Jpetstore
                                                  表 2  Jpetstore 数据库表
                        编号      数据库表                                说明
                                Account          存放用户相  关 数  据  ,如用户的 id、邮箱 email 和所在城市 city 等
                         S 1
                         S 2   Bannerdata        存放用户最喜爱的类别的 banner 数据,如图片地址 bannername
                         S 3    Category          存放商品分类数据,如分类的 id、名称 name 和描述 descn 等
                         S 4    Inventory             存放商品的库存数据,如商品项 id 和库存量 qty
                                  Item          存放商品项数据,如商品项 id、定价 listprice 和供应商 supplier 等
                         S 5
                         S 6    Lineitem      存放订单项数据,如订单 id、商品价格 untprice 和购买数量 quantity 等
                         S 7     Orders        存放订单数据,如订单 id,下单日期 orderdate 和地址信息 shipaddr1 等
                         S 8   Orderstatus     存放订单状态数据,如订单 id、订单状态 status 和时间 timestamp 等
                                 Product      存放商品数据,如商品 id、商品名称 name 和商品所属类别 category 等
                         S 9
                         S 10    Profile   存放用户描述数据,如用户 id、最喜爱的类别 favategory 和使用语言 langpref 等
                         S 11   Sequence            存放编号数据,如编号名称 name 和下一个编号 nextid
                         S 12    Signon     存放用户登录信息数据,如用户账号名称 username 和用户登录密码 password
                                Supplier   存放商品供应商数据,如供应商名称 name,供应商电话 phone 和供应商地址 addr1
                         S 13
                         S 14     Cart           存放购物车数据,如加入的商品项 item 和商品数量 quantity 等
   65   66   67   68   69   70   71   72   73   74   75