发表于: 2020-07-30 22:50:02

1 1507


今天完成的事情:

Dubbo提供了哪几种注册中心的方式?Redis和Zookeeper应该用哪一种?

Dubbo提供了以下几种注册中心方式:Multicast,Zookeeper,Redis,Simple,以及Consul 、Nacos,Eureka等。

对于注册中心的选择主要参考以下条件:数据模型,数据一致性,负载均衡,健康检查,易用性,性能与容量。

当前主流注册中心的比较:

在这里插入图片描述

CAP指的是CAP原则,即C(Consistency)一致性,A(Availability)可用性,P(Partition tolerance)分区容错性。

对于Redis和Zookeeper应该用哪一种,要根据实际需求来选择,

Redis优点有:支持集群,性能高;缺点有:要求服务器时间同步,否则可能出现集群失败问题。

Zookeeper优点有:支持分布式,和很多周边产品;缺点有:受限于Zookeeper的稳定性。


任务总结:

任务一:

1.开发环境的搭建:JDK,Maven,Mysql,Navicat,Idea等软件的下载安装以及环境变量的配置。

2.设计DB表,分别用Mysql和Navicat操作数据库,数据库的备份与恢复,创建索引。

根据业务分析来设计DB,每个DB表对应一个实体类。

索引:帮助Mysql高效获取数据的排好序数据结构

mysql使用的是B+Tree结构。要了解B+tree,得先了解二叉树结构。

二叉树(二叉查找树):左子树的键值小于根的键值,右子树的键值大于等于键值。

例如:

这样如果要查询5的话只需要查找3次。

但是如果存入的数据是类似id一样一直增加的话,就会出现:

这样二叉树就不平衡了,现在如果要查找5,则需要查找5次,查询速度非常低。


红黑树(平衡二叉查找树):

性质1:每个节点要么是黑色,要么是红色。

性质2:根节点是黑色。

性质3:每个叶子节点是黑色,且为null。

性质4:每个红色结点的两个子结点一定都是黑色。

性质5:任意一结点到每个叶子结点的路径都包含数量相同的黑结点。


根节点:树最顶端的节点。

子节点:除根节点之外,并且本身下面还连接有节点的节点。

叶子节点:不断细分直到不再有子节点的节点。

即:

红黑树是可以自平衡的,即使插入的数据一直增加也能通过左旋,右旋,变色等操作来保持平衡。

但是随着数据量的增大,红黑树的高度也会越来越大,查找次数会不断增多。

对红黑树进行改造,减少数的深度之后就得到了

B-Tree:

节点中的数据索引从左至右递增排列。

所有索引元素不重复。

每个叶节点具有相同的深度,即树的高度。

相比于二叉树,B-Tree每个内结点有多个分支,即多叉。

mysql索引所使用的B+Tree就是在B-Tree的基础上做了一些变种:

B+Tree:

非叶子节点不再储存data,只储存索引(冗余),来节省空间可以放更多的索引。

叶子节点包含索引字段。

叶子节点用指针连接,提高区间访问性能。

B+Tree把所有的索引元素在叶子节点储存了一份完整的元素,然后把处于中间的元素提到子节点来作为冗余存放,由于只储存了索引,所以可以储存更多的索引。

索引的元素开始是存在磁盘里的,当我们找到某个节点时它才会被加载到内存中。而B+Tree就是将所有子节点的冗余先加载到内存中。

即:

B-Tree:

B+Tree:

MylSAM存储引擎索引实现:

索引文件和数据文件时分离的(非聚集索引)

InnoDB存储引擎索引实现:

表结构文件本身就是按B+Tree组织的一个索引结构文件。

叶节点保存了完整的数据记录。索引和数据文件储存在一起。(聚集索引)

组合索引的最左前缀法则,必须要有最左边的字段才能使用组合索引。


3.编写DAO,使用JdbcTemplate,Mybatis,Spring对数据库增删改查。

JdbcTemplate是spring对jdbc的封装,需要我们手动传入sql语句,然后使用其中的执行方法即可。

execute:可以执行所有方法。

update:用于执行增,删,改方法。

queryXXX:用于查询。

执行步骤:

1.加载数据库的驱动

2.通过JCBC建立数据库连接

3.访问数据库,执行sql语句

4.断开数据库连接,释放资源

和jdbc不同的是第三步,jdbc是使用PreparedStatement来操作数据库的;而jdbcTemplate则是直接调用update,query等方法。


Mybatis:Mybatis避免了jdbc使用原生sql语句,只需要配置xml文件和pojo实体类和接口中的方法映射即可实现对数据库的增删改查。

Spring:IOC(控制反转),将创建bean对象的权力交给spring容器,由spring来帮我们创建所有的bean对象,在我们需要的时候直接去容器中取即可。

依赖注入:set方法注入,构造函数注入,注解注入。


4.junit单元测试,Debug调试,log4j日志。

5.使用git将项目上传服务器。服务器相关操作指令。


明天计划完成的事情:加快进度,完成任务总结,完成复盘ppt


返回列表 返回列表
评论

    分享到