zoukankan      html  css  js  c++  java
  • 服务调用框架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;

    6.所有通讯过程都认为是数据交换而不是业务处理

  • 相关阅读:
    poj-2376 Cleaning Shifts (排序+贪心)
    AOJ 0525
    POJ -3050 Hopscotch
    POJ-2718 Smallest Difference
    AOJ 0121: Seven Puzzle (BFS DP STL 逆向推理)(转载)
    POJ-3187 Backward Digit Sums (暴力枚举)
    POJ-3669 Meteor Shower(bfs)
    分布式消息系统Kafka初步
    nginx源码学习----内存池
    def文件格式
  • 原文地址:https://www.cnblogs.com/jinyu20180311/p/10312393.html
Copyright © 2011-2022 走看看