自第一篇《 基于SpringCloud的Microservices架构实战案例-序篇》发表出来后,差不多有半年时间了,一直也没有接着拆分完,有如读本书一样,也是需要契机的,还是要把未完成的工作做完,虽然并不是什么经典应用,还是有必要将simplemall的形成过程拆解下,也便于对此案例的理解。

服务拆分具体拆分到多细,业内没有一个统一的标准。当然也不能为了拆分而拆分,还要依据具体的业务场景应用情况而定,读过《淘宝技术这十年》的朋友,相信对淘宝的技术演进有一个很直观的感受。虽然当时微服务的概念并不今天这般火热,但实际已经在生产环境中运行。

simplemall项目的业务背景基于简单的购物场景,也即是常见的电商业务。实现完备的电商业务流程非常复杂庞大,此项目仅中拆分出基础的简单的5个基础服务,用户模块、订单模块、支付模块、产品模块、消息模块。实际的业务应用中可能拆解的更加细致,比如产品服务中还可以细分出库存、促销、价格、产品分类、推荐等等,本项目仅以最简单的服务展现,以达成简单了解并使用spring cloud组件的目的。

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

项目架构结构图如下:

基础业务服务分为:

  • 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接口。如下图:

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

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

扩展阅读:

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

基于SpringCloud的Microservices架构实战案例-架构拆解的更多相关文章

  1. 基于SpringCloud的Microservices架构实战案例-在线API管理

    simplemall项目前几篇回顾: 1基于SpringCloud的Microservices架构实战案例-序篇 2基于SpringCloud的Microservices架构实战案例-架构拆解 3基于 ...

  2. 基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  3. 基于SpringCloud的Microservices架构实战案例

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  4. 基于SpringCloud的微服务架构实战案例项目,以一个简单的购物流程为示例

    QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册.登录.商品列表展示.商品详情展示.订单创建.详情查看.订单支付.库存更新等等. 每个业务服务采用独立的M ...

  5. 基于SpringCloud的微服务架构实战案例项目

    QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册.登录.商品列表展示.商品详情展示.订单创建.详情查看.订单支付.库存更新等等. github源码地址:h ...

  6. springcloud与docker微服务架构实战--笔记

    看了<微服务那些事>之后,Spring boot和Spring Cloud的关系理清楚了,Spring cloud各个模块的作用也了解了. 但是,Spring cloud 与Docker的 ...

  7. 【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构、自己定义工作流)

    基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构.自己定义工作流) 课程讲师:张弘 课程分类:Java 适合人群:中级 课时数量:37课时 用到技术:Spring  ...

  8. 基于SpringCloud分布式架构

    基于SpringCloud分布式架构 为什么要使用分布式架构 Spring Cloud 专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖 分布式/版本化配置 服务注册和发现 路由 Servic ...

  9. 基于springCloud的分布式架构体系

    Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,之前也写过一些关于Spring Cloud文章,主要偏重各组件的使用,本次分享主要解答这两个问题:Spring Cl ...

随机推荐

  1. Delphi中的线程类 - TThread详解

    Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...

  2. Portal for ArcGIS 资源承载数据类型

    在Portal中数据主要分为两大类:Web内容与桌面内容.对于Web内容与桌面内容中的每个项目(item)又被具体分为maps,layers, styles, tools,applications,和 ...

  3. Qt 5 最小构建笔记(只编译QtBase)

    只想用Qt5最基本的功能,因此只编译QtBase.也不想为了编译一个Qt装很多东西(比如非常肥的DirectX SDK) 软件清单: Visual Studio 2010 Professional w ...

  4. mingw(gcc)默认使用的是dwarf格式

    无意中发现的: C:\Users\my>gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=C:/Qt/Qt5.6.2/T ...

  5. 访问类的私有属性(RTTI和模仿类2种方法)

    如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利 ...

  6. Qt4学习笔记 (7) 本篇说一下Qt对于脚本的支持, 即QtScript模块.

    本篇说一下Qt对于脚本的支持, 即QtScript模块. Qt支持的脚本基于ECMAScript脚本语言, 这个东西又是javascript, jscript的基础. 所以, 一般只要学过javasc ...

  7. 使用PNG实现半透明的窗体(使用GDI+)

      Delphi中标准控件是不支持png图片的,据说从Window2000后增加gdiplus.dll库处理更多的gdi图像,其中包括png.   关键的几个api   GdipCreateBitma ...

  8. Delphi berlin ShowMessage的改进与使用

    这个版本的delphi对ShowMessage进行了重新实现,更好的适应移动跨平台,即在移动平台下是异步执行的,而在Windows及os X下是同步执行的,如果自己控制是否异步显示对话框,也可以通过T ...

  9. 虚拟化代码博客 good

    推荐网站和博客地址 --------------------------------   虚拟化代码博客   QEMU大牛博客:qemu - 韋任的維基百科 http://people.cs.nctu ...

  10. 系统休眠消息PBT_APMSUSPEND

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa372721(v=vs.85).aspx https://msdn.microso ...