标签:Dubbo 调用 服务 String 综述 dubbo RPC 注册
2021SC@SDUSC
dubbo介绍
dubbo是一个微服务的开发框架。
如果服务过多,就尽量不要把所有的服务都部署在同一台机器上,而是把服务拆分成不同的微服务,部署在不同的机器上,提高可用性。
因为不同的服务部署在了不同的机器上,而这些服务有可能需要相互通信,就有了RPC的概念。
RPC(Remote Procedure Call)即远程调用过程,实现像原来调用本机上的服务一样,调用不同机器上的远程服务。RPC有不同的实现方式。
而dubbo的两大核心能力,就是RPC通信和微服务治理。因此可用dubbo拆分服务,实现相互通信,同时还可利用dubbo的其他功能实现负载均衡,流量调度等。
dubbo的架构如下:
节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
- 首先启动容器,加载运行服务提供者。
- 服务提供者向注册中心注册服务。
- 服务消费者启动,向注册中心订阅服务。
- 注册中心给消费者提供所需服务的地址列表
- 根据负载均衡算法,选择服务的一个提供者向消费者服务
- 监控器每隔一段时间接受服务的各项统计数据。
dubbo配置
dubbo提供api使用,不过一般都整合spring进行使用。
- 定义服务接口,如:
package org.apache.dubbo.demo;
public interface DemoService {
String sayHello(String name);
}
- 服务提供方实现接口
package org.apache.dubbo.demo.provider;
import org.apache.dubbo.demo.DemoService;
public class DemoServiceImpl implements DemoService {
public String sayHello(String name) {
return "Hello " + name;
}
}
- spring配置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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="hello-world-app" />
<!-- 使用multicast广播注册中心暴露服务地址 -->
<dubbo:registry address="multicast://224.5.6.7:1234" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" />
<!-- 和本地bean一样实现服务 -->
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl" />
</beans>
标签:Dubbo,调用,服务,String,综述,dubbo,RPC,注册 来源: https://blog.csdn.net/weixin_45876046/article/details/120571580
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。