RPC /SOA/分布式
slimina
这个作者很懒,什么都没留下…
展开
-
基于反射机制的服务代理调用
实现原理:通过传递服务bean的名称、执行的方法及参数,通过反射机制进行调用返回。优点:只需对外提供一个接口服务即可,只要容器中操作服务bean,通过接口即可调用,增加服务bean无需增加对外接口。原创 2014-01-10 14:50:02 · 2040 阅读 · 0 评论 -
Apache Avro 入门
Avro是一个基于二进制数据传输高性能的中间件。 Avro支持本地和远程RPC(Ref)调用,RPC远程调用又分为Http和Netty2种,在这里主要介绍基于Http协议的Avro远程调用,首先需要定义一个JSON文件作为双方通信的传输协议规范,便于解析从对方发送过来的数据。原创 2015-03-03 20:11:53 · 12344 阅读 · 2 评论 -
Avro RPC 对比测试
J2EE平台常采用多层分布式的架构体系。分布式服务节点之间需要通讯和交互(业务节点和资源节点之间),服务端和客户端需要交互(终端客户端需要调用服务端的远程服务,客户端有C实现的,也有Java等其他语言实现的)。因此基础平台需要提供一个稳定、高效的、可伸缩的RPC服务性组件。RPC服务组件的要求:1. 稳定,高性能;作为一个基础性的骨架组件,高可用性和高性能是必备的;传输层希望是面向连接转载 2015-03-03 20:33:35 · 2290 阅读 · 0 评论 -
RPC 序列化工具Protobuf介绍
Google Protocol Buffers(Protobuf)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。buffers和mxl一样在序列化数据结构时很灵活、高效和智能,但是它的优势在于定义文件更小,读取速度更快,使用更加简单。目前提供了 C++、Java、Python 三种语言的 API。原创 2015-03-04 20:18:39 · 3684 阅读 · 1 评论 -
RPC框架protobuf-rpc-pro 实例
protobuf-rpc-pro 是一个Java类库,提供了基于 Google 的 Protocol Buffers 协议的远程方法调用的框架。基于 Netty 底层的 NIO 技术。支持 TCP 重用/ keep-alive、SSL加密、RPC 调用取消操作、嵌入式日志等功能。原创 2015-03-05 21:40:08 · 10351 阅读 · 3 评论 -
RPC框架protobuf-rpc-pro 阻塞和非阻塞实例
上一节我们生成了Message.java,其中包含RpcService和ReplyService类,其中BlockingInterface为阻塞接口,Interface为非阻塞接口。原创 2015-03-05 22:02:30 · 4750 阅读 · 1 评论 -
bbossgroups、missian、Hprose等RPC框架介绍
bbossgroups RPC 是基于bbossaop的轻量级rpc框架。Missian是一个构建于Mina和Hessian基础上的异步RPC框架。Hprose (High Performance Remote Object Service Engine) 是一个MIT开源许可的新型轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件。原创 2015-03-05 23:03:02 · 4208 阅读 · 0 评论 -
Spring RPC 介绍(Burlap)
Spring为各种远程访问技术的集成提供了工具类。Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易。原创 2015-03-03 19:50:46 · 5494 阅读 · 0 评论 -
Thrift 的序列化机制
1.首先我们先来定义下thrift的简单结构。namespace java mmxf.thrift; struct Pair { 1: required string key 2: required string value}required修饰符你肯定能猜测到它的意义, 但是你是否有没有这样的疑惑, "1", "2" 这些数字标识符究竟有何含义? 它在序列化机制中究竟扮演什转载 2015-03-07 12:44:05 · 3212 阅读 · 0 评论 -
Thrift 介绍及java实例
Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。原创 2015-03-01 14:41:15 · 10926 阅读 · 2 评论 -
Thrift 多线程半同步半异步的服务模型-TThreadedSelectorServer
TThreadedSelectorServer是最成熟,也是被业界所推崇的RPC服务模型。TThreadedSelectorServer是对以上NonblockingServer的扩充, 其分离了Accept和Read/Write的Selector线程, 同时引入Worker工作线程池. 它也是种Half-sync/Half-async的服务模型。原创 2015-03-07 12:23:39 · 10269 阅读 · 0 评论 -
轻量级分布式 RPC 框架
目录[-]第一步:编写服务接口第二步:编写服务接口的实现类第三步:配置服务端第四步:启动服务器并发布服务第五步:实现服务注册第六步:实现 RPC 服务器第七步:配置客户端第八步:实现服务发现第九步:实现 RPC 代理第十步:发送 RPC 请求总结附录:Maven 依赖RPC,即 Remote Procedure Call(远程转载 2015-03-09 20:46:58 · 3373 阅读 · 0 评论 -
分布式模式之Broker模式
问题来源:创建一个游戏系统,其将运行在互联网的环境中。客户端通过WWW服务或特定的客户端软件连接到游戏服务器,随着流量的增加,系统不断的膨胀,最终后台数据、业务逻辑被分布式的部署。然而相比中心化的系统,复杂度被无可避免的增大了,该如何降低各个组件之间的耦合度。挑战:需要保证可伸缩性、可维护性、可更新性,需要将服务划分为各个相对独立的组件,组件被分布式的部署,它们之间通过进程间通转载 2015-03-09 20:47:53 · 1404 阅读 · 0 评论 -
基于HTTP/2和protobuf的RPC框架GRPC
gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准、ProtoBuf(Protocol Buffers)序列化协议而设计开发,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性,这些特性使得其在移动设备上表现更好。原创 2015-03-14 07:54:47 · 8484 阅读 · 0 评论 -
系统技术架构图
系统技术架构图:nginx+keepalive负载均衡 ,web服务(业务web服务、单点登录)集群,业务服务(订单、基础资料等等)集群,共享缓存集群,MQ集群,数据库集群(关系数据库、mongodb)原创 2015-07-23 17:36:58 · 17020 阅读 · 0 评论 -
Apache Avro RPC 实例
Avro的模式主要由JSON对象来表示,Avro支持8种基本类型(Primitive Type)和6种复杂类型(Complex Type:records、enums、arrays、maps、unions 和fixed),基本类型可以由JSON字符串来表示。原创 2015-03-03 21:04:47 · 7880 阅读 · 0 评论 -
Spring 注解发布RMI/HTTPInvoker/Hessian/Burlap服务
使用自定义的spring注解标签发布RMI/HTTPInvoker/Hessian/Burlap远程服务。原创 2015-03-03 19:58:03 · 4538 阅读 · 0 评论 -
RMI、Hessian、Burlap、Httpinvoker、WebService的比较
一、综述 本文比较了RMI、Hessian、Burlap、Httpinvoker、WebService 5这种通讯协议的在不同的数据结构和不同数据量时的传输性能。 1.RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。 2.Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口转载 2015-03-03 19:52:25 · 1137 阅读 · 0 评论 -
Hessian源码分析和Hack --让Hessian携带远程调用端的信息
详见:http://www.iteye.com/topic/108611转载 2014-02-26 16:03:53 · 790 阅读 · 0 评论 -
Hessian 与 Session
1. ServiceContextServiceContext 代表为 Hessian 客户端提供服务的上下文环境,用来处理与客户端请求有关的信息。在最简单和常用的应用中,在服务器端可以通过 ServiceContext 来获取代表客户端的 ServletRequest (在 HTTP 环境中为 HttpServletRequest),因此就可以知道客户端的相关信息,如客户端的 IP 地址转载 2014-02-26 16:02:11 · 1688 阅读 · 0 评论 -
使用 RMI + ZooKeeper 实现远程调用框架
目录[-]1 发布 RMI 服务1.1 定义一个 RMI 接口1.2 编写 RMI 接口的实现类1.3 通过 JNDI 发布 RMI 服务2 调用 RMI 服务3 RMI 服务的局限性4 使用 ZooKeeper 提供高可用的 RMI 服务4.1 服务提供者4.2 服务消费者4.3 发布服务4.4 调用服务4.5 使用方法5 总结转载 2015-01-04 14:34:47 · 1938 阅读 · 0 评论 -
Java几种远程服务调用协议的比较
一、综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可转载 2014-01-03 10:20:07 · 1017 阅读 · 0 评论 -
几种数据同步共享方法
一、数据库级处理1.高级复制Oracle高级复制即可支持基于整个表的复制也可支持基于部分表的复制两种复制方案。这两种复制方案主要是通过Oracle的两种复制机制来完成的,即多主复制和可更新快照复制,同时还可以将这两种复制机制结合起来以满足不断变化的业务需求。具体配置参考:http://blog.csdn.net/zhangout/article/details/62565682原创 2014-02-26 09:33:48 · 5731 阅读 · 0 评论 -
Thrift 多线程阻塞式IO服务模型-TThreadPoolServer
使用TServerSocket创建阻塞式IO,TThreadPoolServer提供线程池服务模型。原创 2015-03-01 14:50:43 · 10226 阅读 · 1 评论 -
Spring HTTP Invoker使用
Spring HTTP Invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用,也就是说,可以通过防火墙,并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象,要注意的一点是,服务端、客户端都是使用Spring框架。原创 2015-03-02 22:18:22 · 4874 阅读 · 1 评论 -
Thrift 非阻塞式IO服务模型-TNonblockingServer
使用非阻塞式IO,服务端和客户端需要指定 TFramedTransport 数据传输的方式。原创 2015-03-01 14:56:11 · 7523 阅读 · 0 评论 -
实现Thrift客户端连接池
提到池一般做过Java开发的肯定会想到ObjectPool,Apache Commons项目确实给我们的开发得来了很大的便利性,其中的pool项目正是我们实现thrift连接池的基础,当然也离不了spring。在工程中添加依赖jar包:<dependency> <groupId>org.apache.thrift</groupId> <arti...原创 2015-03-01 18:14:52 · 9452 阅读 · 7 评论 -
用thrift实现多语言相互调用
一、ubuntu下thrift的安装1.下载源代码http://thrift.apache.org/download/下载最新版本 thrift-0.8.0.tar.gz2.安装boost库sudo apt-get install libboost-dev libboost-dbg libboost-doc bcp libboost-*3.安装其转载 2015-03-02 22:16:20 · 2160 阅读 · 0 评论 -
Thrift 半同步半异步的服务模型-THsHaServer(异步调用客户端)
半同步半异步的服务端模型,需要指定为: TFramedTransport 数据传输的方式。使用TAsyncClientManager处理客户端异步调用。原创 2015-03-01 15:02:07 · 5438 阅读 · 4 评论 -
Spring集成Thrift - remoting支持
本文借鉴spring对hessian的支持,实现spring对Thrift的支持。服务端主要使用了spring的HttpRequestHandler接口和RemoteExporter接口。HttpRequestHandler接口用于暴露http服务,这样就可以接受http的请求,这个如果使用servlet也是可以的。RemoteExporter这块其实主要就是使用了它getServiceInterface和getProxyForService两个方法,这个和thrift服务端代码结合暴露内部的服务。客户端主原创 2015-03-02 21:43:00 · 8358 阅读 · 0 评论 -
Spring集成Thrift,实现服务端和客户端代理
基于反射实现Thrift的服务注册和客户端调用的代理端,并结合前几节的HelloWorld接口、实现类以及连接池。原创 2015-03-01 20:19:17 · 11295 阅读 · 2 评论 -
Spring HTTP invoker RPC
Spring HTTP invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用(意味着可以通过防火墙),并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象,这有点类似于webservice,但又不同于webservice,区别如下:webserviceHTTP invoker转载 2015-03-01 13:10:25 · 2919 阅读 · 0 评论 -
Spring集成Thrift - Servlet
Thrift除了可以通过TCP协议访问,还可以通过HTTP/HTTPS协议访问,在java中,thrift提供了一个servlet:org.apache.thrift.server.TServlet,我们只需继承这个TServlet就可以很方便的将TCP服务转换成HTTP/HTTPS服务,下面我们仍然以前面的helloworld接口与实现为例演示。原创 2015-03-01 23:02:31 · 8973 阅读 · 5 评论 -
Spring RMI,Hessian/Burlap,HttpInvoker的区别
1 Hessian/Burlap 方式 客户端通过Hessian/BurlapProxyFactoryBean生成的代理对象负责通过HTTP协议与远程服务通信。在服务端,HessianServiceExporter是一个Spring MVC的控制器,可以通过接收请求并将这些请求翻译成对POJO对象的调用将POJO输出为一个服务。需要添加两处配置(1)S转载 2015-03-03 19:50:57 · 1982 阅读 · 0 评论 -
基于zookeeper、连接池、Failover/LoadBalance等改造Thrift 服务化
对于Thrift服务化的改造,主要是客户端,可以从如下几个方面进行:1.服务端的服务注册,客户端自动发现,无需手工修改配置,这里我们使用zookeeper,但由于zookeeper本身提供的客户端使用较为复杂,因此采用curator-recipes工具类进行处理服务的注册与发现。2.客户端使用连接池对服务调用进行管理,提升性能,这里我们使用Apache Commons项目commons-pool,可以大大减少代码的复杂度。3.关于Failover/LoadBalance,由于zookeeper的wat原创 2015-03-08 10:01:40 · 19976 阅读 · 18 评论