java面试(二十一)

1、nginx的执行流程、优点

  • 当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 nginx.test.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块。)
  • 此时我们可以看到HTTP请求匹配到了server_name  nginx.test.com;,这样接下来nginx就会在当前server块中匹配到 location /   。
  •  接下来继续由nginx处理可以看到   location / { proxy_pass http://hellonginx;  } ;  这就是进行反向代理处理,这个例子中使用的是nginx的upstream模块进行反向代理实现。
  • 通过proxy_pass http://hellonginx;  中的 hellonginx 可以找到对应的upstream块,然后,可以根据其中的  server 127.0.0.1:8080  ;再次进行代理请求到目标服务器
  • 优点如下:
  • 开源免费,安装简单,配置简洁,服务器本身的Bugs非常少;
  • 稳定的性能,丰富的功能集、示例配置文件和低系统资源的消耗;
  • 占有内存少,并发能力强 (能够支持高达 50,000 个并发连接数的响应)。
  • nginx一方面做加载静态资源的服务器,另一方面来做反向代理负载均衡。

2、在分布式项目中使用dubbo+zookeper实现远程调用的大概步骤。

  • 项目启动(先启动服务层),服务容器如tomcat容器、spring容器启动会自动将服务注册到zookeper中,
  • web层消费(订阅)服务,
  • dubbo返回给消费者服务对象
  • 消费者消费调用服务对象方法
  • 在dubbo中提供了一个monitor监控中心用于统计服务的调用和调用时间。它是阿里提供的一个已经开发好的项目war包,只需要部署到tomcat中运行就能自动监控zookeper的服务调用。

3、HttpClient使用java代码模拟浏览器发送Http请求,向外抛出一个接口的执行过程。

  • 创建HttpClient对象;
  • 构建请求对象post、get请求;
  • 如果有参数,就去构造请求参数,get使用URIBuilder去构造请求参数,post构建表单实体,把表单实体放入到post请求对象中。
  • 执行请求,并且接受响应;
  • 处理响应结果;
  • 释放连接。无论执行方法是否成功,都必须释放连接。

4、HttpClient介绍、工作原理、优缺点

介绍:HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

工作原理:HttpClient用来调用服务,它是模拟一个浏览器,发送Http的请求,服务器会返回请求的一个响应结果;Httpclient然后把响应的结果取出来。

优缺点:

直接使用httpclient可以模拟浏览器的数据操作与封装;另一方面使用基于http的消息,可以借助于http的成熟、可靠、开源的web集群解决方案来提升总体的效率。还有,就是基于http的消息格式,几乎不受任何限制,常规应用的各种消息格式,基本都能直接使用基于http的消息进行传递。

发布了56 篇原创文章 · 获赞 12 · 访问量 9956

猜你喜欢

转载自blog.csdn.net/doubicheng/article/details/103922804