回答逻辑:是什么,用来干什么?为什么要用它?它的细节?它的优缺点?它和其它类似的关系?
1.dubbo + zookeeper
项目里使用dubbo都干了什么?有什么作用?
dubbo是一个分布式服务框架,所以整个系统都使用了这个dubbo,比如我们负责的是订单模块的开发,也就是分布式中的订单服务。和别的服务进行交互,也都使用的dubbo,因为它也是一个rpc框架。它的作用就是协调分布式中各个服务,理清调用关系等功能。
zookeeper作为dubbo的注册中心,ZK可以用来管理和维护服务提供者的列表,实现服务提供者和消费者在注册中心对服务的注册和订阅功能。
2.redis
项目里使用redis都干了什么?有什么作用?
主要用来作为订单服务与数据库之间的缓存,通过缓存大大降低数据库的负担,提高并发能力。
3.solr
项目里使用solr都干了什么?有什么作用?
使用solr作为全文检索工具,通过自己的索引库来实现某种茶商品的快速搜索。
4.ActiveMQ
项目里使用ActiveMQ都干了什么?有什么作用?
我们使用activeMQ进行了流量削峰,因为我们会做一些促销活动,所以那个时候并发量是非常大的,比如很多人买了东西,生成了非常多订单数据。如果不使用消息队列的话,数据库一直写入,承担不了会崩溃。
用了消息队列后,会在并发量很大的时候,会把海量消息情求放到MQ中,然后数据库从队列中读消息,以它能承担的速度进行执行。这样就达到了流量削峰的作用。
还是使用activeMQ进行了关系解耦(索引库同步,商品服务与搜索服务之间),在商品服务(不是我做的)中每当添加一个商品后,需要同步到solr的索引库,这时如果在商品服务逻辑里添加商品后试添加到索引库逻辑(实现应该是通过rpc来实现),这样的话就把商品服务和搜索服务耦合到一起了。如果引入这个MQ,当需要商品索引同步时,商品服务给MQ发一个消息,然后当搜索服务感知到后,就从MQ里拿到这个消息,在这个搜索服务完成索引同步。这样功能既实现了,而且也降低了耦合程度。