开发拓展知识点
1.接口幂等性
# 详见
http://www.liuqingzheng.top/article/1/01-%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%B9%82%E7%AD%89%E6%80%A7/
https://zhuanlan.zhihu.com/p/345428483
# 概念
幂等性原本是数学上的概念
用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。
# 多次操作,做的改变是一样的
# 常见请求
post(新增接口) ---> 执行了3次,会出现3条记录 不是幂等性的接口
get、delete、update请求 ---> 针对同一个请求,改变都是一样的 幂等性的接口
# 如果没有实现接口幂等性会有很严重的后果:
支付接口,重复支付会导致多次扣钱
订单接口,同一个订单可能会多次创建
eg:
网络波动, 可能会引起重复请求
用户双击提交按钮 用户重复操作
使用浏览器历史记录重复提交表单
# 如何保证接口幂等性?
-客户端防止重复调用
按钮只可操作一次
-服务端进行校验
使用token机制 先删token,再进行业务操作
# 如果出现数据库与缓存双写不一致? eg: token删除了,业务却处理失败
可以让调用方配合处理一下,重新获取新的token,再次由业务调用方发起重试请求就ok了。
2.其他概念
# 云原生
云:云服务器(公有云:阿里,华为; 私有云:公司自己的服务器)
原生:使用编程语言写的程序(go,python,java写的程序)
-把这些程序,跑(部署执行)在云上,就叫云原生
-云原生的组件:docker,k8s(***),jenkins,gitlab... # 重点
# 云存储
公有云存储:七牛云、阿里oss
私有云存储:fastdfs、ceph、minio...
# 云计算的四个层次
IaaS(基础架构即服务)
PaaS(平台即服务)
SaaS(软件即服务)
DaaS(数据即服务)
# serverless:无服务 全部使用第三方服务
# 数据中台
-前台 和 后台 中间再加一层
# 敏捷开发
-敏捷开发的一个sprint:一周或两周
# devops、sre
'开发运维一体化'
-其实是一个概念,不同公司提出来的
-运维+开发 保证云平台稳定运行---》sre,devops
# ci cd jenkins+gitlab+docker
-持续集成
-持续部署
# 微服务
-服务拆分----》分布式的子集
# 中间件
-django中间件
-消息队列中间件:rabbitmq,kafka
-数据库中间件:mycat
-服务器中间件:nginx、kong ---> api网关
-缓存中间件:redis
# DDD:领域驱动设计
-只是一个概念
-核心的逻辑写在数据层
标签:知识点,服务,请求,中间件,接口,---,token,开发,拓展
From: https://www.cnblogs.com/Edmondhui/p/16756857.html