十次方03——系统设计

后端系统架构:SpringBoot+SpringCloud+SpringMVC+SpringData

那么,为什么选用微服务架构进行实现而不是SSM或SSH呢?

什么是微服务架构,他的作用又是怎样的呢?

以上,这些问题详细解释,可以参考一下文集:<u>https://www.jianshu.com/nb/32298744</u>这里我先简单的说一下。

首先,为什么选用微服务架构?这里我们就又不得不提及架构的演进了,这里我结合技术整体的串一下。从C语言的面向过程到Java的面向对象再到spring框架中AOP的面向切面。从MVC三层模式开发到前后端分离再到dubbo现在是微服务。开发所遵循的一个规律便是简化,而微服务相较于dubbo等而言更进一步的实现了和解决了:

独立开发部署服务;

速度和敏捷性;

更高的代码质量;

获得围绕业务功能创建/组织的代码;

提高生产力;

更容易扩展;

自由(在某种程度上)选择实施技术/语言。

至于,如何体现的这里就先不一一赘述了(在文集中业已和大家进行了介绍)。

另外,和想要和大家强调的一点便是微服务架构是一种架构风格而不是单纯的指代springboot、springcloud,其中的“微”也并不是指项目工程量、项目规模有所变小而是将具体的业务模块进一步划分了而已,这个概念大家可不要混淆哦!

整体的技术架构图,如下:

大家在做项目的过程中不妨可以参考一下,其中MQ、redis等都可以根据实际的业务需要进行相应的替换。下面我们再一块看一下《十次方》的功能架构图:

Restful架构

什么是restful架构?

RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是Roy ThomasFielding在他2000年的博士论文中提出的。

REST 是Representational State Transfer的缩写,翻译是”表现层状态转化”。 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则。

面向资源是REST最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。

7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIOS

接口规范:

GET

安全且幂等(安全:没有对数据库做出改变;幂等:操作1次和100次效果相同。)
获取表示
变更时获取表示(缓存)
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)- 服务端当前无法处理请求

POST

不安全且不幂等(操作1次和100次效果不一样)
使用服务端管理的(自动产生)的实例号创建资源
创建子资源
部分更新资源
如果没有被修改,则不过更新资源(乐观锁)
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)- 服务当前无法处理请求

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)- 服务当前无法处理请求

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)- 服务端当前无法处理请求

以上,部分是对于接口的定义。故此在这里要求大家在开发过程中规范化,做好每项功能、每项技术等都有迹可循

猜你喜欢

转载自blog.csdn.net/A_BlackMoon/article/details/85101232