dubbo实现rpc调用使用入门

author author     2022-08-04     491

关键词:

使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明。
另外,如果我们使用Dubbo的服务注册中心组件,这样服务提供方将服务发布到注册的中心,只是将服务的名称暴露给外部,而服务消费方只需要知道注册中心和服务提供方提供的服务名称,就能够透明地调用服务,后面我们会看到具体提供服务和消费服务的配置内容,使得双方之间交互的透明化。

示例场景

我们给出一个示例的应用场景:
服务方提供一个搜索服务,对服务方来说,它基于SolrCloud构建了搜索服务,包含两个集群,ZooKeeper集群和Solr集群,然后在前端通过Nginx来进行反向代理,达到负载均衡的目的。
服务消费方就是调用服务进行查询,给出查询条件(满足Solr的REST-like接口)。

应用设计

基于上面的示例场景,我们打算使用ZooKeeper集群作为服务注册中心。注册中心会暴露给服务提供方和服务消费方,所以注册服务的时候,服务先提供方只需要提供Nginx的地址给注册中心,但是注册中心并不会把这个地址暴露给服务消费方,如图所示:
我们先定义一下,通信双方需要使用的接口,如下所示:

01package org.shirdrn.platform.dubbo.service.rpc.api;
02
03public interface SolrSearchService {
04
05    String search(String collection, String q, ResponseType type, int start, int rows);
06
07    public enum ResponseType {
08        JSON,
09        XML
10    }  
11}

基于上图中的设计,下面我们分别详细说明Provider和Consumer的设计及实现。

  • Provider服务设计

Provider所发布的服务组件,包含了一个SolrCloud集群,在SolrCloud集群前端又加了一个反向代理层,使用Nginx来均衡负载。Provider的搜索服务系统,设计如下图所示:
上图中,实际Nginx中将请求直接转发内部的Web Servers上,在这个过程中,使用ZooKeeper来进行协调:从多个分片(Shard)服务器上并行搜索,最后合并结果。我们看一下Nginx配置的内容片段

24技术分享运行说明

首先保证服务注册中心的ZooKeeper集群正常运行,然后启动SolrSearchServer,启动的时候直接将服务注册到ZooKeeper集群存储中,可以通过ZooKeeper的客户端脚本来查看注册的服务数据。一切正常以后,可以启动运行客户端SearchConsumer,调用SolrSearchServer所实现的远程搜索服务。

框架简介:

本系统一款通用的SOA中间件平台,用来开发各类J2EE企业级应用,节省时间和人力成本。本系统采用MVC模式、AOP引擎、任务调度器、Ajax、拦截器、过滤器、缓存、日志监控、数据访问、表达式、国际化等技术。

框架/平台构成:
Maven+Springmvc + Mybatis + Shiro(权限)+ Tiles(模板) +ActiveMQ(消息队列) + Rest(服务) + WebService(服务)+ EHcache(缓存) + Quartz(定时调度)+ Html5(支持PC、IOS、Android)

用户权限系统:
组织结构:角色、用户、用户组、组织机构;权限点:页面、方法、按钮、数据权限、分级授权

项目管理新体验
快速出原型系统、组件树、版本控制、模块移植、协同开发、实时监控、发布管理

可持续集成:
所有组件可移植、可定制、可扩充,开发成果不断积累,形成可持续发展的良性循环

支持平台平台: 
Windows XP、Windows 7 、Windows 10 、 Linux 、 Unix

服务器容器:
Tomcat 5/6/7 、Jetty、JBoss、WebSphere 8.5 

技术分享

 

技术分享

 

 

技术分享

 技术分享

评论这张

 


分布式rpc服务调用框架选型:使用dubbo实现分布式服务调用

Dubbo概念Dubbo是一个高性能,轻量级的RPC分布式服务框架提供了三核心能力:面向接口的远程方法调用(@Reference)智能容错负载均衡Dubbo特点:按照分层的方式来架构,可以使各个层之间解耦合Dubbo的角色:提供方:Provider消费方:ConsumerDubbo的... 查看详情

dubbo远程调用(rpc)-->快速入门+管理控制台+整合springboot开发(代码片段)

...平台四、Dubbo开发SpringBoot1.Dubbo文档查询2.架构模型3.代码实现五、Du 查看详情

rpc框架dubbo学习入门及环境搭建(springboot+kotlin)

...有以下知识基础:Java网络编程Socket传输数据IO流rpc简介及实现rpc是remoteprocedurecall的简写,意思为远程过程调用。rpc应用较多的情景是分布式开发,那什么是分布式开发呢?原本我也是想自己解释的,奈何网上大佬解释得很清楚... 查看详情

springboot+dubbo+nacos实现rpc调用

