学成在线:第六天(p94-p102)

文章介绍了Freemarker作为模板引擎用于页面静态化的过程,以及Elasticsearch作为全文检索引擎的核心概念。同时,讨论了分布式环境下的本地事务与CAP理论,提出了BASE理论以适应最终一致性需求,并列举了分布式事务控制的常见技术,如消息队列和任务调度。
摘要由CSDN通过智能技术生成

1、面试:为什么要用 Freemarker 静态化?如何做的?

页面静态化是指使用模板引擎技术将一个动态网页生成 html 静态页面。
满足下边的条件可以考虑使用静态化:
1、该页面被访问频率高,比如:商品信息展示、专家介绍页面等。
2、页面上的数据变化频率低,比如:商品发布后对商品信息的修改频率低,专家介绍
信息修改频率低

静态化的技术很多,Freemarker 是一个成熟的开源的模板引擎工具,简单易用,功能强大
本项目使用 Freemarker 将课程信息静态化:
1)使用 Freemarker 的标签编写课程信息的模板
2)调用接口获取模板上需要的模型数据
3)调用 Freemarker 的 API 生成静态页面。
4)生成的静态页面最终会上传到文件系统方便访问。

2 、Elasticsearch是啥

Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它隐藏了Lucene的复杂性,从而让全文搜索变得简单。
什么是Lucene?
Lucene就是一个jar包,里面包含了各种建立倒排索引的方法,java开发的时候只需要导入这个jar包就可以开发了
什么是全文检索?
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
什么是倒排索引?
以前是根据ID查内容,倒排索引之后是根据内容查ID,然后再拿着ID去查询出来真正需要的东西
ES 和 Lucene的区别?
Lucene不是分布式的。ES的底层就是Lucene,ES是分布式的

3、本地事务和分布式事务

本地事务:
应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。
简单地说,就是,通过服务自己的数据库来控制事务
分布式事务:
在分布式系统环境下,通过与不同的服务进行网络通信去完成事务称之为分布式事务。

【补充】
数据库事务:事务的控制是利用数据库本身的事务特性来实现的
关系型数据库:关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,主流的关系型数据库包括 Oracle、MySQL、SQL Server等
非关系型数据库(NoSQL):除了主流的关系型数据库外的数据库,都认为是非关系型。主流的 NoSQL 数据库有 Redis、MongBD等
关系型数据库与非关系型数据库的区别:(主要有三个方面)
①存储方式不同:关系型天然是表格式,存储在表格中;非关系型不存储在行和列中,而是大块的组合在一起,通常存储在数据集里,比如文档或图结构中
②扩展方式不同:关系型是纵向扩展,也就是提高处理能力,使用速度更快速的计算机;非关系型是横向扩展,可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
③对事务的支持性:两者都支持事务,但是NoSQL的稳定性方面没法和关系型数据库比较,因此一般不用NoSQL

4、CAP理论

CAP 是 Consistency、Availability、Partition tolerance 三个词语的缩写,分别表示一致性、可用性、分区容忍性。
在这里插入图片描述
一致性:客户端经过网关访问用户服务的两个结点,户不管访问哪一个结点拿到的数据都是最新的。比如查询小明的信息,不能出现在数据没有改变的情况下两次查询结果不一样,如果对数据进行更新,查询到的结果得是更新后的数据
可用性是指任何时候查询用户信息都可以查询到结果,但不保证查询到最新的数据。
分区容忍性也叫分区容错性,由于网络通信异常导致请求中断、消息丢失,但服务依然对外提供服务。
但其中C和A不能同时满足,因为如果想要满足C(一致性),就要等到数据更新后,比如在用户服务节点1上更新了数据,此时服务节点2还是旧数据,需要等待节点2将数据同步过来后,才能保证不论取哪个结点的数据,都是最新的;而A是要随时取随时都能取到数据,也就是即使在节点2同步数据的过程中也是能取到数据的,两者相矛盾。

学习 CAP 理论该如何控制分布式事务呢?
学习了 CAP 理论我们知道进行分布式事务控制要在 C 和 A 中作出取舍,保证一致性就不要保证可用性,保证可用性就不要保证一致,首先你确认是要 CP 还是 AP,具体要根据应用场景进行判断。
CP 的场景:满足 C 舍弃 A,强调一致性。比如银行转账
AP 的场景:满足 A 舍弃 C,强调可用性。比如订单退款,今日退款成功,明日账户到账
在实际应用中符合 AP 的场景较多,其实虽然 AP 舍弃 C 一致性,实际上最终数据还是达到了一致,也就满足了最终一致性,所以业界定义了 BASE 理论

5、BASE理论

BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。
基本可用:当系统无法满足全部可用时保证核心服务可用即可,比如一个外卖系统,每到中午 12 点左右系统并发量很高,此时要保证下单流程涉及的服务可用,其它服务暂时不可用
软状态:是指可以存在中间状态,比如:打印自己的社保统计情况,该操作不会立即出现结果,而是提示你打印中,请在 XXX 时间后查收
最终一致性:退款操作后没有及时到账,经过一定的时间后账户到账,舍弃强一致性,满足最终一致性。

6、分布式事务控制有哪些常用的技术?

在这里插入图片描述
消息队列:对于一个任务,服务A已经完成,该服务B执行。服务A需要通知服务B,让B开始执行。可以先由A通知消息队列,然后再有消息队列通知服务B
任务调度:服务A已经写入一部分数据,需要让服务B进行数据同步,可以写一个调度程序,用于将服务A中的数据不断同步到服务B中
项目中用的是任务调度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值