美文网首页
rpc之hessian闲聊

rpc之hessian闲聊

作者: 木易爽 | 来源:发表于2018-08-26 11:31 被阅读44次

参考链接

参考链接

前言

   在开源世界中有很多优秀的RPC框架,如gRpc,Dubbo,Motan等等,但在某些场景下,此类框架就显得"太重",Spring全家桶是java程序猿的最爱,在rpc方面对多种模型提供了支持,如Hessisan,Burlap以及Http invoker。今天想聊一聊的是基于Spring的轻量级的RPC实现---Hessian。

  Hessian是一种基于Http的轻量级远程服务解决方案,利用二进制消息进行客户端和服务端的交互,采用Servlet暴露服务。因它的二进制消息可以移植到其他非java语言中,具有跨语言特性。

Spring对RPC的支持及调用模型

  • 不管选择哪种远程调用模型,在spring中都提供了风格一致的支持(通常是由一个代理工厂bean实现),如下图。

Hessian服务发布与调用

模块架构

QQ截图20180826110043.png
  • sb-hessian-client 服务接口定义

  • sb-hessian-consumer 服务调用方

  • sb-hessian-provider 服务提供方

服务接口定义


public interface HelloService {

    String sayHello(String word);

}

服务实现与暴露

  • 服务实现

> /**
> 
>  * 服务实现
> 
>  */
> 
> @Component("helloService")
> 
> public class HelloServiceImpl implements HelloService,Serializable {
> 
>     @Override
> 
>     public String sayHello(String word) {
> 
>         return "hessian" + word;
> 
>     }
> 
> }

  • 服务暴露

   /**

     * 服务暴露

     * @param helloService

     * @return

     */

    @Bean(name = "/helloService.service")

    public HessianServiceExporter exportService(@Autowired HelloService helloService) {

        HessianServiceExporter exporter = new HessianServiceExporter();

        exporter.setService(helloService);

        exporter.setServiceInterface(HelloService.class);

        return exporter;

    }

  • 服务调用

    /**

     * 外部依赖服务

     *

     * @return

     */

    @Bean(name = "helloService")

    public HessianProxyFactoryBean getHelloService() {

        HessianProxyFactoryBean proxy = new HessianProxyFactoryBean();

        proxy.setServiceUrl("http://localhost:8083/helloService.service");

        proxy.setServiceInterface(HelloService.class);

        return proxy;

    }

注意

  • hessian是基于二进制的消息,在服务实现必须实现序列化接口。

  • 关于HessianServiceExporter

    HessianServiceExporter本质上是一个SpringMVC控制器。它通过接收Hessian请求,并把其转换成对应的bean方法调用。

    由setService()和setServiceInterface()暴露服务。

  • 关于HessianProxyFactoryBean

    通过setServiceUrl()和setServiceInterface()获取服务调用

    
    

setServiceUrl("http://localhost:8083/helloService.service");


 注意这里需要指定的服务提供端的端口

> 项目示例链接

[链接](https://gitee.com/lingluojun/sb-rpc-parent.git)

相关文章

  • rpc之hessian闲聊

    参考链接 参考链接 前言 Spring对RPC的支持及调用模型 不管选择哪种远程调用模型,在spring中都提供了...

  • Hessian实现RPC通信

    RPC即远程程序调用 RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计...

  • 基于hessian和netty的RPC框架设计和实现

    一:概述 对系统进行服务化改造,或者构建一个分布式系统,RPC是核心的组件,目前主流的RPC框架有hessian...

  • SpringBoot整合Hessian

    Hessian是一个轻量级的remoting on http框架(远程调用框架),采用的是Binary RPC协议...

  • Dubbo亮点

    1、服务注册中心** **相比Hessian类RPC框架,Dubbo有自己的服务中心, 写好的服务可以注...

  • 轻量级rpc框架Hessian

    RPC远程服务调用在分布式项目架构中扮演着不可或缺的角色,近几年的运用也越来越广泛,主要目的旨在做到高可用的开发,...

  • 【编码日常】微服务接口兼容性升级之序列化

    dubbo rpc 接口兼容升级 hessian2 序列化 任何使用微服务架构的团队,作为接口提供方若对扩展性没有...

  • 后端学习 -- RPC

    RPC 是远程过程调用 广泛使用的有RMI、Hessian、Dubbo等。客户端和服务端可以运行在不同的JVM中,...

  • Hessian, Jacobian and Residual

    Hessian, Jacobian and Residual Hessian, 雅克比和残差 1. Hessian...

  • 编程问题

    1.hessian方法重载导致报错 客户端B 调用 服务端A 的hessian接口,hessian正常启动,浏览器...

网友评论

      本文标题:rpc之hessian闲聊

      本文链接:https://www.haomeiwen.com/subject/tdfoiftx.html