zoukankan      html  css  js  c++  java
  • 分享一个简单易用的RPC开源项目—Tatala

    http://zijan.iteye.com/blog/2041894

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

    开源地址: 
    https://github.com/zijan/Tatala 

    下面是简单介绍。 

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

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

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

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

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

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

    TestManager.java 

    Java代码  收藏代码
    1. public interface TestManager {  
    2.     public String sayHello(int Id, String name);  
    3. }  


    TestManagerImpl.java 

    Java代码  收藏代码
    1. public class TestManagerImpl implements TestManager{  
    2.     public String sayHello(int Id, String name) {  
    3.         return "["+Id+"]"+"Hello "+name+" !";  
    4.     }  
    5. }  


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

    Java代码  收藏代码
    1. public class TestServer {  
    2.     public static void main(String args[]) {  
    3.         int listenPort = 10001;  
    4.         int poolSize = 10;  
    5.         AioSocketServer server = new AioSocketServer(listenPort, poolSize);  
    6.         server.start();  
    7.     }  
    8. }  


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

    Java代码  收藏代码
    1. public class EasyClient {  
    2.     private static TransferObjectFactory transferObjectFactory;  
    3.     private static TestManager manager;  
    4.       
    5.     public static void main(String[] args) {  
    6.         transferObjectFactory = new TransferObjectFactory("test1", true);  
    7.         transferObjectFactory.setImplClass("TestManagerImpl");  
    8.         manager = (TestManager)ClientProxyFactory.create(TestManager.class, transferObjectFactory);  
    9.           
    10.         int Id = 18;  
    11.         String name = "JimT";  
    12.         String result = manager.sayHello(Id, name);  
    13.         System.out.println("result: "+result);  
    14.     }  
    15. }  


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

    Xml代码  收藏代码
    1. <connections>  
    2.   <connection>  
    3.     <hostIp>127.0.0.1</hostIp>  
    4.     <hostPort>10001</hostPort>  
    5.     <timeout>5000</timeout>  
    6.     <retryTime>3</retryTime>  
    7.     <name>test1</name>  
    8.   </connection>  
    9. </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

  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/123ing/p/4138663.html
Copyright © 2011-2022 走看看