zoukankan      html  css  js  c++  java
  • Orleans 3 Silo

    Silo生命周期

    orleans silo使用了一个可观察的生命周期,用于orleans系统和应用层组件的有序启动和关闭。

            public static class ServiceLifecycleStage
            {
                //服务生命周期第一阶段
                public const int First = int.MinValue;
                //初始化运行时环境,Silo初始化线程
                public const int RuntimeInitialize = 2000;
                //开始运行时服务。Silo初始化网络和各种代理
                public const int RuntimeServices = 4000;
                //初始化运行时存储
                public const int RuntimeStorageServices = 6000;
                //开始为grains提供运行时服务。包括grain类型管理,成员服务和grain目录
                public const int RuntimeGrainServices = 8000;
                //应用服务,应用层服务
                public const int ApplicationServices = 10000;
                //变成激活,Silo加入集群
                public const int BecomeActive = Active - 1;
                //激活,Silo在集群中被激活并准备接受负载
                public const int Active = 20000;
                //服务声明周期最后阶段
                public const int Last = int.MaxValue;
            }

    因为Ioc的原因,并不是很清楚的能从代码中了解到启动和关闭顺序。所以Silo启动时自带了日志记录。

    应用逻辑可以加入到silo的生命周期中,只要在silo的服务容器中注册一个参与服务即可。服务必须注册为ILifecycleParticipant。

    public interface ISiloLifecycle : ILifecycleObservable
    {
    }
    
    public interface ILifecycleParticipant<TLifecycleObservable>
        where TLifecycleObservable : ILifecycleObservable
    {
        void Participate(TLifecycleObservable lifecycle);
    }

    当silo启动时,所有容器中的参加者都会被因为自己的方法被调用而有机会参加。因此,所有的参加者都有机会参加,silo的服务生命周期会保证全程有序。

  • 相关阅读:
    spring MVC fromeWork 與webwork2 mvc 比較
    JAVA Oauth 认证服务器的搭建
    HTTPS的工作原理
    理解HTTP幂等性
    支付交易一般性准则
    设计模式六大原则
    腾讯微信技术总监周颢:一亿用户增长背后的架构秘密
    Valid Parentheses
    4Sum
    Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/NicolasLiaoran/p/13177052.html
Copyright © 2011-2022 走看看