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

结构模式;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. 初用jdbc来运行事务

    dao层 public Connection getConnection() throws Exception { Class.forName(driver); if (con == null || ...

  2. Unity中对系统类进行扩展的方法

    Unity扩展系统类,整合简化代码 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  3. Codeforces1100F. Ivan and Burgers(离线+线性基)

    题目链接:传送门 思路: 按查询的右端点离线. 然后从左到右维护线性基. 每个基底更新为最右边的方案,可以让尽量多的查询享受到这个基底. 用ci维护后更新右端点为i的答案. 代码(析构1000ms,别 ...

  4. 兄弟连学python---网络简介

    网络简介 1.什么是网络 网络是辅助双方能够连接在一起的工具 使用网络的目的 为了联通多方然后进行通讯,能够让软件在不同的电脑上运行,相互传输数据 网络的发展 网络协议 什么是协议 约定俗成的,没有理 ...

  5. bootstrap4.0

    1.CDN库引用: <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4 ...

  6. P1181 数列分段Section I

    题目描述(跳转) 对于给定的一个长度为NN的正整数数列A_iAi​,现要将其分成连续的若干段,并且每段和不超过MM(可以等于MM),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 第1 ...

  7. 将连接数据库的JDBC提成BaseDao

    package com.shangke; import java.io.FileReader;import java.io.IOException;import java.io.InputStream ...

  8. 学习笔记(三)--Lucene分词器详解

    Lucene-分词器API org.apache.lucene.analysi.Analyzer 分析器,分词器组件的核心API,它的职责:构建真正对文本进行分词处理的TokenStream(分词处理 ...

  9. vue---条件与循环语句

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...

  10. 虚拟机安装精简版centos7过程

    虚拟机配置工作如下所示 1.创建虚拟机  使用键盘组合键CTRL+N2.选择自定义(高级) 如图所示: 3.默认如何所示: 4.选择 稍后安装操作系统 如图所示: 5.选择对应的操作系统 如何所示 6 ...