`

服务器状态监控-状态模式

 
阅读更多

 某日,终于开始开发MOS引擎了,说起这个名称还真是有点NB,光是名称而已。哈哈!

MOS(Mini Operation System),微型操作系统,简称MOS,此引擎相当于一个操作系统,说白一点其实也就是一个服务器框架,可以加载N个服务,开发人员只需要继承服务接口,就可以开发相对应的功能,就像window系统里面的服务那样!

框架开发好之后,以后就只需要不断开发服务就行了,框架依然正常运行!

 

既然是一个服务容器,那应该就是一个不断运行的东西,然后里面可以装一些东西,打个比喻就是像tomcat,我们可以讲war包直接扔进webapp目录下,它就能够运行这个项目。如果说MOS相对于Tomcat,那war包就相对于开发人员开发的服务。

 

Tomcat也有启动,关闭之类的,还有启动之后就会自动解压war包,没看过Tomcat的源码,但是估计也就是启动的时候有相关的事件通知,说到事件通知前段时间刚学了一招,观察者模式,呵呵...有兴趣的可以去看看我的博客,欢迎欢迎@

 

状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来是改变了其类。书本上的描述状态模式就这样的,不过我感觉就是晦涩难懂,定义都不明所以。我先提两个问题:

1,服务器启动的时候该干什么?

2,服务器停止的时候该干什么?

解答:

@1:服务器启动的时候就加载服务

@2:服务器停止的时候通知服务停止,最后才关闭服务器

 

再问:服务器启动的时候谁知道呢?告诉谁呢?

@3:启动的时候应该有事件通知,通知服务器启动,可以干点什么了(加载服务)

 

于是:那应该得用个什么变量来保存保存服务器的状态,让别人(服务)知道服务器已经启动了,可以加载。

为什么要这样呢?

打个比喻,在学校的时候,你是喜欢饭堂阿姨煮好饭之后去宿舍叫一下你来吃饭,还是你喜欢隔一段时间就去饭堂看看饭煮好了没?

 

状态模式的口号就是:见风使舵

 

好了,于是就来了一个类,

1,服务器状态

 

package cn.std.mos.core.state;

abstract public class State {

	public static final String STARTING = "STARTING";
	public static final String STOPPING = "STOPPING";
	public static final String PAUSING = "PAUSING";
	public static final String RUNNING = "RUNNING";
	public static final String PAUSE = "PAUSE";
	public static final String STOP = "STOP";
	/** 服务器状态 */
	private String status;
	
	/** 状态对应描述 */
	private String desc;
	
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	
}

 

 

2,各种状态,都继承State这个状态类,例如StartServerState,启动状态

 

package cn.std.mos.core.state;

public class StartServerState extends State {

	static class SingletonHolder{
		static StartServerState instance = new StartServerState();
	}
	
	public static synchronized StartServerState getInstance(){
		return SingletonHolder.instance;
	}
	
	private StartServerState() {
		// TODO Auto-generated constructor stub
		this.setStatus(STARTING);
		this.setDesc("服务器正在启动");
		
		//此处启动开机启动加载的服务
	}
}

 

 3,运行状态

 

package cn.std.mos.core.state;

public class RunServerState extends State {

	static class SingletonHolder{
		static RunServerState instance = new RunServerState();
		
	}
	
	public static RunServerState getInstance(){
		return SingletonHolder.instance;
	}
	
	private RunServerState() {
		// TODO Auto-generated constructor stub
		this.setStatus(RUNNING);
		this.setDesc("服务器正在运行");
	}
}

 

 4,停止状态

 

package cn.std.mos.core.state;

public class StopServiceState extends State {

	static class SingletonHolder{
		static StopServiceState instance = new StopServiceState();
		
	}
	
	public static StopServiceState getInstance(){
		return SingletonHolder.instance;
	}
	
	private StopServiceState() {
		// TODO Auto-generated constructor stub
		this.setStatus(STOP);
		this.setDesc("服务器已停止");
	}
}

 还有其他状态,我不写了!

这里说明,状态类中使用内部静态类,实际就是单例模式,共享状态资源!

 

那现在看看怎么使用:

 

package cn.std.mos.core.state;

public class client {

	private State state;
	public State getState() {
		return state;
	}
	public void setState(State state) {
		this.state = state;
		System.out.println("服务器状态:"+getState().getStatus());
	}
	public static void main(String[] args) {
		client c = new client();
		c.setState(StartServerState.getInstance());
	}
}

 

其实状态模式也就是将很复杂的状态切换的逻辑分开来,放到别的类去定义。嗯,好像没怎么描述明白,我回去再看看书!哈哈,另外附上我的MOS引擎,才刚开始写,反正服务框架是有了,继承AbstractService接口,可以进行开发自己的服务,大家提供点意见也行,加入跟我一起开发也行,哈哈,仅限菜鸟,大牛级人物就别来打击我了!哈哈!

还有附上运行图片:


  • MOS.rar (2.4 MB)
  • 下载次数: 76
  • 大小: 16.6 KB
分享到:
评论

相关推荐

    服务器大量php-cgi.exe进程,导致CPU占用100%的解决[定义].pdf

    3. **监控服务器状态**: - 安装监控工具定期检查服务器资源使用情况。 - 定期审查日志文件,查找潜在问题。 通过上述方法,不仅可以有效解决由大量`php-cgi.exe`进程导致的CPU占用率过高问题,还能进一步提升...

    Shell脚本监控服务器状态

    在“Shell脚本监控服务器状态”这个主题中,我们主要探讨如何利用Shell脚本来获取和监控服务器的关键性能指标,如CPU、内存、磁盘和网络状况。下面将详细阐述这些知识点: 1. **CPU监控**:在Shell脚本中,我们可以...

    服务器运行状态监控系统的设计与实现

    器端与客户端可靠连接性,最后,设计并开发一个服务器运行状态监控系统的实例。具 体包含以下几个方面: 1、基于监控探针的多线程数据信息采集机制。采用插件方式设计cpuProbe, mailProbe, packetProbe, ...

    ip-guard备用服务器安装步骤.docx

    7. 监控状态:在主服务器和备用服务器上,定期检查连接状态和数据同步情况,确保备用服务器随时处于就绪状态。任何异常都应及时排查并修复。 五、紧急授权模式与超级授权模式 8. 紧急授权模式:当主服务器出现故障...

    服务器运行状态监控系统[总结].pdf

    项目研究工作涵盖了系统的需求分析、设计、实现和测试等多个阶段,确保系统在实际环境中能够有效地监控服务器状态,预防和快速解决可能出现的问题,从而提高服务器的可用性和稳定性。在软件开发过程中,还需要考虑...

    ftp服务器软件--适合局域网用

    7. **日志与监控**:启用日志记录,以便追踪用户活动和服务器状态。可以使用第三方工具进行实时监控,确保服务稳定。 FTP服务器软件在局域网中的优势在于,它提供了一种简单、快速的文件共享方式,无需依赖云存储...

    客户机服务器交互模式的特点及应用

    ### 客户机服务器交互模式的特点及应用 #### 一、实训任务与要求解析 **1. 了解客户机/服务器交互模式的特点** 客户机/服务器(Client/Server,简称C/S)模式是一种分布式计算模型,其中“客户机”负责发起请求,...

    无线视频服务器JZ1000-GEV-config配置工具使用说明

    它使得用户能够根据实际需求,灵活配置设备的工作状态和传输参数,以实现最佳的监控效果。 1.2 软件简介 该配置工具界面简洁,操作直观,无论是初级用户还是经验丰富的技术人员,都能快速上手。其强大的功能覆盖了...

    Dell服务器说明poweredge-r220.pdf

    - **通电指示灯**:在系统开机时亮起,用以指示服务器的电源状态。 - **电源按钮**:用于控制系统的电源设备输出,对于兼容ACPI的操作系统,使用它可以执行正常有序的关机操作。 - **NMI按钮**:用于在运行某些操作...

    windows-服务器-Django-Apache2.4-mod-wsgi.7z

    - 使用监控工具(如New Relic、Prometheus)监控服务器状态,确保服务的稳定运行。 7. **故障排查**: - 当遇到问题时,首先检查Apache和Django的日志,通常能发现错误信息。 - 确保Python环境、Django版本、mod...

    IBM-服务器-x3850硬件安装手册.pdf

    - **操作员信息面板**:包括多个控件和指示灯,用于监控服务器状态。 - **USB接口**:用于连接USB设备。 - **电源控制按钮**:手动控制服务器的开关。 - **信息指示灯**:指示服务器是否有不良状况。 - **释放滑锁**...

    电信设备-服务器状态信息侦测系统.zip

    服务器状态信息侦测系统是一个实时监控和诊断工具,旨在跟踪服务器的运行状况,包括硬件性能、软件运行状态、网络连接和资源利用率等。通过对这些信息的收集和分析,系统能够预警潜在的问题,防止服务中断,从而提高...

    使用Jprofiler监控Apusic应用服务器.pdf

    反之,则按常规流程启动,不依赖于外部监控状态。 - **启动与连接**: 修改并保存启动脚本后,通过执行`startapusic.cmd`命令,Apusic服务器将按照预设配置初始化。此时,JProfiler端显示连接请求,确认后即可实现...

    HP ProLiant DL388p Gen8 服务器 - LED 指示灯

    - **开机/待机按钮和系统电源LED指示灯**:用于控制服务器的开关机状态和监控电源状态。 - **熄灭**:表示未连接电源线或电源出现故障。 - **琥珀色常亮**:表示系统处于待机状态;已初始化开机/待机按钮服务。 -...

    Falcon-Web服务器文件监控平台.7z

    5. 报告和警报:平台可自动生成关于文件活动的报告,并通过电子邮件或其他方式发送警报,帮助管理员保持对服务器状态的全面了解。 6. 集成与扩展:Falcon-Web通常能与其他IT管理系统集成,如SIEM(安全信息和事件...

    电信设备-服务器状态信息的处理方法、装置、系统及处理器.zip

    装置可能指专门用于服务器状态监控的硬件设备,如温度传感器、电源管理系统等,它们提供实时的物理环境信息。系统通常指的是软件平台,如服务器管理系统,它整合了各种监控工具,提供统一的界面和报警机制,使得管理...

    Java小程序服务器通信开发-MQTT库

    总的来说,Java小程序服务器通信开发-MQTT库为Java后台和微信小程序提供了稳定且高效的通信渠道,尤其适用于实时性要求较高、数据量较小的应用场景,如物联网设备监控、实时位置共享等。通过熟练掌握MQTT协议和相关...

Global site tag (gtag.js) - Google Analytics