轻量级rpc框架HessianRPC远程服务调用在分布式项目架构中扮演着不可或缺的角色,近几年的运用也越来越广泛,主要目的旨在做到高可用的开发,RPC的相关框架有很多,比如阿里的Bubbo、HFS、脸书的Thrift、谷歌的grcp、推特儿的finagle、新浪的Montan以及avro、ice、rpcx、Harpc、hessian等 。各个框架都有其各自的优缺点 。
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能 。相比WebService , Hessian更简单、快捷 。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据 。
【开发注意】
Hessian的Demo
【客户端开发】
结构图
创建Web工厂HessianServer,添加hessian-3.0.1.jar包
User类
接口IBasicApi
接口实现类BasicService
配置servlet(接口URL的规定,通过URL调用接口)
启动server服务
【客户端开发】
结构图:
同样创建Java工程HessianClient,添加hessian-3.0.1.jar包
创建与服务端一致的com.lvfang.hessian.domain.User和com.mahc.hessian.service.impl.IBasicApi
测试类Test
调用结果
这样就完成了一个简单的跨服务调用
主流的RPC框架有哪些?RPC是远程过程调用go语言rpc框架哪些的简称go语言rpc框架哪些 , 广泛应用在大规模分布式应用中 , 作用是有助于系统的垂直拆分,使系统更易拓展 。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等 。RPC还有一个特点就是能够跨语言 。
1、RMI(远程方法调用)
JAVA自带的远程方法调用工具,不过有一定的局限性,毕竟是JAVA语言最开始时的设计 , 后来很多框架的原理都基于RMI , RMI的使用如下:
对外接口
span style="font-size:12px;"public interface IService extends Remote {
public String queryName(String no) throws RemoteException;
}/span
服务实现
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
【go语言rpc框架哪些 go grpc框架】// 服务实现
public class ServiceImpl extends UnicastRemoteObject implements IService {
/**
*/
private static final long serialVersionUID = 682805210518738166L;
/**
* @throws RemoteException
*/
protected ServiceImpl() throws RemoteException {
super();
}
/* (non-Javadoc)
* @see com.suning.ebuy.wd.web.IService#queryName(java.lang.String)
*/
@Override
public String queryName(String no) throws RemoteException {
// 方法的具体实现
System.out.println("hello"no);
return String.valueOf(System.currentTimeMillis());
}
}
RMI客户端
[java] view plain copy
import java.rmi.AccessException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
// RMI客户端
public class Client {
public static void main(String[] args) {
// 注册管理器
Registry registry = null;
try {
// 获取服务注册管理器
registry = LocateRegistry.getRegistry("127.0.0.1",8088);
// 列出所有注册的服务
String[] list = registry.list();
for(String s : list){
System.out.println(s);
}
} catch (RemoteException e) {
}
try {
// 根据命名获取服务
IService server = (IService) registry.lookup("vince");
// 调用远程方法
String result = server.queryName("ha ha ha ha");
// 输出调用结果
System.out.println("result from remote : "result);
} catch (AccessException e) {
} catch (RemoteException e) {
} catch (NotBoundException e) {
}
}
}
RMI服务端
[java] view plain copy
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
// RMI服务端
public class Server {
public static void main(String[] args) {
// 注册管理器
Registry registry = null;
try {
// 创建一个服务注册管理器
registry = LocateRegistry.createRegistry(8088);
} catch (RemoteException e) {
}
try {
// 创建一个服务
ServiceImpl server = new ServiceImpl();
// 将服务绑定命名
registry.rebind("vince", server);
System.out.println("bind server");
} catch (RemoteException e) {
}
}
}
2、Hessian(基于HTTP的远程方法调用)
基于HTTP协议传输,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡器,Hessian的使用则与RMI类似,区别在于淡化了Registry的角色,通过显示的地址调用 , 利用HessianProxyFactory根据配置的地址create一个代理对象,另外还要引入Hessian的Jar包 。
3、Dubbo(淘宝开源的基于TCP的RPC框架)
基于Netty的高性能RPC框架 , 是阿里巴巴开源的,总体原理如下:
Go微服务--常见的微服务框架近几年诞生go语言rpc框架哪些了很多微服务框架 , 比如JAVA的Spring Cloud、Dubbo;Golang的GoKit和GoMicro以及NodeJs的Seneca 。几乎每种主流语言都有其对应的微服务框架 。
Go在微服务框架中有其独特的优势,至于优势在哪,自行google 。
1、GoKit框架
这是一个工具包的集合,可以帮助攻城狮构建强大、可靠和可维护的微服务 。提供go语言rpc框架哪些了用于实现系统监控和弹性模式组件的库,例如日志、跟踪、限流、熔断等 。
基于这个框架的应用程序架构由三个主要的部分组成go语言rpc框架哪些:
传输层:用于网络通信,服务通常使用HTTP或者gRPC等网络传输协议,或者使用NATS等发布订阅系统相互通信 。
接口层:是服务器和客户端的基本构建块 。每个对外提供的接口方法都会定义为一个Endpoint , 一遍在服务器和客户端之间进行网络通信,每个端点使用传输层通过HTTP或gRPC等具体通信模式对外提供服务
服务成:具体的业务逻辑实现
2、GoMicro框架
这是一个基于Go语言实现的插件化RPC微服务框架 。提供了服务发现、负载均衡、同步传输、异步通信以及事件驱动等机制 , 尝试简化分布式系统之间的通信,让开发者更专注于自身业务逻辑的开发 。
GoMicro的设计哲学是可插拔的架构理念,提供了可快速构建系统的组件 , 并且可以根据自身的需求对GoMicro提供的默认实现进行定制 。所有插件都可在仓库github.com/micro/go-plugins 中找到 。
go语言有没有类似tp5框架有,go语言有框架,例如:Beego(Go语言下开源的 , 高性能Web框架 )、Buffalo(Go语言下快速Web开发框架)、Echo、Gin、Iris、Revel(高生产率,全栈Go语言的Web框架)等 。
关于go语言rpc框架哪些和go grpc框架的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 换了显卡驱动怎么清理,更换显卡驱动
- 舞蹈动作传递游戏,舞蹈动作传递游戏教案
- php把数据添加到数组 php把数据添加到数组内
- python中laplace,PYTHON合法标识符
- mysql怎么编写服务器 mysql 服务器配置
- asp.net后台获取div的简单介绍
- 微博爬虫python代码,github 微博爬虫
- 包含视频号什么时候开通流量主的词条
- java五子棋核心代码 java五子棋