freemarker:
什么是freemarker :FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,具体的实现就是模板+数据= 输出;它能够生成HTML、XML、RTF、Java源代码等等;在我们项目中我们将它用于生成html文件
应用场景:它非常适用于电商项目这个静态页面的展示,因为电商的静态页面,它非常之多,如果全部采用jsp那么将会及其消耗资源,效率大大降低;而如果采用静态页面那么加载速度会变得非常的快,后来我们点击京东的商品详情静态页面,发现很多图片以及介绍还有大部分内容瞬间就展示出来了,但是它的数据比如价格啊库存什么的明显有了一个延时,然后我们分析,以及上网查阅资料了解到这样做的一个好处就是,将价格及库存动态加载是因为这个东西它的变化相对来说是较为频繁的,如果所有东西都是动态加载,那么将会更加频繁的生成html页面,所以我们也对此进行了借鉴,将一些容易产生变化的数据进行了异步的动态获取;这样点击的加载速率上来了,也适应多变的数据;这个效果比单纯的jsp页面好了太多
activeMQ:
什么是activeMQ:它其实就是一个消息队列,activeMQ是Apache出品.是目前市场上最流行的能力最强劲的开源消息总线.支持多种语言和协议编写客户端,完全支持JMS1.1和J2EE1.4规范,对spring有良好的支持,ActiveMQ很容易内嵌使用到spring的系统里面去;JMS的全称是Java Message Service,即Java消息服务。用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。真实的程序中多将它用于消息传递进行解耦合;
JMS的两种规范 1.两个角色:消息生产者,消息消费者 2.消息传递两种类型:点对点,发布订阅模式
它的五种不同的消息征文格式StreamMessage MapMessage TextMessage(常用) ObjectMessage BytesMessage
activeMQ的应用场景是什么:在我们这个项目中,我们在两个地方使用了activveMQ,消息生产者只有一个,那就是在商品模块里面增加商品时,消息消费者有两个,所以采用的是发布订阅模式,第一个消费者是索引,首先说,你增加一个商品后,你去搜索就能搜到吗,搜不到,肯定搜不到,为什么?因为你在做商品搜索时,它是去索引库里面做的搜索,而你增加了商品并不意味着索引库就增加了相应的索引,所以这时候就需要有人提醒一下,商品更新了,更新的商品id是多少,你去把那个id对应的商品查出来,然后更新一下索引库,这时候activeMQ就充当了这个角色,还有要补充的一点就是为什么一定要用这个activeMQ,其实你也可以用代码通知,这是没问题的,这完全能实现啊,而且很简单,但是还是要用activeMQ就是因为它能最大程度的松耦合.;另一个地方订阅消息是做静态页面,每增加或修改一个商品时,我们通过订阅消息就马上使用freemarker去生成一个静态页面,当然了啊.我们这里面也做了一个小判断,就是当修改的是商品价格或者库存时,我们不会去生成新的页面,这个就要结合效率以及实际来说了(再继续聊freemarker)
Solr及SolrCloud: