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

结构模式;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的更多相关文章

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

    自己动手实现rpc服务调用框架 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者).battercake- ...

  2. 自己动手实现RPC服务调用框架

    转自:http://www.cnblogs.com/rjzheng/p/8971629.html#3977269 担心后面忘了,先转了,后面借鉴实现一下RPC -------------------- ...

  3. java使用netty模拟实现一个类dubbo的分布式服务调用框架

    本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...

  4. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

  5. WebService服务调用方法介绍

    1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 ...

  6. ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架

    使用 RMI + ZooKeeper 实现远程调用框架,包括ZooKeeper伪集群安装和代码实现两部分.  一.ZooKeeper伪集群安装: 1>获取ZooKeeper安装包 下载地址:ht ...

  7. Windows服务调用Quartz.net 实现消息调度

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  8. RPC调用框架比较分析

    什么是RPC: RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC ...

  9. alibaba远程调用框架dubbo原理

    alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...

随机推荐

  1. 【EMV L2】Cardholder Verification Rule(CVR) Format

    Cardholder Verification Rule(CVR)由两个字节组成: 高字节为Cardholder Verification Method (CVM) Codes,表示执行Cardhol ...

  2. jquery 禁止回车事件响应

    $(this).keydown( function(e) { var key = window.event?e.keyCode:e.which; if(key.toString() == " ...

  3. Flask开发遇到的问题:BuildError: Could not build url for endpoint 'main.followers' with values ['username']. Did you mean 'main.user' instead?

    @(Flask Web Development 12th chapter) 描述 Flask开发中遇到BuildError: Could not build url for endpoint 'mai ...

  4. Linux 6.8 源码安装MySQL8.0

    搭建环境说明: 系统版本:Red Hat Enterprise Linux Server release 6.8 (Santiago) 内核版本:Linux 2.6.32-642.el6.x86_64 ...

  5. 继续写java和socket

    上回书说道,java中通过socket链接的两台计算机可以通过两端的两个Socket对象来读取和发送来自流的信息所以对于客户端和服务端只需要封装一个相同的收发信息的窗口就好 代码如下 package ...

  6. 使用Postfix与Dovecot部署邮件系统

  7. ubuntu升级显卡驱动

    2.驱动安装  参考:http://blog.csdn.net/Zafir_410/article/details/73188228 2.1 卸掉已安装的驱动 1 sudo apt-get purge ...

  8. Cobbler全自动批量安装部署Linux系统

    说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.2 ...

  9. mysql数据备份及恢复

    备份工具 mysqldump mysqldump是mysql和mariadb上最好的备份工具之一,免费开源. mysqldump 首先查询每个数据库和每个表的结构与数据,然后把查出的所有内容导出到文本 ...

  10. 解决腾讯云封锁SS(shadow--socks)访问google问题

    腾讯云windows主机,若使用SS(shadow--socks)采用加密算法aes-256-cfb,访问google的时候会被dropped connection. 解决办法更改ss server加 ...