定义软件实现的功能
技术选型
前端技术选型
后端技术选型
数据库: PostgresSql
PostgreSQL 是一个功能强大的开源对象关系数据库管理系统(ORDBMS),是跨平台的,完全支持ACID特性的,可以在日常的大部分操作系统运行。
特性 | 说明 |
开源 | 基于BSD协议的开源软件. |
跨平台 | PostgreSQL几乎可以所有Unix类操作系统下运行 (根据统计有至少34种平台),自8.0版本以后, 在Windows平台下的也使用原生支持方式。 |
标准支持SQL | 易于和其他关系数据库互换. 覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99 |
丰富的数据类型 | 基本数据类型、复合数据类型、xml类型等。 |
PostgreSQL 的衍生品 | Greenplum, Data nCluster, Netezza; SymfoWARE【open系】:GX使用的数据库就是基于PostgresSql开发的数据库。 |
身份验证功能. | 支持OS认证、Kerberos 认证 、Ident 的认证等多种认证方式。 |
其他 | 高度可定制性,很多高级开发语言有原生的编程接口,多版本并发控制(MVCC),按时间点恢复(PITR),表空间、异步复制,嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。 |
优点:使用量排名/支持的数据类型/
https://db-engines.com/en/ranking
缓存:Redis3.2
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构。
特性 | 说明 |
开源 | 基于BSD协议 |
支持多种数据类型 | string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合) |
支持数据持久化 | 可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用.RDB(手动、自动)/AOF(手动、自动) |
支持事务/操作的原子性 | Redis的所有操作都是原子性的。单个操作是原子性的。多个操作也支持事务。 |
支持数据的备份 | master-slave模式的数据备份,主从同步,读写分离。从而支持高并发。 |
单线程,高速. | 基于管道技术(pipeline),单线程的I/O多路复用技术实现. |
其他 | 可用于缓存,消息,按key设置过期时间,过期后将会自动删除 |
Redis数据的持久化:https://segmentfault.com/a/1190000015983518
Redis数据的持久化:https://segmentfault.com/a/1190000015983518
https://segmentfault.com/a/1190000011440752
- 原生批量命令是原子性,Pipeline是非原子性的.
- 原生批量命令是一个命令对应多个key,Pipeline支持多个命令.
- 原生批量命令是Redis服务端支持实现的,而Pipeline需要服务端与客户端的共同实现.
非阻塞式的socket、select/poll/epoll:
Redis长连接和短连接、数据库连接池和单线程单进程的关系:
5中I/O复用模型的理解:
异步的实现原理:
- 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
- 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
- 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
- 第四层:传输层。管理着网络中的端到端的数据传输;
- 第五层:网络层。定义网络设备间如何传输数据;
- 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
- 第七层:物理层。这一层主要就是传输这些二进制数据。
RPC,
Web Service,
rest,
restFULL,
HTTP,
SOA: Service Oriented Architecture(体系结构)。
SOAP: Simple Object Access Protocol(简单对象访问协议)。
SOA和微服务架构都是一种组件模型,一种架构方式,不依赖于任何技术,因此
SOAP、RPC、REST是对SOA和微服务架构的组件或服务之间通信方式的不同实现。
SOAP:HTTP + XML.
REST:HTTP+JSON.
RPC协议。
RPC(Remote Procedure Call):远程过程调用。
TCP/IP模型和握手,挥手流程。
RPC服务。
HTTP服务。
DevOps
graphql (****)
长连接,短连接。
总体设计
系统架构图
UI概要设计
前端UI详细设计与实现
后台接口设计与实现
前后端对接
成果展示
工时/代码量统计
遇到问题及其解决方案
前端
后端
前后端对接
统一身份认证:
1、利用Redis替换Servlet容器的HttpSession实现集群中的session共享。
效果是:在开发的过程中开发人员操作session和以往的操作方式没有什么区别,在分布式的环境中,多个服务可以共享一套Session信息,从而实现集群中的session共享,跨域session的共享。
2、单独服务部署。
3、Nginx实现反向代理将所有请求转发到“统一认证系统”进行认证。
4、认证成功,请求转发到真正的资源服务。
5、认证失败,直接返回。
Nginx实现反向代理和负载均衡:
带参数的接口怎么配置呢?
Redis的主从同步、读写分离配置;
- MasterRedis-2.8.19(主redis服务),SlaveRedis-2.8.19(从redis服务)
- 主:写、从:读
原理:https://www.cnblogs.com/hepingqingfeng/p/7263782.html
Restful:
遵守了rest 原则 的web服务。
REST原则:
REST是一个基于HTTP的API标准,一种规范,遵循REST风格的API可以使开发的接口通用,便于调用者理解接口的作用。
主要围绕三个方面:
Resource:资源,主要指数据。
Repersentational:数据的表现形式,json。
State Transfer:状态变化。
支持的操纵:
POST:新增资源
DELETE:删除资源
PUT:修改资源
GET:获取资源
返回码:
2xx:请求正常处理并返回。
3xx: 重定向,请求资源位置发生了变化。
4xx: 客户端发送的请求有误。
5xx: 服务器端错误。
资源:所有数据均当做资源看待,URI即统一资源标识符。
URI设计原则:
只能使用名词,推荐使用复数。
统一使用小写字母。
不要包含文件(脚本)的扩展名。
URI中尽量使用连字符"-"代替下划线"_"的使用。
"_"一般用于对一个整体含义的字符串做了层级的分割。
Swagger2的集成:
手写Api文档的几个痛点:
- 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。
- 接口返回结果不明确
- 不能直接在线测试接口,通常需要使用工具,比如postman
- 接口文档太多,不好管理
Swagger也就是为了解决这个问题,当然也不能说Swagger就一定是完美的,当然也有缺点,最明显的就是代码移入性比较强。
轻松的整合到Spring Boot,并与Spring MVC程序配合组织出强大RESTful API文档。
可以减少我们创建文档的工作量。
让维护文档和修改代码整合为一体。
让我们在修改代码逻辑的同时方便的修改文档说明。
Swagger2也提供了强大的页面测试功能来调试每个RESTful API。