Dubbo主要包含如下几个核心组件:
1.注册中心(registry)
在微服务时代,我们所有的服务都被劲量拆分成最小的粒度,原先所有的服务都在混在1个server里,现在就被按照功能或者对象拆分成N个服务模块。
这样做的好处是深度解耦,1个模块只负责自己的事情就好,能够实现快速的迭代更新,但是坏处就是服务的管理和控制变得异常的复杂和繁琐,人工维护难度变大。
所以,这个时候急需一个组件来管控所有的服务,注册中心就出现了。
注册中心的作用:一句话概括就是存放和调度服务,实现服务和注册中心,服务和服务之间的相互通信,注册中心可以说是微服务架构中的”通讯录“。
注册中心它记录了服务和服务地址的映射关系,在分布式架构中服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址进行调用。
常见的注册中心有:Zookeeper,Eureka,Consul,Etcd等,Dubbo这里就采用了Zookeeper为注册中心。
2.服务提供者(provider)
当我们需要为某个功能对外提供服务时我们可以暴露服务给使用者调用,那么这个服务就是服务提供者。
举个例子:淘宝的商品服务(SIC),提供了相关的淘宝商品的信息查询服务,那这个淘宝的商品服务(SIC)就是服务提供者。
一句话总结服务提供在:暴露服务的服务提供方,称之为”服务提供者”。
3.服务消费者(consumer)
调用远程服务的服务消费方,称之为”服务消费者”。
举个例子:比如我是淘宝的店铺团队,有一个需求需要调用商品信息,这个时候我就通过调用淘宝商品服务(SIC)提供的商品查询接口,我就是服务消费者,而商品团队就是服务提供者。
4.容器(container)
服务容器负责启动,加载,运行服务提供者,dubbo服务运行,也就是让生产服务的进程一直启动。
服务容器是一个 standalone 的启动程序,因为后台服务不需要 Tomcat 或 JBoss 等 Web 容器的功能,如果硬要用 Web 容器去加载服务提供方,增加复杂性,也浪费资源。
服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。
5.监控(Monitor)
dubbo的使用其实只需要有注册中心,消费者,提供者这三个就可以使用了。
但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,需要监控,这就是监控中心的作用。
因此Dubbo引入了监控中心,通过 dubbo-admin 可以对消费者和提供者进行管理,也可以在 dubbo 应用部署做动态的调整和服务的管理。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》