一个电商项目的Web服务化改造5:面向服务的分层架构设计(有图有真相)

 最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA。

    有点挑战,做完了,会有很大进步。

    本篇,以我亲自画的3个图,阐述一下架构设计。 

 


   一、分层架构-总体图


    1.服务提供方和服务调用方,通过接口交互,调用方并不需要知道怎么实现的。
    2.层次划分
       mapper:Mybatis接口映射,原子数据库操作
       dao:数据访问层(或者换个更合适的名字)调用mapper,组装数据,比如商品详情信息,除了需要商品信息,还需要知道商品的品牌信息
       service:业务逻辑层:订单支付,金额是否足够,是否能够参加这个优惠活动等
       webservice: 由于我们的业务逻辑比较简单,直接把业务层的接口,稍微包装下,就暴露出去了,逻辑上可以说是一个层的。有些大型项目,可能把WebService作为service的上层,而非平级的。
   3.同层之间不能相互调用,上层可以调用1个或多个下层的接口
   4.面向接口编程
      通过接口定义操作,不需要关注实现
 
二、分层架构-类图



   1.以品牌Brand为例,针对外界3套系统,定义了3套WebService接口,FrontBrandService针对前端商城系统、MobileBrandService针对移动端App,BackendBrandService针对后端运营系统。
     每个系统的接口,都是单独定义的,互补影响,前端商城系统调用方,只需要它应该有接口服务。
   2.内部实现类BrandServiceImpl,一次性实现了3个接口,当然也可以定义3个实现类,分别实现。
  

三、系统架构图



1、接口服务,有商品、订单、用户等,每个服务都会针对3套系统,有3个接口实现。
2、接口服务,启动的时候,把服务信息注册到Zookeeper。
3、服务调用方,启动的时候,去Zookeeper查找服务。
4、服务调用方,比如前端商城系统,有自己的Controller和Service。
    Controller响应请求,调用Service,在Service中调用WebService中的1个或多个服务,组装数据。
    也就是说,服务调用方,基本没有业务逻辑,业务逻辑全部在接口提供方统一处理了。
    另外,前端商城系统,虽说有自己的service,但是从实质上来说,这个地方的service和Controller都可以理解成是“展现层”的。
 5.接口提供方,负责业务逻辑和底层实现,其它3个系统,只是响应URL,做下展示罢了。

个人观察
  最近自己画了不少图,感觉画图比较费时间,但是效果会比较好,可以把总体的思路,清晰地展示出来。
  具体到上面3个图,在做培训的时候,部分哥们有一些疑问,费了很大劲,才解释清楚。
  对新人来说,反而更容易理解一些,因为他没有自己固有的思维定势,更容易接受新的架构思路。

  怎么样,哥的架构设计还行吧。。。

  感谢若干大牛对小弟的耐心指点。。。 
  

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值