正向代理:
- 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并讲获得的内容返回给客户端。
- 正向代理的典型用途是为在防火墙的局域网客户端提供访问Internet的途径。
- 正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。
反向代理:
- 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。
- 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
配置反向代理:
cd /usr/local/nginx/conf
vim nginx.conf
加上:
server{
listen 82;
server_name localhost;
location / {
proxy_pass http://192.168.66.101:8080; #反向代理配置,将请求转发到指定服务
}
}
重启nginx:
nginx -s reload
客户端-->反向代理服务器(192.168.66.100)-->web服务器(192.168.66.101)
-----------------------------------------
Nginx负载均衡:
- 早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。
- 应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据。
- 负载均衡****器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
配置负载均衡:
cd /usr/local/nginx/conf
vim nginx.conf
upstream targetserver{ #upstream指令可以定义一组服务器
server 192.168.66.101:8080;
server 192.168.66.101:8081;
}
server{
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver; #targetserver名字可以随意,但是要跟上面一致
}
}
负载均衡策略:
轮询:默认方式
- weight:权重方式
server 192.168.66.101:8080 weight=10;
- ip_hash:依据ip分配方式
根据ip地址算出一个哈希值,然后对应分发到某台服务器上,这样同一个ip最终分发到的服务器是固定的
- least_conn:依据最少连接方式
看哪台服务器处理的链接少,就把请求分发给哪台服务器
- url_hash:依据url分配方式
根据url地址算出哈希值,请求地址相同情况下,分发到固定的一台服务器
- fair:依据响应时间方式
优先把这个请求分发给响应时间短的那台服务器
前后端分离开发:
- 前后端分离开发,就是在项目开发过程中,对于前端代码的开发由专门的前端开发人员负责,后端代码则由后端开发人员负责,这样可以做到分工明确、各司其职,提高开发效率,前后端代码并行开发,可以加快项目开发速度。
- 目前,前后端分离开发方式已经被越来越多的公司所采用,成为当前项目开发的主流开发方式。
- 前后端分离开发后,从工程结构上也会发生变化,即前后端代码不再混合在同一个maven工程中,而是分为前端工程和后端工程。
开发流程:
- 定制接口(定义规范)–>前端开发(mock数据)、后端开发(后端自测)–>联调(校验格式)–>提测(自动化测试)
- 接口(API接口)就是一个http的请求地址,主要就是去定义:请求路径、请求方式、请求参数、响应数据等内容
前端技术栈:
- 开发工具:VS Code、hbuilder
- 技术框架:nodejs、VUE、ElementUI、mock、webpack
YApi:
- YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护API,YApi还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
- YApi让接口开发更简单高效,让接口的管理更具可读性、可维护性,让团队协作更合理。
- 源码地址:https://github.com/YMFE/yapi
- 要使用YApi,需要自己部署
Swagger:
- 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等。
- 官网:https://swagger.io/
- knife4j是为JavaMVC框架继承Swagger生成Api文档的增强解决方案。
使用方式:
1、导入knife4j的maven坐标
--------------------------------------
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
--------------------------------------
2、导入knife4j相关配置类(WebMvcConfig)
--------------------------------------
加上注解:
//加上注解表示开启Swagger文档功能
@EnableSwagger2
@EnableKnife4j
……
//创建对象Docket
@Bean
public Docket createRestApi() {
// 文档类型
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//配置这个包结构是为了让框架扫描到Controller包里的controller
.apis(RequestHandlerSelectors.basePackage("com.itheima.reggie.controller")) //对应Controller的包结构
.paths(PathSelectors.any())
.build();
}
//封装上面的apiInfo对象,描述接口文档
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("瑞吉外卖")
.version("1.0")
.description("瑞吉外卖接口文档")
.build();
}
--------------------------------------
3、设置静态资源映射(WebMvcConfig类中的addResourceHandlers方法),否则接口文档页面无法访问
--------------------------------------
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
--------------------------------------
4、在LoginCheckFilter中设置不需要处理的请求路径
--------------------------------------
"/doc.html",
"/webjars/**",
"/swagger-resources",
"/v2/api-docs"
--------------------------------------