Linux获取本机公网IP,调整双节点主从服务的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 的启动命令
#!/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.port=9092 $SERVER >/usr/local/app/logs/user.out
2、Java项目的启动类Application加入变量获取
@Override
public void run(String... args) throws Exception {
String type = Arrays.toString(args);
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,去试试吧~
Linux获取本机公网IP,调整双节点主从服务的RPC调用逻辑的更多相关文章
- C#获取本机公网IP
/// <summary> /// 获取本机公网IP /// </summary> /// <returns></returns> public sta ...
- python3脚本获取本机公网ip
python脚本获取本机公网ip 1.获取公网IP地址方式,访问:http://txt.go.sohu.com/ip/soip 2.代码实现 import requests import re r ...
- python脚本获取本机公网ip
1.获取公网IP地址方式,访问:http://txt.go.sohu.com/ip/soip 2.python脚本实现: #!/usr/bin/python # -*- coding:utf8 -*- ...
- .net获取本机公网IP代码
类的代码如下: using System; using System.Net; using System.Text.RegularExpressions; namespace Keleyi.Com { ...
- python 3 获取本机公网ip的几种方法
参考博客:https://blog.csdn.net/conquerwave/article/details/77666226 from urllib.request import urlopen f ...
- C语言检查本机公网IP并发送邮件
这是一个用来获取本机公网IP地址,并检查是否是配置里保存的IP地址,假设不是,就向指定的邮箱发送一个邮件,报告这个IP地址的一段小代码.放到开机启动中,电脑不设password的时候万一丢了,还能有个 ...
- [记]WIndow/Linux 获取本机(全部)IPv4、IPv6、MAC地址方法 (C/C++)
Linux 获取本机IP.MAC地址用法大全 //#include <sys/types.h> #include <ifaddrs.h> #include <sys/io ...
- 【Win 10 应用开发】获取本机的IP地址
按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...
- 获取本机的IP地址(局域网)与主机名称
编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...
随机推荐
- K8S原来如此简单(八)ServiceAccount+RBAC
ServiceAccount ServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问API Server时用的就是ServiceAccount账户. Service ...
- JavaScript day04 函数
函数 函数讲解 函数是什么? 函数其实就抽取写好的js代码 作为一个通用的代码块 (封装) 作用: 减少代码冗余 (过多) 方便调用 (提供效率 提高代码的可读性) 便于维护 (二次修改) js有哪些 ...
- synchronized已经不在臃肿了,放下对他的成见之初识轻量级锁
前言 物竞天择,适者生存.JDK也在不断的优化中.关于JDK中synchronized锁内部也是不断的优化,前面我们分析了偏向锁用来解决初期问题,随着争抢的不断堆积轻量级锁营运而生. 关注我,一个不断 ...
- HTTPS-各种加密方式
推荐阅读:https://www.cnblogs.com/zwtblog/tag/计算机网络/ 目录 HTTPS 对称加密(AES) 非对称加密(RSA) 工作过程 分析 优缺点 常用算法 混合加密 ...
- Mybatis 的一级、二级缓存?
1)一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 C ...
- Spring的@Enable*注解的工作原理
转自:https://blog.csdn.net/chengqiuming/article/details/81586948 一 列举几个@Enable*注解的功能 @EnableAspectJAut ...
- 修改openstack Centos镜像的默认用户的密码
Ubuntu官方提供的OpenStack镜像是用Key来登录的,太麻烦,可以改成用密码来登录. 修改image的工具叫:guestfish. yum install libguestfs-tools ...
- vmware 磁盘清理---还原虚拟机硬盘大小
linux host: 1.使用dd命令将客户机未使用的磁盘空间用0填满 cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill ...
- 学习heartbeat-02安装及配置
2.部署Heartbeat高可用需求 2.1 操作系统 CentOS-6.8-x86_64 2.2 Heartbeat服务主机资源准备 主服务器A: 主机名:heartbeat-1-130 eth0网 ...
- 记一次 Nuxt 3 在 Windows 下的打包问题
0. 背景 之前用 Nuxt 3 写了公司的官网,包括了样式.字体图标.图片.视频等,其中样式和字体图标放在了 assets/styles 和 assets/fonts 目录下,而图片和视频则放在了 ...