Dubbo(来自于阿里巴巴)
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的PRC远程调用服务调用方案。
Dubbo的的特点
通过spring配置的方式即可完成服务化,对于应用无入侵。(SpringCloud有一定的入侵)
通过maven的install & deploy命令把interface和Model层发布到仓库中,服务调用方只需要依赖interface和model层即可
通过zookeeper设置达到注册服务和心跳检测,通过gateWay前置网关(Clound使用Zuul实现负载均衡 将请求转向Eureka服务器)隔绝外部直接调用原子服务的风险
Dubbo 核心部件(如下图):
- Provider: 暴露服务的提供方,可以通过jar或者容器的方式启动服务(需要启动 使用Docker容器)
- Consumer:调用远程服务的服务消费方。
- Registry: 服务注册中心和发现中心。(zookeeper)
- Monitor: 统计服务和调用次数,调用时间监控中心。(dubbo的控制台页面中可以显示,目前只有一个简单版本)
- Container:服务运行的容器。
SprIng+dubbo的实现
pom.xml
<dependency>
<groundId>com.alibaba<groundId>
<artifactId>dubbo<artifactId>
<version>2.4.10<version>
</dependency>
dubbo服务提供者:服务接口和服务接口的实现和普通的一样,并不知道自己被某个RPC框架所调用。
Spring.xml
<!--接入DUBBO的应用名 -->
<dubbo:application name="ws-demo" />
<!-- 注册仓库地址:Zookeeper组件, 192.168.128:2181 -->
<dubbo:registry address="zookeeper://192.168.128:2181"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880">
<!-- 接口实现类Bean 使用@Compent注解的当时注册 -->
<dubbo:service interface="接口" ref=“接口实现类”/>
dubbo服务消费者:只需要知道要访问的服务接口(具体实现方法 从服务提供者中获得)
<!--接入DUBBO的应用名 -->
<dubbo:application name="ws-demo-client" />
<!-- 注册仓库地址:Zookeeper组件, 192.168.128:2181 -->
<dubbo:registry address="zookeeper://192.168.128:2181"/>
<!-- 接口实现类Bean 使用@Compent注解的当时注册 -->
<dubbo:reference id="Bean名" interface="接口"/>
dubbo与Apache Thrift的区别
-
dubbo 本身是一个综合的SOA解决方案,thrift仅是一个rpc服务框架;
-
dubbo当前主要用作java, thrift可以用作目前所熟知的各种语言;
-
dubbo可以使用thrift作为rpc服务组件,dubbo也有自带的rpc组件