关于搭建环境跑起来

dubbo是阿里出的SOA框架,有不少公司使用dubbo,但是在阿里内部,已经使用HSF代替dubbo了。和RMI/PRC框架相比,SOA加入了服务治理、服务发现的特性。对于安装和运行,按照dubbo github官方README.mdSource Building步骤,可以在windows和linux系统上跑起来。需要注意的几个点:

  1. 导入eclipse并非跑起来的必须步骤,同时导入eclipse可以选择导入Existing Maven Projects,不需要先执行mvn eclipse:eclipse

  2. simple monitoradmin console是对等的,只需要执行一个就行,后者功能更多。要访问http://localhost:8080/index.html输入用户名密码root/root,而非访问http://127.0.0.1:8080

  3. simple registryzookeeper registryredis registry是三种类型的注册中心服务,三选一即可,推荐使用zookeeper。

dubbo做得好的地方

  1. 服务的自动注册和发现,自动下线摘除,服务者服务权重调整。不同的注册中心区分不同的开发环境。列出服务的所有提供者和消费者的IP列表,支持限制指定ip的客户端的访问。支持列出指定ip的所有服务提供者和消费者。

期望dubbo做得更好的地方

  1. 服务提供者和消费者,目前都需要在xml配置文件中配置两条内容,这容易出错:
<!-- 服务提供者 -->
<bean id="barService" class="com.foo.BarServiceImpl" />
<dubbo:service interface="com.foo.BarService" ref="barService" />

<!-- 服务消费者 -->
<dubbo:reference id="barService" interface="com.foo.BarService" />
<bean id="barAction" class="com.foo.BarAction">
    <property name="barService" ref="barService" />
</bean>

期望用注解代替繁杂的xml配置,使得代码更内聚。如果疑虑没有一个全局的地方看整个应用都提供了哪些服务,消费了哪些服务,实际上可以做一个eclipse插件来自动生成一个全局的服务列表。更简洁的做法:

/**服务端只需要注解上@DubboService即可*/
@DubboService(IMyService.class)
@Serive
public class MyService implements IMyService {

}

/**消费者,只需要注入远程服务即可*/
public class MyConsumer {
    @AutowiredDubbo
    private IMyService myService;
}
  1. 提供访问监控视图、调用链视图、上下文传递。

  2. 关于开发环境、测试环境、预发环境、线上环境,我更喜欢机器即环境的概念,相同的代码放到不同的环境机器上,会使用不同机器的配置。

参考资料

  1. Dubbo架构设计详解
文档更新时间: 2018-11-10 20:16   作者:nick