标签:知识点 浏览器 中间件 接口 token 拓展 Apache 服务器
目录cgi fastcig WSGI uwsgi uWSGI
cgi:通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
一句话总结: 一个标准,定义了客户端服务器之间如何传数据
fastcig:快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本
一句话总结: CGI的升级版
常用的fastcgi软件:
Apache HTTP Server (部分)
Nginx(主流):nginx是一个符合fastcgi协议的软件,处于浏览器和web程序之间,主要做请求转发和负载均衡,也可以称之为服务器中间件
Microsoft IIS
WSGI:Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
一句话总结: 为Python定义的web服务器和web框架之间的接口标准
wsgiref:性能很低,python实现的,djgno内置了,测试阶段用,上线不用
uWSIG:性能高,c实现的
gunicorn:python实现的
uWSGI: 符合wsgi协议的web服务器,上面标准的具体实现
uwsgi:uWSGI服务器,自有协议
接口幂等性
-幂等性:多次操作的效果跟一次操作是一样的
-多次调用接口,跟调用一次效果一样
-哪些接口天然就是幂等性的?
-get
-put
-delete
-post新增数据,不是接口幂等的,对不符合幂等性的接口,进行处理
-如何解决:
-方式一:通过唯一字段解决,像注册接口,让用户名唯一
-方式二:前端点击以后,按钮失效,只能点一次
-方式三:(主流)token机制
1、哪些接口存在幂等问题的,就必须在执行业务前,先去获取token,服务器会把token保存到redis中。
2、然后调用业务接口请求时,把token携带过去,一般放在请求头部。
3、服务器判断token是否存在redis中,存在表示第一次请求,然后删除token,继续执行业务。
4、如果判断token不存在redis中,就表示是重复操作,直接返回重复标记给client,这样就保证了业务代码,不被重复执行
Apache
-Apache 公司
-Apache web服务器
-Apache 开源协议
-Kafka :apache顶级开源项目
-echars:原来是百度开发的,交给了apache孵化
中间件
-介于a和b之间的东西都称之为中间件
-服务器中间件:nginx,apache
-数据库中间件:介于应用程序和数据库之前的, MyCat
-消息队列中间件:kafka,rabbitmq,Rocketmq
浏览器输入一个地址到请求返回,经历的过程
-1 输入域名,敲回车,向这个域名的80端口,发送了一个get请求
-2 把域名通过域名解析(dns解析),解析出真正的地址 101.133.225.166
-dns解析:先解析本地host文件,为全网用户提供域名的公共递归解析服务,全球13个根dns服务器,如果还找不到,就报错
-3 客户端跟服务器建立链接
-走的是http协议---(请求协议,响应协议)
-但是http协议底层基于TCP,三次握手,就开始可靠传输数据
-4 假设咱们后端是python的django框架 :中间件,路由匹配,视图函数,取数据,拿模板渲染模板,把模板的数据,放到http响应的响应体中,通过http响应返回给客户端
-5 浏览器拿到了http的响应,把响应头的东西,放到浏览器中,响应体的数据,显示在浏览器上,就看到了数据了
标签:知识点,浏览器,中间件,接口,token,拓展,Apache,服务器 来源: https://www.cnblogs.com/run-fast-hit-fast-win-fast/p/16467652.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。