本文主要是介绍十次方微服务项目实战01--需求分析系统设计前期准备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、需求分析
- 1.1 需求简介
- 二、系统设计
- 2.1 系统架构
- 2.2 模块划分
- 2.3 表结构分析
- 2.4 API文档
- 三、理解RESTful
- 3.1 什么是restful
- 3.2 接口规范
- 3.2.1 GET
- 3.2.2 POST
- 3.2.3 PUT
- 3.2.4 DELETE
- 四、项目前期准备
- 4.1 开发环境
- 4.2 MySQL建库建表
- 4.3 Postman
- 五、小结
- 附、公众号更新更及时哦
一、需求分析
1.1 需求简介
《十次方》是程序员的专属社交平台,包括头条、问答、活动、交友、吐槽、招聘六大
频道。
如图:
十次方名称的由来:2的10次方为1024,程序员都懂的。
如果你是一位技术大咖,那么赶快发布文章,增加知名度吧。
如果你是一名技术小白,那么赶快到问答频道寻求帮助的,这里高手如云哦!
如果你不想错过各种技术交流会,那么请经常关注活动频道吧~
如果你还是单身,那么赶快到交友频道找到你心仪的另一半。
如果你有太多的苦恼,那么赶快吐个槽吧~
如果你正在找工作或是想跳槽拿高薪,那么来招聘频道淘金吧~
二、系统设计
2.1 系统架构
《十次方》采用前后端分离的系统架构,后端架构为:
SpringBoot+SpringCloud+SpringMVC+SpringData
我们把这种架构也称之为全家桶。
2.2 模块划分
十次方工程共分为18个子模块(其中17个是微服务)。
如下:
模块名称 | 模块中文名称 |
---|---|
tensquare_common | 公共模块 |
tensquare_article | 文章微服务 |
tensquare_ base | 基础微服务 |
tensquare_friend | 交友微服务 |
tensquare_gatherinng | 活动微服务 |
tensquare_qa | 问答微服务 |
tensquare_recruit | 招聘微服务 |
tensquare_user | 用户微服务 |
tensquare_spit | 吐槽微服务 |
tensquare_search | 搜索微服务 |
tensquare_web | 前台微服务网关 |
tensquare_manager | 后台微服务网关 |
tensquare_eureka | 注册中心 |
tensquare_config | 配置中心 |
tensquare_sms | 短信微服务 |
tensquare_article_crawler | 文章爬虫微服务 |
tensquare_user_crawler | 用户爬虫微服务 |
tensquare_ai | 人工智能微服务 |
2.3 表结构分析
该项目采用分库分表设计,每个业务模块为一个独立的数据库。
文件名 | 数据库说明 |
---|---|
tensquare_article.sql | 文章 |
tensquare_ base.sql | 基础 |
tensquare_friend.sql | 交友 |
tensquare_gatherinng.sql | 活动 |
tensquare_qa.sql | 问答 |
tensquare_recruit.sql | 招聘 |
tensquare_user.sql | 用户 |
建表语句下载:点我直达
2.4 API文档
前后端约定返回码列表:
状态码 | 说明 |
---|---|
20000 | 成功 |
20001 | 失败 |
20002 | 用户名或密码错误 |
20003 | 权限不足 |
20004 | 远程调用是白白 |
20005 | 重复操作 |
三、理解RESTful
3.1 什么是restful
RESTful
架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易 于理解、扩展方便,所以正得到越来越多网站的采用。REST
这个词,是Roy Thomas Fielding
在他2000年的博士论文中提出的。
REST
是Representational State Transfer
的缩写,翻译是”表现层状态转化”。
可以 总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则。
面向资源是REST
最明显的特征,对于同一个资源的一组不同的操作。资源是服务器 上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST
要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操 作。
7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS
。
3.2 接口规范
在项目中用到了GET/POST/PUT/DELETE
四种方法,现在介绍一下这四种方法:
3.2.1 GET
- 安全且幂等
- 获取表示
- 变更时获取表示(缓存)
- 200(OK) - 表示已在响应中发出
- 204(无内容) - 资源有空表示
- 301(Moved Permanently) - 资源的URI已被更新 303(See Other) - 其他(如,负载均衡)
- 304(not modified)- 资源未更改(缓存)
- 400 (bad request)- 指代坏请求(如,参数错误) 404 (not found)- 资源不存在
- 406 (not acceptable)- 服务端不支持所需表示
- 500 (internal server error)- 通用错误响应
- 503 (Service Unavailable)- 服务端当前无法处理请求
3.2.2 POST
- 不安全且不幂等
- 使用服务端管理的(自动产生)的实例号创建资源
- 创建子资源
- 部分更新资源
- 如果没有被修改,则不过更新资源(乐观锁)
- 200(OK)- 如果现有资源已被更改
- 201(created)- 如果新资源被创建
- 202(accepted)- 已接受处理请求但尚未完成(异步处理) 301(Moved Permanently)- 资源的URI被更新
- 303(See Other)- 其他(如,负载均衡)
- 400(bad request)- 指代坏请求
- 404 (not found)- 资源不存在
- 406 (not acceptable)- 服务端不支持所需表示
- 409 (conflict)- 通用冲突
- 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突) 415 (unsupported media type)- 接受到的表示不受支持
- 500 (internal server error)- 通用错误响应
- 503 (Service Unavailable)- 服务当前无法处理请求
3.2.3 PUT
- 不安全但幂等
- 用客户端管理的实例号创建一个资源
- 通过替换的方式更新资源
- 如果未被修改,则更新资源(乐观锁)
- 200 (OK)- 如果已存在资源被更改
- 201 (created)- 如果新资源被创建
- 301(Moved Permanently)- 资源的URI已更改
- 303 (See Other)- 其他(如,负载均衡)
- 400 (bad request)- 指代坏请求
- 404 (not found)- 资源不存在
- 406 (not acceptable)- 服务端不支持所需表示
- 409 (conflict)- 通用冲突
- 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
- 415 (unsupported media type)- 接受到的表示不受支持
- 500 (internal server error)- 通用错误响应
- 503 (Service Unavailable)- 服务当前无法处理请求
3.2.4 DELETE
- 不安全但幂等
- 删除资源
- 200 (OK)- 资源已被删除
- 301 (Moved Permanently)- 资源的URI已更改
- 303 (See Other)- 其他,如负载均衡
- 400 (bad request)- 指代坏请求
- 404 (not found)- 资源不存在
- 409 (conflict)- 通用冲突
- 500 (internal server error)- 通用错误响应
- 503 (Service Unavailable)- 服务端当前无法处理请求
四、项目前期准备
4.1 开发环境
软件 | 版本 |
---|---|
JDK | 1.8 |
数据库 | MySQL 5.7 |
开发工具 | IDEA 2017.1 |
maven | 3.3.9 |
docker | 1.13.1 |
操作系统 | centos 7 |
该项目所有环境都是基于Docker,有关Docker技术可以参考:Docker核心概念、安装、端口映射及常用操作命令(细到令人发指)
4.2 MySQL建库建表
此处不再赘述,如有需要,可留言。
4.3 Postman
接口测试工具。
此处不再赘述,如有需要,可留言。
五、小结
- 本文算是该项目前导篇,主要做了基本的需求分析、系统设计以及前期准备工作,接下来将进入项目代码实战环节,有兴趣的可以关注下哦~
附、公众号更新更及时哦
-
简介
专注Java和Android开发,分享Java/Android基础进阶、架构设计、开源框架、面试宝典及热点资讯等。此外,本公众号支持并欢迎投稿。 -
二维码
如下,大爷欢迎扫描哦:
-
自救
公众号目前已维护部分文章,包括但不限于面试宝典、技术文章等,欢迎各位扫描关注,同时,如果您有更好的意见或建议,欢迎提出,感谢~
这篇关于十次方微服务项目实战01--需求分析系统设计前期准备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!