首先在微服务的体系中,注册中心是其核心组件之一。Dubbo通过注册中心的方式实现了分布式环境中各个服务的注册与发现,同时还管理着各个服务之间调用关系,起到了各个服务之间的纽带作用。而它的主要作用有如下一些。
Dubbo的注册中心代码在dobbo-registry 模块中,其中还包含了如下的五个子模块
其中可以看到Dubbo主要提供了四种注册中心的实现方式,分别对应Zookeeper、Redis、Simple、Multicast。
其中Zookeeper是官方比较推荐的一个注册中心,在生产环境中被广泛的使用。在阿里内部并没有以Redis作为注册中心使用,也就是说Redis作为服务注册中心并没有得到实践的检验。同样使用Redis 作为注册中心,其稳定性其实更多的在于Redis本身的性能。随着Redis的不断升级迭代,在不久的将来一定会有大面积的使用。
Dubbo有着很好的扩展性,如果现有的注册中心不能满足要求,那么开发者可以通过RegistryFactory 和Registry进行扩展。
注册中心的总体流程还是比较简单的,Dubbo官网上也有比较详细的说明,总体的流程图如下。
注册中心的总体设计是相同的,只是不同的注册中心有着不同的实现方式,既然实现方式不同,那么对应的数据结构也就是不一样的了。Zookeeper、Redis等注册中心都是实现了上面的流程,但是由于两者的数据结构不相同,所以实现方式也有所不同。
Zookeeper是一种树形结构存储的注册中心,在Zookeeper中有四类节点,分别是持久节点、持久顺序节点、临时节点、临时顺序节点。
Dubbo在使用Zookeeper作为注册中心的时候,会创建持久节点和临时节点两种,对于创建节点的顺序其实没有太多的要求。
树结构关系
Redis作为注册中心在实际的开发中并不是太常用,也是沿用了Dubbo抽象出来的Root、Service、Type、URL四层结构来进行存储,但是由于Redis是非关系型数据库,数据都是通过键值对的方式进行保存,也不能像是Zookeeper一样直接采用树状结构来存储,所以Redis采用了K/Map的形式来实现存储。Root、Service、Type组合形成Key,Redis的value是一个Map结构。Url作为Map的Key,超时时间作为Map的Value。
| 留言与评论(共有 0 条评论) “” |