双机热备
约 377 字大约 1 分钟
2025-02-12
默认情况下,微服务处于负载均衡的集群模式,但也可以切换至双机热备模式。
双机热备是指两个完全相同的微服务同时运行,但只有一个在工作。当工作中的微服务崩溃时,另一个将自动接替其工作。要实现这一点,只需设置 SingletonService = true。
Mirage 工程模式
如果是 Mirage 标准工程,如下设置:
var msp = new MicroServiceHost(services);
msp.SingletonService = true; //设置为双机热备模式
msp.AutoExitProcess = true; //掉线后自动退出进程
msp.ServiceProviderBuilded += Msp_ServiceProviderBuilded;
msp.Build(port, Global.GatewayAddresses)
.Run();
两个微服务,只有一个能够成功连接到网关并注册服务。只有成功注册服务,ServiceProviderBuilded 事件才会被触发。如果与网关的连接断开,该进程将自动退出。
private static void Msp_ServiceProviderBuilded(object sender, IServiceProvider e)
{
//当微服务进入工作状态,运行到这里
...写一些只有微服务进入工作状态后,才会运行的代码
}
Asp.Net 工程模式
如果是 Asp.Net 工程,则是在注册服务时进行设置:
services.RegisterMirageService("http://127.0.0.1:5005", "MyAspNetService", gateways , true , configOption => {
configOption.SingletonService = true;//设置为双机热备模式
configOption.AutoExitProcess = true;//掉线后自动退出进程
});
而在 app.UseMirageService 时,设置一个回调函数,来启动一些关键代码:
app.UseMirageService(() => {
//当微服务进入工作状态,运行到这里
写一些只有微服务进入工作状态后,才会运行的代码
});