首页 > 编程知识 正文

前端面试上机题一般是什么(socket通信面试题)

时间:2023-05-06 10:49:35 阅读:81503 作者:2429

六:消息中间件

1:web服务

基于rest风格类型的web服务

rest风格是基于jax-rs的web服务。 同时支持XML和JSON。

JAX-RS是JAVA EE6引进的新技术。 JAX-RS (针对rest风格的Java Web服务的简称)是一种Java编程语言APP,支持根据rest (representationstatustransfer )架构样式创建web服务JAX-RS使用在Java SE5中引入的Java标注,简化了Web服务的客户端和服务端的开发和部署。

使用

1 .导入web服务所依赖的jar包。 支持json格式的jar包和支持xml格式的jar包。

在web.xml文件中设置rest风格的拦截路径

创建service类,为类添加@path注释,然后定义访问路径

常用评论

2:http客户端

http客户端是支持http协议的客户端编程工具包,用java调用http客户端是用url模拟http请求,从java代码中直接发送请求以获取服务端的响应数据首先,http客户端,new默认http客户端(http客户端发送请求的方法也是,new httpGet (和new httpPost )放入请求的url,通过excute发送请求其中

小心

1、http客户端连接后的资源释放问题很重要,和通过数据库连接尝试释放资源一样。

2、https网站采用ssl加密传输,注意证书的导入。

3、要做这样的项目,首先,最好了解302、301、200、404返回代码的含义、cookie、session的结构等http的合作关系。

4、http客户端的redirect状态默认为自动,这对于开发者来说非常方便,但有时像一些许可cookie一样,必须手动管理。 例如

有时会遇到CircularRedirectException异常。 这种情况可能会导致死亡,因为返回的头文件中的location值指向以前重复的地址(端口号可以不同)

递归重定向。 在这种情况下,可以手动关闭: method.setfollowredirects (false )

5、首先判断用户的请求是否来自浏览器,如果不是,有的网站会返回不正确的文本,所以在通过http客户端获取信息时,在头部放入以下信息。

header.put (“用户代理”、“移动/4.0”兼容; MSIE 6.0; Windows NT 5.1; SV1; QQ下载1.7; NET CLR 1.1.4322; 中国广播公司; NET CLR 2.0.50727 )”;

6、开机自检要求提交数据时,必须更改默认代码。 否则,提交的数据会发生乱码。 改写postMethod的setContentCharSet ()方法就可以了。

使用http客户端发送请求和接收响应很容易,通常需要执行以下步骤:

创建http客户端对象。 创建请求方法的实例并指定请求URL。 如果需要发送GET请求,请创建HttpGet对象; 如果需要发送开机自检请求,请创建http开机自检对象。 如果需要发送请求参数,可以通过调用HttpGet、HttpPost公用的setparams(hetpparamsparams )方法来添加请求参数。 对于HttpPost对象,还可以调用setEntity(HttpEntity entity )方法来设置请求参数。 通过调用http客户端对象的执行(httpurirequestrequest )来发送请求,方法返回HttpResponse。 可以通过调用HttpResponse的方法(如getAllHeaders ()、getheaders )和stringname )来获取服务器的响应标头。 调用HttpResponse的getEntity ()方法时,将获取包装服务器响应内容的HttpEntity对象。 程序可以从这个对象中获取服务器的响应内容。 释放连接。 无论执行方法是否成功,都必须释放连接3:Dubbo Zookeeper

(1)介绍

Dubbo是分布式服务的框架,是SOA的统治方案。 其功能主要有高性能NIO通信和多协议集成、服务动态寻址和路由、软负载均衡和容错、依赖分析和降级等。

当我们的项目非常大的时候,我们一般把项目分成多个项目进行开发。 有利于项目的扩展性。 此时,必须在中间件中调用项目和项目的相互调用。 我

们可以使用dubbo来作为这个中间件。

Dubbo是alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合,从服务模型的角度来看,dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Provider)两个角色。既然有服务提供方和服务消费方那我们就要进行服务定义和服务注册。

1.调用关系

1)服务容器可以启动,加载,运行服务提供者。

2)服务提供者可以在注册中心注册自己提供的服务。

3)服务消费者可以从注册中心调用自己所需的服务。

4)注册中心返回服务提供者的地址列表,供服务消费者从中选择。

5)服务消费者基于软负载均衡算法,从中选择自己所需的服务。

6)可以从安装的监控中心查看运行的状态。

Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。

Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。

(2)在项目中使用?

1)首先需要在linux中安装zookeeper。

2)在项目中导入dubbo和zookeeper所依赖的jar包,排除两个冲突包。

3)在服务层的applicationContext-service.xml中注册服务。首先用dubbo:application设置服务提供者的名字,然后用dubbo:regisitry设置注册中心的地址和端口号,协议是zookeeper,用dubbo:protocol设置在20880或其他端口号中暴露服务,最后用dubbo:service声明提供服务的接口。

4)在web表现层调用自己所需的服务,首先用dubbo:application设置服务调用者的名字,然后用dubbo:regisitry设置调用的注册中心,地址和端口号。最后用dubbo:referce声明调用服务的接口。

(3)Dubbo的通信协议

a) Dubbo——默认的,单纯长连接、NIO异步通信协议。适合数据量小、并发的的场景

b) RMI、Hessian、Http、websocket

(4)Dubbo默认使用什么序列化框架

默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。

(5)测试和生产环境公用一套zookeeper,如何保证消费不冲突

a) 通过自定义Filter来实现IP白名单功能

b) 通过service分组功能实现

c) 通过版本控制实现

(6)zookeeper特性

1: 连通性:

注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小

监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示

服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销

服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销

注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外

注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者

注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表

注册中心和监控中心都是可选的,服务消费者可以直连服务提供者

2:健状性:

监控中心宕掉不影响使用,只是丢失部分采样数据

数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务

注册中心对等集群,任意一台宕掉后,将自动切换到另一台

注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯

服务提供者无状态,任意一台宕掉后,不影响使用

服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

3:伸缩性:

注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心

服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。