分布式服务框架HSF

HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础:
1.标准Service方式的RPC
  1)、Service定义:基于OSGI的Service定义方式
  2)、TCP/IP通信:
   IO方式:nio,采用mina框架
   连接方式:长连接
   服务器端有限定大小的连接池
   WebService方式
  3)、序列化:Hessian序列化机制
2.软件负载体系
3.模块化、动态化
4.服务治理

 

这里简单介绍下其使用:
首先要将HSF功能加进工程,是maven的话,在pom.xml里要依赖HSF:

Xml代码    收藏代码
  1. <</span>dependency>  
  2.             <</span>groupId>com.taobao.hsf</</span>groupId>  
  3.             <</span>artifactId>hsf.connector.spring</</span>artifactId>  
  4.             <</span>version>xxx</</span>version>  
  5.  </</span>dependency>  

 而对于服务框架肯定是有服务提供者和消费者两种角色,在提供者方要做的工作包括:
1. 将interface的代码打成Jar包,放进maven仓库中,供使用者下载使用,而具体代码实现则不需要放进jar包中,使用者只能调用,无法看见具体实现。
2.在对应的HSF的配置文件里,将提供的服务提供出来(基于spring的bean配置):

Xml代码    收藏代码
  1. <</span>bean id="xxxServiceImpl" class="xxx.xxxServiceImpl" />  
  2. <</span>bean id="xxxServiceProvider"     class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">  
  3.      <</span>property name="serviceInterface">  
  4.         <</span>value>xxx.xxxService</</span>value>  
  5.      </</span>property>  
  6.      <</span>property name="target">  
  7.         <</span>ref bean="xxxServiceImpl" />  
  8.      </</span>property>  
  9.      <</span>property name="serviceName">  
  10.         <</span>value>xxxService</</span>value>  
  11.      </</span>property>  
  12.      <</span>property name="serviceVersion">  
  13.         <</span>value>xxx</</span>value>  
  14.      </</span>property>  
  15.      <</span>property name="serviceGroup">  
  16.         <</span>value>HSF</</span>value>  
  17.      </</span>property>  
  18. </</span>bean>  

 服务提供成功后,在HSF服务管理中心可以查看到这个HSF服务。
而在消费者方要做的工作:

Xml代码    收藏代码
  1. <</span>bean name="xxxService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">  
  2.      <</span>property name="interfaceName" value="xxx.xxxService" />  
  3.      <</span>property name="version" value="xxx" />  
  4. </</span>bean>  

 这样这个service就可以使用了。

 

HSF的缺点是其要使用指定的JBoss等容器,还需要在JBoss等容器中加入sar包扩展,对用户运行环境的侵入性大,如果你要运行在Weblogic或Websphere等其它容器上,需要自行扩展容器以兼容HSF的ClassLoader加载。 taobao有类似的其他框架Dubbo,介绍见。


和淘宝HSF相比,Dubbo的特点是什么?


1.   Dubbo比HSF的部署方式更轻量 ,HSF要求使用指定的JBoss等容器,还需要在JBoss等容器中加入sar包扩展,对用户运行环境的侵入性大,如果你要运行在Weblogic或Websphere等其它容器上,需要自行扩展容器以兼容HSF的ClassLoader加载,而Dubbo没有任何要求,可运行在任何Java环境中。 

2.   Dubbo比HSF的扩展性更好,很方便二次开发 ,一个框架不可能覆盖所有需求,Dubbo始终保持平等对待第三方理念,即所有功能,都可以在不修改Dubbo原生代码的情况下,在外围扩展,包括Dubbo自己内置的功能,也和第三方一样,是通过扩展的方式实现的,而HSF如果你要加功能或替换某部分实现是很困难的,比如支付宝和淘宝用的就是不同的HSF分支,因为加功能时改了核心代码,不得不拷一个分支单独发展,HSF现阶段就算开源出来,也很难复用,除非对架构重写。 

3.   HSF依赖比较多内部系统 ,比如配置中心,通知中心,监控中心,单点登录等等,如果要开源还需要做很多剥离工作,而Dubbo为每个系统的集成都留出了扩展点,并已梳理干清所有依赖,同时为开源社区提供了替代方案,用户可以直接使用。 

4.   Dubbo比HSF的功能更多 除了ClassLoader隔离,Dubbo基本上是HSF的超集,Dubbo也支持更多协议,更多注册中心的集成,以适应更多的网站架构。

Dubbo在安全机制方面是如何解决的?

Dubbo主要针对内部服务,对外的服务,阿里有开放平台来处理安全和流控,所以Dubbo在安全方面实现的功能较少,基本上只防君子不防小人,只防止误调用。 

Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值