当前位置:  软件>java软件

RPC中间件 Tatala

    来源:    发布时间:2015-01-30

    本文导语:  这个项目最早(2008年)是用于一个网络游戏的Cache Server,以及一个电子商务的Web Session服务。后来不断增加新的功能,除了Java还支持C#,到现在已经可以用它来开发网络游戏的服务器。等过些日子我还会开源网络游戏的服务器源...

这个项目最早(2008年)是用于一个网络游戏的Cache Server,以及一个电子商务的Web Session服务。后来不断增加新的功能,除了Java还支持C#,到现在已经可以用它来开发网络游戏的服务器。等过些日子我还会开源网络游戏的服务器源码。 

关于性能,当时后台相应请求的效率是每秒10W次,现在我在自己的笔记本上测,只有一个客户端与服务器都在一个物理机上(CPU: i7-3610QM; RAM: 8G; OS: Win7-64),每秒相应12000个请求。 

tatala-client-csharp已经上传,同样在笔记本上测试,一个c#客户端一个Java服务端都在一台机器上,每秒响应22000个请求。c#客户端除了性能测试的例子还有一个演示Server推送的聊天室例子。

Tatala最大的特点是简单,性能是第二考虑能够满足大部分应用就行。因为性能可以通过增加机器得到提升,而代码简单意味着雇更少的人更快的开发。老板省钱,程序员轻松才是最重要的。 

下面是简单介绍。 

概述 
Tatala是一个简单易用的RPC中间件,并且跨语言跨平台。它将调用方法转变成字节数组(包括被调用类名,目标方法名,参数序列和返回值),在socket基础上实现客户端和服务器之间的互相通信。 

目前,Tatala支持Java的客户端与服务器端,和C#的客户端。 

特性 
* 简单易用可以快速开发和建立网络组件 
* 跨语言跨平台 
* 高性能和分布式 
* 传输协议为短小精悍的二进制 
* 支持长短两种socket 连接 
* 客户端与服务器端多线程处理 
* 支持异步请求 
* 对于大数据支持压缩传输 

* 支持服务器端主动推送消息

* 能够用于跨语言的远程方法调用RPC,高性能的缓存服务器,分布式的消息服务,多人在线游戏服务器,等等 

快速开始 
下载tatala.jar 包含在你项目的classpath中。 

简单是Tatala第一考虑因素,所以用它建立RPC的方式,让开发者感觉就像调用本地普通方法一样简单。不用考虑网络,线程这些东西。 

现在举一个例子,假如我们有个服务器端的服务TestManager接口 和 TestManagerImpl实现类。 

TestManager.java 

Java代码  

  • public interface TestManager {  

  •     public String sayHello(int Id, String name);  

  • }  


  • TestManagerImpl.java 

    Java代码  

  • public class TestManagerImpl implements TestManager{  

  •     public String sayHello(int Id, String name) {  

  •         return "["+Id+"]"+"Hello "+name+" !";  

  •     }  

  • }  


  • 我们还需要在服务端建立一个socket服务类来部署我们的业务逻辑,在这个例子中socket服务监听端口是10001。 
    TestServer.java 

    Java代码  

  • public class TestServer {  

  •     public static void main(String args[]) {  

  •         int listenPort = 10001;  

  •         int poolSize = 10;  

  •         AioSocketServer server = new AioSocketServer(listenPort, poolSize);  

  •         server.start();  

  •     }  

  • }  


  • 然后客户端的代码类似这样: 
    EasyClient.java 

    Java代码  

  • public class EasyClient {  

  •     private static TransferObjectFactory transferObjectFactory;  

  •     private static TestManager manager;  

  •       

  •     public static void main(String[] args) {  

  •         transferObjectFactory = new TransferObjectFactory("test1", true);  

  •         transferObjectFactory.setImplClass("TestManagerImpl");  

  •         manager = (TestManager)ClientProxyFactory.create(TestManager.class, transferObjectFactory);  

  •           

  •         int Id = 18;  

  •         String name = "JimT";  

  •         String result = manager.sayHello(Id, name);  

  •         System.out.println("result: "+result);  

  •     }  

  • }  


  • 当然我们需要把接口类(TestManager.class) 加入到客户端的classpath里。客户端还需要一个配置文件controller.xml列出要被客户端调用的服务器端程序的IP, port和连接名。 (注意连接名“test1”) 
    controller.xml 

    Xml代码  

  •   

  •     

  •     127.0.0.1hostIp>  

  •     10001hostPort>  

  •     5000timeout>  

  •     3retryTime>  

  •     test1name>  

  •   connection>  

  • connections>  


  • 这就是所有代码和配置对于建立一个Tatala RPC。 

    更多例子请看教程。 
    Tatala-中文教程 

    传输协议 
    在客户端把调用的方法信息设置到transfer object里, Tatala把transfer object转换成字节数组并且发送给服务器。在服务器端把接收到的字节数组再还原成包含调用信息的transfer object。包括被调用类名,目标方法名,参数信息和返回类型等。Tatala 执行器获得调用信息执行目标方法。 

    支持类型 
    Tatala支持的参数和返回类型: 
    bool,byte,short,chat,int,long,float,double,Date,String, 
    byte[],int[],long[],float[],double[],String[],Serializable,WrapperClass 

    其它描述 
    需要JDK1.7,因为使用了Java AIO。 

    第三方类库包括XSteam,Log4j。 

    License 
    Apache License Version 2.0


        
     
     

    您可能感兴趣的文章:

     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.jws.soap枚举soapbinding.style的类成员方法: rpc定义及介绍
  • JSON-RPC框架 JSON-RPC-Java
  • 高性能RPC框架 nfs-rpc
  • 轻量级rpc框架 bbossgroups RPC
  • 连接NFS服务器出错:RPC:Port mapper failure -RPC:Unable to receive
  • JSON-RPC的框架 json-rpc-for-java
  • linux支持ti-rpc么?ti-rpc在linux中是不是只使用udp协议,不能使用tcp协议
  • 超轻量级RPC框架 JS2Java RPC iis7站长之家
  • RPC和XDR到底什么关系???
  • 基于FastCGI通讯协议的RPC框架 FastRPC
  • PHP JSON RPC 框架 workerman-json-rpc
  • 关于RPC远程过程调用的问题
  • RPC 超时问题
  • jprotobuf-rpc-http
  • Java RPC工具 eurpc
  • Android JSON RPC
  • JSON-RPC远程调用 jsonrpc4j
  • kXML-RPC
  • 流式远程方法调用 流式RPC
  • Java远程方法调用框架 protobuf-rpc-pro
  • PHP的XML-RPC服务器和客户端库 Ripcord


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3