GithubHelp home page GithubHelp logo

bellmit / aregister Goto Github PK

View Code? Open in Web Editor NEW

This project forked from arksea/aregister

0.0 0.0 0.0 54.82 MB

Akka Actor Register for distributed service found

Java 4.08% TypeScript 0.54% JavaScript 93.58% HTML 0.11% CSS 0.01% Batchfile 0.65% Shell 1.04%

aregister's Introduction

简介

基于Akka实现的注册服务,为基于Akka编写的服务提供自动发现能力,支持对集群中服务节点的均衡访问,提供管理页面查询服务状态

服务状态查询页面

image

服务状态上报InfluxDB

image

在application.conf中配置InfluxDB即可开启

register {
    store {
        type = "redis"
        redis-host = "127.0.0.1"
        redis-port = 6379
        redis-password = "123456"
    }
    stateLogUrl = "http://influxdb:8086/write?db=dbname"
}

客户端Demo

//订阅服务
Client client = register.subscribe("net.arksea.dsf.DemoService-1.0");
...
//请求服务
DemoRequest1 msg = new DemoRequest1("hello",123);
Future<DemoResponse> future = client.request(msg, 5000).mapTo(classTag(DemoResponse1.class));

完整代码请看子项目demo-client

服务端Demo

//定义服务Actor,处理ServiceRequest携带的客户端消息,用ServiceResponse封装返回给客户端的消息

public class DemoActor extends AbstractActor {

    @Override
    public Receive createReceive() {
        return ReceiveBuilder.create()
            .match(ServiceRequest.class, this::onRequest)
            .build();
    }

    private void onRequest(ServiceRequest msg) {
        if (msg.message instanceof DemoRequest1) {
            DemoRequest1 request = (DemoRequest1) msg.message;
            log.info("onRequest: {}, online: {}", request.msg, online);
            DemoResponse1 resule = new DemoResponse1(0, "received: " + request.msg);
            ServiceResponse response = new ServiceResponse(resule, msg);
            sender().tell(response, self());
        }
    }
}

...

  //注册服务
  String serviceName = "net.arksea.dsf.DemoService-1.0";
  int port = 8765;
  ActorRef service = system.actorOf(DemoActor.props(port), "DemoService");
  register.register(serviceName, port, service, system);

完整代码请看子项目demo-service

序列图

注册服务

image

订阅服务

image

aregister's People

Contributors

arksea avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.