hw10-impl
请你在大二开发的E-Book系统的基础上,完成下列任务:
- A. 请你在自己的机器上安装Nginx,并像上课举例一样运行同一个应用的两个实例,然后让Nginx来作为网关转发请求。请你在nginx.conf中依次运行三种不同的转发策略,以及对两个实例配置不同的权重,将运行结果截图贴在Word文档中,并根据截图详细叙述各种配置下运行结果的差异,并分析产生这种差异的原因。
答:一、使用round-robin策略
以下是config文件:
以下的hello可以区分两个运行在8100和8101端口的实例,nginx代理到8180
以下是运行结果:
第一次:
第二次:
第三次:
第四次:
round-robin的策略就是轮流来处理,有服务器1,服务器2作为后端接受请求,对于请求,就第⼀次交给server1,第⼆次交给server2,第三次交给server1,第四次交给server2,以此类推。
二、使用round-robin+权重配置策略
以下是config文件:
以下是运行结果:
第一次:
第二次:
第三次:
第四次:
这次在配置的时候 server localhost:8100 weight=3;
,给第⼀个服务器加上⼀个3的权重,第二个服务器不变,交给服务器1和服务器2的比例应该是3:1,所以假如进⾏访问:第⼀次server1,第⼆次server1,第三次server1,第四次server2。之后重复循环:第五次server1,第六次server1,第七次server1,第⼋次server2。
三、使用least-connected策略
以下是config文件:
以下是运行结果:
第一次:
第二次:
第三次:
第四次:
运行结果与round robin配置相似,在least_conn配置下,请求将被传递给当前拥有最少活跃连接的server,因此上一个请求选择了1,下一个请求到来就会选择剩下可用的,也就是选择2,以此类推。
四、使用ip-hash策略
以下是config文件:
以下是运行结果:
第一次:
第二次到第n次:
使用ip hash策略时,会利用访问用户的ip计算一个Hash值,然后根据Hash值确定是哪个服务器处理请求。由于电脑的ip没变,所以一直访问的都是服务器1,所以session不变。
B. 请你使用GraphQL在你的电子书店中实现按照书籍名称来查找书籍的功能,需注意以下问题:
- i. 后台实现在数据库中进行数据查找的DAO、Service、Repository、Entity层的代码应该复用你现有的代码。
- ii. 前端发送的GraphQL请求应该使用变量,以复用查询语句。
答:
后端实现:
Controller层(GraphqlController):其余层都复用现有的代码
schema.graphqls文件:
前端实现:
修改了react query之中的fetchBooks函数
运行截图:
在搜索栏搜索Great: