基于SpringCloud的Microservices架构实战案例-架构拆解
自第一篇《 基于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架构实战案例-架构拆解的更多相关文章
- 基于SpringCloud的Microservices架构实战案例-在线API管理
simplemall项目前几篇回顾: 1基于SpringCloud的Microservices架构实战案例-序篇 2基于SpringCloud的Microservices架构实战案例-架构拆解 3基于 ...
- 基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...
- 基于SpringCloud的Microservices架构实战案例
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 基于SpringCloud的微服务架构实战案例项目,以一个简单的购物流程为示例
QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册.登录.商品列表展示.商品详情展示.订单创建.详情查看.订单支付.库存更新等等. 每个业务服务采用独立的M ...
- 基于SpringCloud的微服务架构实战案例项目
QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册.登录.商品列表展示.商品详情展示.订单创建.详情查看.订单支付.库存更新等等. github源码地址:h ...
- springcloud与docker微服务架构实战--笔记
看了<微服务那些事>之后,Spring boot和Spring Cloud的关系理清楚了,Spring cloud各个模块的作用也了解了. 但是,Spring cloud 与Docker的 ...
- 【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构、自己定义工作流)
基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构.自己定义工作流) 课程讲师:张弘 课程分类:Java 适合人群:中级 课时数量:37课时 用到技术:Spring ...
- 基于SpringCloud分布式架构
基于SpringCloud分布式架构 为什么要使用分布式架构 Spring Cloud 专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖 分布式/版本化配置 服务注册和发现 路由 Servic ...
- 基于springCloud的分布式架构体系
Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,之前也写过一些关于Spring Cloud文章,主要偏重各组件的使用,本次分享主要解答这两个问题:Spring Cl ...
随机推荐
- Delphi中的线程类 - TThread详解
Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...
- Portal for ArcGIS 资源承载数据类型
在Portal中数据主要分为两大类:Web内容与桌面内容.对于Web内容与桌面内容中的每个项目(item)又被具体分为maps,layers, styles, tools,applications,和 ...
- Qt 5 最小构建笔记(只编译QtBase)
只想用Qt5最基本的功能,因此只编译QtBase.也不想为了编译一个Qt装很多东西(比如非常肥的DirectX SDK) 软件清单: Visual Studio 2010 Professional w ...
- mingw(gcc)默认使用的是dwarf格式
无意中发现的: C:\Users\my>gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=C:/Qt/Qt5.6.2/T ...
- 访问类的私有属性(RTTI和模仿类2种方法)
如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利 ...
- Qt4学习笔记 (7) 本篇说一下Qt对于脚本的支持, 即QtScript模块.
本篇说一下Qt对于脚本的支持, 即QtScript模块. Qt支持的脚本基于ECMAScript脚本语言, 这个东西又是javascript, jscript的基础. 所以, 一般只要学过javasc ...
- 使用PNG实现半透明的窗体(使用GDI+)
Delphi中标准控件是不支持png图片的,据说从Window2000后增加gdiplus.dll库处理更多的gdi图像,其中包括png. 关键的几个api GdipCreateBitma ...
- Delphi berlin ShowMessage的改进与使用
这个版本的delphi对ShowMessage进行了重新实现,更好的适应移动跨平台,即在移动平台下是异步执行的,而在Windows及os X下是同步执行的,如果自己控制是否异步显示对话框,也可以通过T ...
- 虚拟化代码博客 good
推荐网站和博客地址 -------------------------------- 虚拟化代码博客 QEMU大牛博客:qemu - 韋任的維基百科 http://people.cs.nctu ...
- 系统休眠消息PBT_APMSUSPEND
https://msdn.microsoft.com/en-us/library/windows/desktop/aa372721(v=vs.85).aspx https://msdn.microso ...