服务调用框架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
服务调用框架DataStrom的更多相关文章
- 【原创】自己动手实现RPC服务调用框架
		
自己动手实现rpc服务调用框架 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者).battercake- ...
 - 自己动手实现RPC服务调用框架
		
转自:http://www.cnblogs.com/rjzheng/p/8971629.html#3977269 担心后面忘了,先转了,后面借鉴实现一下RPC -------------------- ...
 - java使用netty模拟实现一个类dubbo的分布式服务调用框架
		
本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...
 - Spring Cloud微服务系列文,服务调用框架Feign
		
之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON. 这种 ...
 - WebService服务调用方法介绍
		
1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 ...
 - ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架
		
使用 RMI + ZooKeeper 实现远程调用框架,包括ZooKeeper伪集群安装和代码实现两部分. 一.ZooKeeper伪集群安装: 1>获取ZooKeeper安装包 下载地址:ht ...
 - Windows服务调用Quartz.net 实现消息调度
		
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
 - RPC调用框架比较分析
		
什么是RPC: RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC ...
 - alibaba远程调用框架dubbo原理
		
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...
 
随机推荐
- 前端跨域(一):CORS
			
上周做了一个移动端表单提交的页面,其中涉及到了跨域问题,想来也是惭愧,因为之前一直都没有遇到过这个问题,因此都没有深入探索过,只是知道有哪几种方式,这次终于借这个机会可以把遗留的知识点补一补了. 1. ...
 - $(window).scroll()无法触发问题
			
在微信端开发中遇到一个这种问题:明明用的公共文件(代码如下图),其他页面每次都能触发这个滚动条$(window).scroll事件,以显示右下角“回到顶部”这个按钮图标 但是,问题来了,最该需要使用“ ...
 - 第七次实验:CC2530平台上多跳通信的TinyOS编程
			
module P2MM { uses interface Boot; uses interface Timer<TMilli> as Timer0; uses interface Spl ...
 - ConcurrentDictionary对象
			
ConcurrentDictionary<int, List<a>> dic = new ConcurrentDictionary<int, List<a>& ...
 - Custom Default Node Colors and Shapes in Houdini 16.5
			
A:before H16.5: 1.Create a file, named OPcustomize 2.Edit it like this: //Custom Default Shapes opde ...
 - XML基础学习
			
XML 信息传输工具 标签未被预定义 具有自我描述性 W3C的推荐标准 XML HTML的差异 XML:传输 存储数据 HTML:显示数据 树结构 <root> <child> ...
 - ANSYS稳态热分析
			
目录 题目 APDL操作 温度云图 题目 管子内径外径为r1=4.125mm,r2=4.635mm,中间物体的产热功率为Q=8.73e8W/m3,管外有温度t=127℃的冷水流过,冷却水与管子外表面的 ...
 - nginx添加ssl证书
			
ssl的证书是通过docker nginx letsencrypt 这篇随笔生成的,下面介绍如何在nginx中添加ssl 这个为全部配置, 需要替换你自己的域名,配置中强制https了 server ...
 - guava学习,集合专题
			
lists //JDKList<String> list = new ArrayList<String>();list.add("a");list.add( ...
 - 【转】Linux环境进程间通信(五)  共享内存(上)
			
转自:https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以 ...