1 概述
1.1 单体架构vs微服务架构
- 单体架构是什么
- 微服务是什么
- 微服务特性
- 微服务全景架构图
- 微服务优缺点
- 微服务适用场景
1.2 业务分析与建模
- 项目功能演示与分析
- 微服务拆分
- 项目架构图
- 数据库设计
- API文档
1.3 编写微服务
- 建立小程序
- 建立项目
- 编写用户微服务
- 编写内容微服务
2 单体应用
一个归档包(例如war包)包含全部功能的应用程序,咱们一般称为单体应用。而架构单体应用的方法论就是单体应用架构。html
- 架构图
2.1 单体架构的优势
2.2 单体架构的缺点
- 复杂性高
- 部署慢,频率低
- 扩展能力受限
- 阻碍技术创新
3 微服务
一词最先来自于Martin Fowler的一篇微服务文章
前端
- 翻译
微服务架构风格是一种将一个单一应用程序开发为一组小型服务
的方法,每一个服务运行在本身的进程
中,服务间通讯采用轻量级通讯机制
(一般用HTTP资源
API)。这些服务围绕业务能力构建
而且可经过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理
,服务可用不一样的语言开发
,使用不一样的数据存储技术
3.1 特性
- 每一个微服务可独立运行在本身的进程里
- 一系列独立,运行的微服务共同构建起整个系统
- 每一个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用户管理等
- 可以使用不一样的语言与数据存储技术(契合项目情
况和团队实力)
- 微服务之间经过轻量的通讯机制进行通讯,例如经过REST API进行调用;
- 全自动的部署机制
3.2 全景架构图

3.3 优势
- 单个服务更易于开发、维护
- 单个微服务启动较快
- 局部修改容易部署
- 技术栈不受限
- 按需伸缩
3.4 缺点
3.5 适用场景
3.6 不适用场景
4 微服务拆分
4.1 拆法
◆ 领域驱动设计( Domain Driven Design )◆ 面向对象 ( by name./ by verb. )vue
4.2 最佳实践
◆ 职责划分◆ 通用性划分node
4.3 粒度合理
◆ 良好地知足业务◆ 幸福感◆ 增量迭代◆ 持续演进git
- 拆分
- 项目架构图
5 数据库设计
5.1 数据表



6 建立小程序




7 前端代码 - JavaEdge-miniapp
7.1 安装Node.js
建议和笔者保持一致github
- 前往
下载Node.js。
- 建议使用
下载 。
- 安装说明
- macOS操做系统,用pkg直接拖动安装便可
7.2 修改app信息
修改 project.config.json
,按需修改以下两行spring
"appid": "修改成你的appid"
"projectname": "修改成你的项目名称,尽可能用英文",复制代码

其中,appid在 微信公众平台 - 开发 - 开发设置中能够找到。数据库
7.3 安装 & 启动
安装项目相关依赖 加速!
npm --registry https://registry.npm.taobao.org install复制代码

开发环境启动部署
npm run dev复制代码

生产环境构建
npm run build复制代码
7.4 下载 & 安装微信开发者工具
- 前往
下载开发者工具。
- 安装开发者工具
双击安装便可!
7.5 修改调用API地址
找到src/utils/api.js
,找到npm
// 后端接口基础路径
export const BASE_API_URL = '';复制代码
将其修改成你的后端地址,例如:json
export const BASE_API_URL = 'http://localhost:8080';复制代码
7.6 将代码导入到开发者工具
注意:务必勾选 不校验合法域名...
。


8 建立项目
8.1 技术选型
- Spring Boot ( 快速迭代开发 )
- Spring MVC ( MVC框架 )
Mybatis ( 持久层框架,操做数据库 ) +通用Mapper
- Spring Cloud Aliababa ( 分布式 )
8.3 项目结构设计

8.4 整合框架
8.4.1 MyBatis框架 - 通用Mapper
Spring Boot 集成
8.4.1.1 mapper-spring-boot-starter
在 starter 的逻辑中,若是你没有使用 @MapperScan 注解,你就须要在你的接口上增长 @Mapper 注解,不然 MyBatis 没法判断扫描哪些接口。
须要在全部接口上增长 @Mapper 注解。
- 只须要添加通用 Mapper 提供的 starter 就完成了最基本的集成
- 无需配置文件
4.0 以后,增长了一个 @RegisterMapper 注解,通用 Mapper 中提供的全部接口都有这个注解,有了该注解后,通用 Mapper 会自动解析全部的接口,若是父接口(递归向上找到的最顶层)存在标记该注解的接口,就会自动注册上。所以 4.0 后使用通用 Mapper 提供的方法时,不须要再配置这个参数。
8.4.1.2 @MapperScan 注解配置
- 注意MySQL的配置

8.x带cj
代码生成器 - mappergenerator
通用的过于复杂,大多数状况下使用专业版本便可!
使用该插件能够很方便的生成实体类、Mapper接口以及对应的XML文件。
本篇文档就是讲述如何在 MBG 中使用该插件。
首先对MBG不太了解的能够先阅读下面的文档
Mybatis Geneator 详解
http://blog.csdn.net/isea533/article/details/42102297
使用 Maven 执行MBG
- SB已内置插件

在插件中配置了配置文件的路径,覆盖和输出详细日志三个参数。
除此以外须要特别注意的是
,MBG 配置中用到的全部外部代码都必须经过依赖方式配置在这里,不然运行时会提示找不到对应的类而报错。这里有两个必须的依赖,一个是 JDBC 驱动,另外一个是 Mapper 的插件。
- 下面看配置文件generatorConfig.xml:

这里和以前相差很少,只是经过
引入了外部属性文件,在
配置时,使用的属性文件中的参数。
在 pom.xml 这一级目录的命令行窗口执行 mvn mybatis-generator:generate便可(前提是配置了mvn)。
- 使用MyBatis Generator生成器时,发现Mapper文件中出现字段与链接数据库不符,通过查找发现该表是其余数据库的同名表的字段。
在构造文件中,这里是generatorConfig.xml添加链接数据库参数以下:
整合Lombok简化代码
- 生成器中整合
9 用户 & 内容 微服务
业务流程分析

- 架构图
10 现有架构的问题
- 地址发生变化怎么办?
- 如何实现负载均衡?
- 用户中心挂掉怎么办? .
参考