dubbo介绍
Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
使用场景
当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等。
当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?等等……
在遇到这些问题时,都可以用Dubbo来解决。
Dubbo xml文件配置
注册仓库配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<description>dubbo注册仓库配置</description>
//加载配置文件,主要用来存放一些参数
<context:property-placeholder location="classpath:dubbo.properties" ignore-unresolvable="true"/>
//引入Provider Consumer 配置
<import resource="app-rpc-provider.xml"/>
<import resource="app-rpc-consumer.xml"/>
//dubbo起个应用名字
<dubbo:application name="demo" owner="demo"/>
<!--设置provider的全句日志级别-->
<dubbo:provider>
<dubbo:parameter key="qloglevel" value="5"/>
</dubbo:provider>
//配置zookeeper的端口号
<dubbo:protocol port="${dubbo.port}"/>
<!--注册仓库配置 id为注册仓库的唯一区分名 在Consumer 引用和Provider提供服务时注册到特定的注册仓库时使用
protocol指定dubbo采用的注册中心。address为注册中心的服务地址。 group 为分组,如果想要分开测试环境和生产环境可 以采用分组方式,如果一个接口多个实现可以注册到不同的分组里面
-->
<dubbo:registry id="online_user_data" protocol="zookeeper" address="zookeeper://224.5.6.7:1234"
group="dubbo.group.online.userdata"/>
<dubbo:registry id="offline_user_data" protocol="zookeeper" address="zookeeper://224.5.6.7:1234"
group="dubbo.group.offline.userdata"/>
</beans>
消费者配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<description>Dubbo Consumer 配置</description>
<!-- id为接口的名字在程序种应用时可以通过@Resource注解实例化。
interface为引用的接口的类的全路径。
registry 为仓库的地址的id
check 为spring初始化时是否检查服务是否可用
-->
<dubbo:reference id="baseEsOperationService"
interface="com.qunar.finance.nbdata.adapter.api.service.BaseEsOperationService"
registry="online_user_data"
timeout="60000"
version="1.0.1"
check="false"/>
</bean>
服务提供者配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<description>Dubbo Provider 配置</description>
<!-- interface 为指定为实现哪一个接口
ref 为实现实现接口的类的路径
registry 为向哪个注册仓库注册
cluster为 Dubbo服务集群容错配置-集群容错模式 failfast:快速失效,只发起一次调用,失败立即报错。通常用于非幂等性写操作,比如说新增记录
-->
<dubbo:service interface="com.bee.honeycomb.service.api.service.IConsultService"
ref="com.bee.honeycomb.service.rpc.dubbo.ConsultServiceImpl"
registry="honeycomb_service_consult"
timeout="10000"
version="1.0.0"
cluster="failfast"/>
</beans>