Springboot+Dubbo+Nacos注解方式实现微服务调用1、项目结构|--dubbo-demo(父级工程)|--dubbo-demo-core(基础工程)|--dubbo-consumer(消费者)|--dubbo-provider(生产者)SpringBoot版本:2.2.xDubbo版本:2.7.3Nacos版本:1.1.42、启动Nacos注册中心3、搭建项目dub 查看详情

十三.netty入门到超神系列-手撸简单版rpc框架(仿dubbo)(代码片段)

前言学过dubbo的应该知道dubbo底层基于Netty实现,为了加强对Netty的理解,这篇文章我们来仿照dubbo手撸一个简易版本的RPC框架结构理解先来看一张图原理还是比较简单:代理+线程池+Netty下面做一些解释:首先需要... 查看详情

springcloudalibaba实战(12:引入dubbo实现rpc调用)(代码片段)

...公司中,一般都会使用RPC框架,如Dubbo等,来实现远程调用。这一节,我们就来把我们的服务间调用从Feign改造成Dubbo。1.Dubbo简介ApacheDubbo是一款微服务开发框架,它提供了RPC通信与微服务治理两大关键能力。... 查看详情

springcloudalibaba实战(12:引入dubbo实现rpc调用)(代码片段)

...公司中,一般都会使用RPC框架,如Dubbo等,来实现远程调用。这一节,我们就来把我们的服务间调用从Feign改造成Dubbo。1.Dubbo简介ApacheDubbo是一款微服务开发框架,它提供了RPC通信与微服务治理两大关键能力。... 查看详情

dubbo服务rpc调用validated验证

...验规则,会有什么区别呢?Dubbo内置ValidationFilter过滤器,实现参数校验的功能,可作用于服务提供者和服务消费者。效果如下:实际项目在使用时,至少要开启服务提供者的参数校验功能。摘自:https://www.iocoder.cn/Spring-Cloud-Alibab... 查看详情

springboot+dubbo简单分布式rpc调用demo(代码片段)

...结合网上大佬的一些资料,自己搭了个简单的分布式远程调用案例。这里强调一个东西--记住官方文档第一!!!下面分享一下我的案例代码吧,也希望本案例能对在读的读者启动一点帮助......先来一张简单的架构图吧,这个图... 查看详情

dubbo系列dubbo的核心技术--rpc调用

dubbo的核心技术--RPC调用:分为俩部分RPC协议Protocol和方法调用Invoke;一、RPC协议Protocol(RemoteProcedureCall)远程过程调用协议1、我们平时使用最多的http协议其实也属于RPC协议,下图分别是普通的传输层TCP和应用层http与dubbo优化后... 查看详情

springcloud中使用dubbo开发rpc服务及调用

springcloud中基于springboot开发的微服务,是基于http的rest接口,也可以开发基于dubbo的rpc接口。一,创建goodsService模块  1, 在创建的goodsService模块中再创建goodsServiceApi和goodsServiceServer模块  2,在oodsServiceApi模块中定义接口... 查看详情

springboot注解使用dubbo怎么调用

参考技术AMaven模块间用依赖实现调用实质项目另项目变jar包引入所说A要调用B类其实项目运行Dubbo本质rpc服务消费远程调用服务提供候AB两独立服务 查看详情

dubbo实战快速入门

...布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方... 查看详情

rpcvsrest

RPCvsREST另外,由于Dubbo是基础框架,其实现的内容对于我们实施微服务架构是否合理,也需要我们根据自身需求去考虑是否要修改,比如Dubbo的服务调用是通过RPC实现的,但是如果仔细拜读过MartinFowler的microservices一文,其定义的... 查看详情

dubbo架构设计及入门案例(代码片段)

...一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载... 查看详情

手写模拟dubbo实现一个自己的rpc框架

手写模拟Dubbo代码地址:https://github.com/chenruoyu0319/small-dubbo.git什么是RPC?维基百科是这么定义RPC的:在分布式计算,远程过程调用(英语:RemoteProcedureCall,缩写为RPC)是一个计算机通信协议。该协议允许... 查看详情

rpc(remoteprocedurecall)及其应用(java版)(代码片段)

RPC及其应用(java版)一、简介1.1什么是rpc1.2rpc的实现方式1.3RPC的使用场景:案例Dubbo框架介绍使用Dubbo框架实现RPC调用添加Dubbo依赖:配置服务:配置服务注册中心配置客户端:服务调用一、简介1.1什么是rpcRPC(Re... 查看详情

dubbo的配置过程,实现原理及架构详解

一.Dubbo是什么?Dubbo能做什么?随着互联网的发展,市场需求快速变更,业务持续高速增长,网站早已从单一应用架构演变为分布式服务架构及流动计算架构。在分布式架构的背景下,在本地调用非本进程内(远程)的资源就变... 查看详情