目录
1. cap定理及其限制?
cap定理指的是在一个分布式系统中无法同时满足一致性(Consistency)、高可用性(Availablity)、分区容错性(Patition Tolerance)三个特性,最多满足其中两个。
其中
一致性(Consistency):在分布式系统中,所有节点在同一时刻的数据是完全一致的;
高可用性(Availablity):在分布式系统中,部分(非全部)节点发生故障的情况下还能正常对外提供服务;
分区容错性(Patition Tolerance):在分布式系统中,某些节点或网络分区发生故障导致时,还能正常对外部提供满足一致性或可用性的服务。
而分布系统中,分区系统中分区容错性P是必须具备的,因此分布式系统有两种选择,一种是满足高可用性和分区容错性的AP模式,另一种是满足一致性和分区容错性的CP模式。
一般而言,电商系统更多选择AP模式,银行系统选择CP模式。
2. 主流索引算法及其原理?
常见的是B-Tree,B+Tree,hash。MySQL默认建表查询索引为B+tree索引。
B-Tree:
这里的 B 表示 balance( 平衡的意思),B-Tree是一种多路自平衡的搜索树(B-Tree是一颗多路平衡查找树),它类似普通的平衡二叉树,不同的一点是B-Tree允许每个节点有更多的子节点。所有键值分布在整颗树中(索引值和具体data都在每个节点里)。
B+Tree:
B+Tree是B+Tree的变体,也是一种多路搜索树,将相关数据构建成一棵B+树,通过索引获取查询想要的的结果。所有的中间节点只保存索引信息,不保存数据信息(也就是说想找到数据,必须从根节点找到叶子节点)
Hash索引:
基于哈希表实现,只有匹配所有列的查询才有效。对于每一行数据,存储引擎都会对所有索引列计算一个哈希码,哈希码是一个较小的值,不同键值的行计算出的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时保存指向每个数据行的指针。
3. 分布式系统会有哪些问题?
1) 通信异常
网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤、路由、DNS等硬件设备或系统的不可用),都会导致最终分布式系统无法顺利进行一次网络通信,另外,即使分布式系统各节点之间的网络通信能够正常执行,其延时也会大于单机操作,存在巨大的延时差别,也会影响消息的收发过程,因此消息丢失和消息延迟变的非常普遍。
2) 网络分区
网络之间出现了网络不连通,但各个子网络的内部网络是正常的,从而导致繁个系统的网络环境被切分成了若干个孤立的区域,分布式系统就会出现局部小集群,在极端情况下,这些小集群会独立完成原本需要整个分布式系统才能完成的功能,包括数据的事务处理,这就对分布式的一致性提出非常大的挑战。
3) 节点故障
节点故障是分布式系统下另一个比较常见的问题,指的是组成分布式系统的服务器节点出现的宕机或"僵死"现象,每个节点都有可能出现故障,并且经常发生。
4)三态
分布式系统每一次请求与响应存在特有的 “三态” 概念,即成功、失败和超时。分布式系统中,由于网络是不可靠的,虽然绝大部分情况下,网络通信能够接收到成功或失败的响应,但当网络出现异常的情况下,就会出现超时现象,通常有以下两种情况:
1由于网络原因,该请求并没有被成功的发送到接收方,而是在发送过程就发生了丢失现象。
2该请求成功的被接收方接收后,并进行了处理,但在响应反馈给发送方过程中,发生了消息丢失现象。
4. 事务隔离级别有哪些?
事务的隔离级别有4种,由低到高分别为读未提交(Read uncommitted) 、读已提交(Read committed) 、可重复读(Repeatable read )、串行化(Serializable) 。
事务的并发操作中可能出现脏读,不可重复读,幻读。
读未提交可能会出现脏读,不可重复读,幻读
读已提价可能会出现不可重复读,幻读
可重复度可能会出现幻读
5. 用shell统计下如下内容第三列出现的数量?
Chrome/91.0.4472.101 HTTP/2.0 news 183.136.216.35
Safari/537.36 HTTP/1.0 user 183.136.216.35
Chrome/91.0.4472.101 HTTP/2.0 accout 183.136.216.35
Safari/537.36 HTTP/1.0 center 183.136.216.34
Chrome/91.0.4472.101 HTTP/2.0 news 183.136.216.35
Safari/537.36 HTTP/1.0 user 183.136.216.35
Chrome/91.0.4472.101 HTTP/2.0 accout 183.136.216.31
Safari/537.36 HTTP/1.0 list 183.136.216.32
Chrome/91.0.4472.101 HTTP/2.0 news 183.136.216.35
Safari/537.36 HTTP/1.0 user 183.136.216.35
Chrome/91.0.4472.101 HTTP/2.0 accout 183.136.216.35
Safari/537.36 HTTP/1.0 center 183.136.216.34
Chrome/91.0.4472.101 HTTP/2.0 news 183.136.216.35
Safari/537.36 HTTP/1.0 home 183.136.216.35
Chrome/91.0.4472.101 HTTP/2.0 accout 183.136.216.31
Safari/537.36 HTTP/1.0 list 183.136.216.32
Chrome/91.0.4472.101 HTTP/2.0 news 183.136.216.35
Safari/537.36 HTTP/1.0 user 183.136.216.35
Chrome/91.0.4472.101 HTTP/2.0 accout 183.136.216.35
Safari/537.36 HTTP/1.0 center 183.136.216.34
Chrome/91.0.4472.101 HTTP/2.0 news 183.136.216.35
Safari/537.36 HTTP/1.0 user 183.136.216.35
Chrome/91.0.4472.101 HTTP/2.0 accout 183.136.216.31
Safari/537.36 HTTP/1.0 list 183.136.216.32
备注:数据以空格分割,共四列,分别是浏览器版本 http协议,页面名称,IP地址
答案
//先用将数据写入文件
vi shellwc
//将数据复制进去并保存,后执行下方命令
awk -F' ' '{print $3}' shellwc|sort|uniq -c //其中shellwc为文件名
//结果如下
[root@linux121 ~]# awk -F' ' '{print $3}' shellwc|sort|uniq -c
6 accout
3 center
1 home
3 list
6 news
5 user