Solon rpc 之 SocketD 协议系列

Solon rpc 之 SocketD 协议 - 概述

Solon rpc 之 SocketD 协议 - 消息上报模式

Solon rpc 之 SocketD 协议 - 消息应答模式

Solon rpc 之 SocketD 协议 - 消息订阅模式

Solon rpc 之 SocketD 协议 - RPC调用模式

Solon rpc 之 SocketD 协议 - 单链接双向RPC模式

Solon rpc 之 SocketD 协议 - 消息加密模式

SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案。它的消息协议规范具有异步,背压的双向,多路复用,断线重连,基于消息等特性。暂时只提供Java实现,目前做为Solon rpc的sockte通道协议。

本案以单链接双向RPC模式为例演示:(在RPC调用模式基础上,增加服务端反向接口调用)

接口定义

Rpc 模式借用了 Nami 做客户端定义(Nami 是 Solon 伴生框架,定位为 Rpc 通用客户端)

@NamiClient("demo:/demoe/rpc")
public interface HelloService {
String hello(String name);
} @NamiClient("demo:/demoe/rpc/name")
public interface NameService {
String name(String name);
}

服务端

//启动服务端
public class ServerApp {
public static void main(String[] args) {
//启动Solon容器(SocketD bean&plugin 由solon容器管理)
Solon.start(ServerApp.class, args, app -> app.enableSocketD(true));
}
} //定义远程服务组件(供客户端调用)
@Mapping(value = "/demoe/rpc", method = MethodType.SOCKET)
@Component(remoting = true)
public class HelloServiceImpl implements HelloService {
public String hello(String name) {
//[服务端] 反向调用 [客户端] 的远程服务组件***
NameService rpc = SocketD.create(Context.current(), NameService.class);
name = rpc.name(name); return "name=" + name;
}
}

客户端

//启动客户端
public class ClientApp {
public static void main(String[] args) throws Throwable {
//启动Solon容器(SocketD bean&plugin 由solon容器管理)
Solon.start(ClientApp.class, args); //[客户端] 调用 [服务端] 的 rpc
//
HelloService rpc = SocketD.create("tcp://localhost:28080", HelloService.class); System.out.println("RPC result: " + rpc.hello("noear"));
}
} //定义远程服务组件(供服务端调用)
@Mapping(value = "/demoe/rpc/name", method = MethodType.SOCKET)
@Component(remoting = true)
public class NameServiceImpl implements NameService {
@Override
public String name(String name) {
return name + "2";
}
}

附:示例源码

Solon rpc 之 SocketD 协议 - 单链接双向RPC模式的更多相关文章

  1. Solon rpc 之 SocketD 协议 - 消息鉴权模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  2. Solon rpc 之 SocketD 协议 - 消息上报模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  3. Solon rpc 之 SocketD 协议 - 消息应答模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  4. Solon rpc 之 SocketD 协议 - 消息订阅模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  5. Solon rpc 之 SocketD 协议 - RPC调用模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  6. Solon rpc 之 SocketD 协议 - 消息加密模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  7. Solon rpc 之 SocketD 协议 - RPC鉴权模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  8. Solon rpc 之 SocketD 协议

    1. 简介 SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议.旨在用于分布式应用程序中.从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案.它的消息协 ...

  9. RPC远程过程调用协议

    最近学习Hadoop.Hbase.Spark及Storm原理,经常会出现RPC这样的传输术语,为了更好地理解,将知识点详细的整理下吧~ RPC-----它是一种通过网络从远程计算机程序上请求服务,而不 ...

随机推荐

  1. pytorch实战(一)hw1——李宏毅老师作业1

    任务描述:利用前9小时数据,预测第10小时的pm2.5的数值,回归任务 kaggle地址:https://www.kaggle.com/c/ml2020spring-hw1 训练集为: 12个月*20 ...

  2. Typora入门教程

    Typora学习教程 1目录 [TOC]加空格 ,自动生成 目录 1目录 2图片 3下划线 4删除线 5解决语法和内容冲突 6加粗 6.1测试页面跳转 7倾斜 8超链接 9模块 10引用 11表格 1 ...

  3. 步步为营,打造CQUILib UI框架库

    步步为营,打造CQUILib UI框架库 UI框架包括如下几个方面:: 丰富的UI控件 窗口管理 主题 多语言 托盘 视图与业务解耦 登录框效果如下:: 提示框效果如下:: 后续讲解如何步步为营,打造 ...

  4. 深入理解Java虚拟机(五)——JDK故障处理工具

    进程状况工具:jps jps(JVM Process Status Tool) 作用 用于虚拟机中正在运行的所有进程. 显示虚拟机执行的主类名称以及这些进程的本地虚拟机唯一ID. 可以通过RMI协议查 ...

  5. 七牛云SDKLinux环境下C SDK的编译(转)

    1.下载代码到本地 git clone https://github.com/qiniu/c-sdk.git 如果国外下载速度慢,可以用码云的镜像库 git clone https://gitee.c ...

  6. sqli-labs less-7(文件读写)

    less-7 dump into outfile(文件读写) 通俗的来讲,就是通过outfile传入一句话木马到网站目录里,然后用菜刀或者蚁剑等连接 过程: 输入id=?判断闭合类型 页面上提示了使用 ...

  7. 六、Jmeter测试元件-测试计划

    启动Jmeter时,会默认建好一个测试计划,启动一个Jmeter只有个测试计划 测试用到的源码下载地址 https://www.cnblogs.com/fanfancs/p/13557062.html ...

  8. 升级jenkins之后无法启动 报错Unable to read /var/lib/jenkins/config.xml

    故障记录 点击jenkins升级后再点击回滚到之前版本,jenkins就起不来了. 欲哭无泪,报错如下 hudson.util.HudsonFailedToLoad: org.jvnet.hudson ...

  9. v-once

    v-once 使用了这个指令,那么这个值将只会渲染一次,后续将不会再被更改 初始运行结果: 在控制台中分别修改他们的值: 可以看到使用了v-once指令的插值没有被修改.

  10. HBase过滤器:SingleColumnValueFilter和FirstKeyOnlyFilter一起使用的问题

    FirstKeyOnlyFilter是对第一列进行过滤,hbase中的列按照字典序排列,所以如果SingleColumnValueFilter中的过滤列不是第一列的话,FirstKeyOnlyFilt ...