服务调用框架DataStrom

根据以前的命名服务,从新构建了下服务框架;

结构模式;c-center-s;

1.服务端:

服务端启动,讲自己的IP,端口注册到注册中心节点(master),然后注册自己的处理类(需要继承对应接口);

同时需要设置服务类型(是否是主从服务,如果是主从服务还需要设置自己是否是master);

如果不是主从服务则中心采用hash负载均衡进行服务调度;

同时有心跳给注册中心;

2.注册中心

启动注册中心,注册中心是主从方式存在,启动时选举自己为master;然后接收其余注册中心回应,2秒没有收到则认为自己是master进行发布,收到master的回复则更新信息;

master节点实时有心跳;

主要工作:

1.判断服务状态是否可以用,调度服务;

主从服务时判断master服务,进行数据处理;

多服务认为是需要选择调度,则使用均衡方式;

2.负载均衡服务,调度服务;

3.判断注册中心master节点,随时准备选举新master

3.客户端

客户端直接向注册中心请求:1.请求服务地址,直接与服务通讯 2.请求数据传输,直接由中心传递数据 ;同时需要设置是否需要回执数据;

4.通讯

整个框架考虑到数据实时传输,大数据量处理,直接采用udp通讯;提供了高层封装;

封装的通讯层使用了数据分包,按照udp适合的传输包大小设置,你也可以自己调用接口设置分包大小;每包分配了一个ID,同时一次传输认为是一个session,分配seesion的id;

接收端按照数据接收,同时有包丢失时会再次向发送端请求再次发送;

接收端设计了接收发送;

发送端进行了数据缓存,内存中缓存一定时间,接收到接收端完成的ack就清除,否则保持1分钟;直到内存耗尽;

如果是注册中心,数据内存缓存到期还会缓存到本地数据库中(持久化),在本地保持最近10分钟数据;都是timer清除;

采用udp同样也是基于框架功能,不需要连接,可以在使用时可以直接反向发送数据;也可以不发送;

整个通讯已经测完成;

5.使用包

本框架使用了goolge工具包guava-22.0,界面库JTattoo-1.6.11,公共序列化包fastjson-1.2.9;持久化数据库BerkeleyDB

时间: 2024-10-12 15:02:03

服务调用框架DataStrom的相关文章

【原创】自己动手实现RPC服务调用框架

自己动手实现rpc服务调用框架 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者).battercake-consumer(服务调用者). 服务提供者 本部分的工程为battercake-provider,项目结构图如下图所示 先上rpc框架调用部分的代码,RpcProvider,该部分代码可以总结为两步 将需要发布的服务存储在一个内存变量serviceList中 启动socket,server.acc

Pegasus学习三:服务通信框架介绍

Pegasus来源于点评的开源框架pigeon:https://github.com/dianping/pigeon 什么是Pegasus Pegasus是一个高性能的分布式服务框架,致力于提供RPC远程服务调用方案,并可作为精简版SOA服务治理的方案.实现基本的RPC,路由,负载均衡,容错,统计报表,服务注册订阅功能. 其核心模块包括以下几类: 远程通信:基于NIO的Socket通信,"底层异步上层同步" + "请求|响应" 模式的信息交互方式,可支持多种序列化协

Freemarker商品详情页静态化服务调用处理

--------------------------------------------------------------------------------------------- [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/53151462 作者:朱培      ID:sdksdk0 ----------------------------------------------------

alibaba远程调用框架dubbo原理

alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题. 基本原理如图: 在我们的系统中,经常会有一些跨系统的调用,如在A系统中要调用B系统的一个服务,我们可能会使用RMI直接来进行,B系统发布一个RMI接口服务,然后A 系统就来通过RM

分布式服务治理框架Dubbo

前言 Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务治理框架,是一个非常全面的SOA基础框架,当当网在Dubbo基础上新增了一些功能,并将其命名为Dubbox(Dubbo eXtensions). 为什么需要Dubbo? 以前所有的业务处理,都在一个系统当中: 接着,这个大系统按照业务领域划分为N个业务系统: 各个业务系统之间不可避免需要交互,采用什么呢?HTTP的方式?WebService?... 我们将面临很多URL的管理,服务之间的调用链,依赖关系,服务的负载均衡.监控等等

服务调用效率比较

在一些较大规模的软件项目上,如果对用户体验要求较高,那就有必要对服务调用效率作个比较. 关于服务调用,无外乎有两种:本地调用(项目内)和远程调用(项目间). 本地调用,在其他因素相同的情况下,由于不需要对外通信,其效率肯定最高.但问题是,随着业务的发展,当一台服务器无法满足时,我们必须远程调用. 远程通讯可能有很多,现比较一下,local,rabbitmq RPC ,WebAPI的效率. 环境是:本地电脑,满足硬件环境一致的要求: 分别启动 rabbitmq,WebAPI,使用同一算法,以保证所

WebService服务调用方法介绍

1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 预期读者 数通畅联内部员工 广大计算机爱好者 3 名词解释 Web Service也叫XML Web Service: WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是通过SOAP在Web上提供的软件服务,使用WSDL

RPC调用框架比较分析--转载

原文地址:http://itindex.net/detail/52530-rpc-%E6%A1%86%E6%9E%B6-%E5%88%86%E6%9E%90 什么是RPC: RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源. 比较关键的一些方面包括,通讯协议,序列化,资源(接口)描述,服务框架,性能,语言支持

Hessian轻量级二进制远程调用框架

Hessian轻量级二进制远程调用框架 Hessian是一个轻量级的二进制远程调用框架,官方文档地址,它主要包括Hessian远程调用协议.Hessian序列化协议以及客户端服务端代理等几部分,关于Hessian协议可以看下另外一篇文章Hessian远程调用及序列化协议.Hessian远程调用框架构建在Http协议之上,下面是示意图. 下面这个图是一次远程调用的过程 其中步骤3.4.5.6是核心过程,还要细化下, 步骤3:将远程方法调用转换为hessian调用,具体为,客户端首先要先和服务器端建