分布式面试整理
前言:
分布式主要是为了提供可扩展性以及高可用性,业务中使用分布式的场景主要有分布式数据库以及分布式计算。本文是我针对分布式面试做了一些简单的整理,希望可以帮助到你们。
1.多系统之间怎么实现通信的?A系统—》B系统的服务
有两种通信方式,第一种是利用HttpClient,HttpClient提供了http服务的能力,其工作原理就类似于我们去打开浏览器访问一个网页去获取数据,最终网页将数据展现出来。HttpClient可以利用get或者post请求去抓取一个接口的数据,从而得到我们需要的数据。
还有一种便是MQ,使用前,首先搭建一个rabbitMQ的服务器,MQ和HttpClient不同的地方在于HttpClient是同步调用,而MQ可以解耦的异步调用的,正是因为这个原因,MQ才很好的解决了同步的响应速度慢的问题。在这里我们使用的是rabbiMq,同类的产品还有例如ActiveMQ,Kafka等。 什么时候使用异步,什么时候同步? (比如我们的缓存系统)
2.Solr集群的搭建
服务器的数量:zookeeper:3台服务器
solr:4台服务器
先搭建zookeeper集群,因为zookeeper集群有存活过半机制,一般服务器选用奇数台最少3台,因为一台就不叫集群了叫zookeeper服务器了,一个leader主节点,两个follower节点
搭建完zookeeper集群,启动zookeeper,启动4台tomcat实例,更改tomcat端口号一般改为8080,8081,8082,8083,再搭建4个单机版solr实例,让zookeeper集群集中管理配置文件,将配置文件上传到zookeeper,将conf下面的内容上传到zookeeper集群中,修改solr.xml的文件,告诉每个solr实例zookeeper集群的位置,在每台Tomcat的bin目录下catalina.bat文件中加入DzkHost指定的zookeeper服务器地址
3.请你谈谈对MQ的理解?以及你们在项目中是怎么用的?
MQ(消息队列)是一种应用程序对应应用程序的通信方法,由于在高并发环境下,由于来不及同步处理,