2018-04-06

选自:https://mp.weixin.qq.com/s/3D02d8fLNlQIeptMcQQ72g

服务拆分具体拆分到多细,业内没有一个统一的标准。当然也不能为了拆分而拆分,还要依据具体的业务场景应用情况而定,读过《淘宝技术这十年》的朋友,相信对淘宝的技术演进有一个很直观的感受。虽然当时微服务的概念并不今天这般火热,但实际已经在生产环境中运行。
simplemall项目的业务背景基于简单的购物场景,也即是常见的电商业务。实现完备的电商业务流程非常复杂庞大,此项目仅中拆分出基础的简单的5个基础服务,用户模块、订单模块、支付模块、产品模块、消息模块。实际的业务应用中可能拆解的更加细致,比如产品服务中还可以细分出库存、促销、价格、产品分类、推荐等等,本项目仅以最简单的服务展现,以达成简单了解并使用spring cloud组件的目的。

全部模块基于SpringBoot,采用maven进行项目管理。

项目架构结构图如下:


image.png

基础业务服务分为:

  • account-service用户子服务

  • product-service产品子服务

  • payment-service支付子服务

  • order-service订单子服务

  • msg-service消息子服务

  • front-app业务前端展示

每个业务服务有自己的单独的DB,数据存储基于mysql 5.6+,sql文件夹下面存放着基础的初始化脚本,直接执行即可。每个服务连接db的配置依本地配置为准。

基础支撑服务分为:

  • admin-server服务监控

  • conf-server配置中心

  • eureka-server服务注册中心

  • hystrix-dashborad服务熔断监控面板

  • sleuth-server链接跟踪监控

  • turbine-server服务熔断集合监控

  • zuul-server网关服务器

  • common-module基础模块

必备服务是eureka-server,用于服务注册、发现。其余基础服务模块是慢慢演变优化加入进去的。

common-module模块中存放redis的连接配置及相关模块的实体。有朋友问entity为何存储在common模块中,此种做法有利有弊。好处是所有子模块直接依赖此common模块,可以拿到所以模块相关的实体及接口,弊端是服务增多时,Java类繁多庞大,会引入很多无关代码。比较常见的做法时,每个子服务模块中独立一个api模块,存放实体及对外的api接口。如下图:

image

小节一下:本文介绍了simplemall项目的代码结构,重点述说了下子服务的实体及接口代码的存储,后续深入具体模块详细介绍。

源码地址:https://github.com/backkoms/simplemall

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,282评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,252评论 25 709
  • 一直想把自己的工作体会写下来,算是一次总结,同时也希望能给有需要的小伙伴提供参考。我刚换工作,在南方某城商行...
    花期crystal阅读 4,662评论 0 5
  • 1. Android安装包的结构 我们将app的apk文件改为zip文件,然后解压就会看到如下图的Android安...
    Jsonzhang阅读 12,427评论 0 1
  • 你的每一次落笔都能引来世人羡慕的眼光,你的每一次叹息都能引来世人垂怜的眼神。你的每一次辗转反侧都能引来有情...
    糟糟莲阅读 1,634评论 0 3

友情链接更多精彩内容