• Linux获取本机公网IP,Java调整双节点主从服务的RPC调用逻辑


    简单记录一次双节点的之间的服务调用叭 ~

    现有:

      服务A的双节点A1、A2

      服务B的双节点B1、B2

    服务A 和服务B 通过 Netty 实现 RPC 通信,可能会导致比较玄学的问题。如图:

    要做到 A1 订阅 B1 的服务,A2 订阅 B2 的服务。如图:

     服务A采用的是GitLab-Ci 结合 Docker实现的自动化部署,部署成功A1后通过工具复制到另一台服务器做A2

    不想调整部署流程,则考虑通过服务器的IP来判断主从服务的调用

    1、Java服务的容器内启动命令,获取本机公网IP,并将变量传入 java 的启动命令

    curl icanhazip.com #获取本机公网IP
    #!/bin/bash
    # author: Linnuo
    # date: 2021-12-16
    # Filename: userStart.sh
    # Description: 启动跟单前台
    HOST_IP=$(curl icanhazip.com)
    echo $HOST_IP
    
    if [ $HOST_IP = "0.0.0.1" ] ; then
            SERVER="master"
    elif  [ $HOST_IP = "0.0.0.2" ] ; then
            SERVER="slave"
    else
            SERVER="other"
    fi
    
    nohup java -Ddruid.mysql.usePingMethod=false -Djava.security.egd=file:/dev/./urandom -jar -Dspring.profiles.active=dev /usr/local/app/user.jar $SERVER --server.port=9092 >/usr/local/app/logs/user.out

    2、Java项目的启动类Application加入变量获取

    @Override
        public void run(String... args) throws Exception {
            String type = args[0];
            NettyClient client;
            if ("master".equalsIgnoreCase(type)){
                // 主服务
                client = new NettyClient(1);
            } else {
                // 从服务
                client = new NettyClient(0);
            }
            client.run();
    
            FollowTaskThread taskThread = new FollowTaskThread();
            taskThread.start();
            AccountTrigger trigger = new AccountTrigger();
            trigger.run();
    //        注册一个服务器关闭钩子
            Runtime.getRuntime().addShutdownHook(new Thread(client::destroy));
            final TaskServer server = new TaskServer();
            server.start();
            server.blockUntilShutdown();
        }

    项目启动后即可根据本机的公网IP去订阅对应的服务

    OK,去试试吧~

      

  • 相关阅读:
    vue2.0 动画
    I. 对缓存进行处理
    G. 【案例】Ajax实现无刷新分页效果
    H. Ajax对XML信息的接收与处理
    F. 异步同步请求
    D. 接收服务器端返回的信息
    E. 请求GET和POST的不同
    C. 发起对服务器的请求
    B. 创建Ajax对象
    A. AJAX介绍
  • 原文地址:https://www.cnblogs.com/linnuo/p/16179169.html
Copyright © 2020-2023  润新知