.NET应用程序管理服务AMS设计
AMS全称是Application Management Server即应用程序管理服;由于经常要写些一些应用服务,每次部署和维护都比较麻烦,首先要针对服务编写一个windows服务程序方便系统启动里加载;而当要对服务进行更新的时候不得不对服务进行停止和启等一系列的繁琐工作;而对于平常所有服务运行跟踪管理上就更加难以处理,即使IIS本身也无法方便查看具体WEB服务中处理业务上的统计信息,为了解决以上的种种问题所以考虑针对.NET程序设计一个应用程序管理服务。
目标功能
AMS的主要功能是可以根据需要在服务上创建多个进程,而每个进程里都可以挂载多个应用服务。其实进程挂载应用服务在之前的Glue4Net里已经实现,由于Glue4Net是针对单进程设计的会导致应用服务之间的隔离级别不够;因此在AMS的设计上有所改进,采用进程的方式来隔离应用;不过在实际应用中是可以根据业务的需要来选择:一个进程一个应用或一个进程多个应用的方式。除了在部署运行提供统一管理外,还提供应用程序向AMS注册具体的业务统计信息,方便AMS统一监控进程的业务信息情况.以下列出AMS的基础功能:
- 创建进程,可对已有的进程进行启动,停止和重启等操作。
- 根据需要把应用挂载到不同的进程中,可对已有的应用启动,停止和重启等操作。
- 查看进程和应用的情况,包括进程使用的内存和CPU信息。
- 允许应用自定义信息属性提交给AMS,方便AMS监控管理
- 提供AMS向应用发送符指令,允许管理人员向应用发送具体的操作指令。
- 对应用进行复制加载,允许应用在运行的情况更新相应的文件。
- 自动监控应用的文件更新情况,自动更新应用
- 应用日志跟踪
- 提供CLI和GUI管理功能,方便相关员对AMS进行维护管理
设计
AMS主要分三大模块,分另是应用管理服务,应用进程和管理端。
AMS是主要核心部分,它的主要工作是对进程和应用的管理,负责进程和应用启动监控工作。AMS会以windows service的方式存在,而它除了对进程维护和监控外不会加添加任何业务功能,简单的工作从而保证AMS可以更可靠地运行。
AMS&AMS-Process交互
AMS根据数据信息启动应用进程,并提供相应的应用名称。应用进程启动后会向AMS发送一条注册信息,告诉AMS当前进程应用名称。AMS确认进程注册后会把该进程需要启动的应用发送过去,之后进程会定时把应用的状态信息回发到AMS上。具体交互流程如下:
CLI
CLI全称是(Command Line Interface),主要用于方便对AMS进行方便的管理。初期规划的命令如下:
- create process <-p processName> <-r remark>
- create app <-p processName> <-a appName> <-d appPath> [-w true|false] [-f *.cs|*.config] [-c true|false]
- process <-p test> <-s start|stop|restart|delete>
- app <-p processName> <-a appName> <-s start|stop|restart|delete>
- info <-p processName> <-a appName>
- modify <-p processName> <-a appName> <-n property> <-v value>
- cmd <-p processName> <-a appName> <-c command>
- log <-p processName> [-a appName] [-a yyyyMMdd]
- ls [-p processName]
- cls
- stop
通讯方式
AMS几个模块之间的通讯方式使用TCP,这样可以实现不同服务器上的维护和管理,通讯应用协议则使用protobuf来统一和简化消息的定义。
.NET应用程序管理服务AMS设计的更多相关文章
- SharePoint 2016 工作流报错“未安装应用程序管理共享服务代理”
前言 最近为SharePoint 2016环境,配置了状态机工作流,然后,用spd创建的时候可以保存,但是发布的时候报错,经过排查解决了问题,记录一下. 报错截图 下面是SharePoint Desi ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)
在深入学习zookeeper我想先给大家介绍一个和zookeeper相关的应用实例,我把这个实例命名为远程调用服务.通过对这种应用实例的描述,我们会对zookeeper应用场景会有深入的了解. 远程调 ...
- [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
- 微服务从设计到部署(二)使用 API 网关
链接:https://github.com/oopsguy/microservices-from-design-to-deployment-chinese 译者:Oopsguy 本书的七个章节是关于设 ...
- 多个微信小程序一个服务端架构
由于某些特定的业务场景,当多个小程序需要一个服务端后台提供数据时,大家可能想到是HTTP路由.是的,实际上我们使用微服务的GateWay网关也是一样的,如下图微服务架构: 网关GateWay的作用在于 ...
- Screen多视窗远程控制管理服务
Screen是一款由GNU开源计划开发的多视窗远程控制管理服务,简单来说就是为了解决上述情况中网络异常中断或同时控制多个远程窗口而设计的程序. Screen服务程序不仅能够解决上述问题,而且用户在使用 ...
- [转]在 Azure 云服务上设计大规模服务的最佳实践
本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...
- Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...
随机推荐
- 利用kibana插件对Elasticsearch进行映射
映射(mapping) 映射是创建索引的时候,可以预先定义字段的类型以及相关属性 Elasticsearch会根据JSON源数据的基础类型去猜测你想要的字段映射.将输入的数据变成可搜索的索引项.Map ...
- PHP 关于判断输入日期是否合法
合法要求 一年仅十二个月 4,6,9,11月仅30天,1,3,5,7,8,10,12月仅31天 闰年2月29天,否则28天 输入的变量年,月,日为数字 代码: <?php //PHP中判断输入的 ...
- 1. Linux系统介绍
1. 什么是操作系统? 定义:操作系统是计算机系统中必不可少的基础系统软件,它的作用是负责管理和控制计算机系统中的硬件和软件资源,合理地组织计算机系统的工作流程,以便有效地利用资源为使用者提供一个功能 ...
- python爬虫实践(二)——爬取张艺谋导演的电影《影》的豆瓣影评并进行简单分析
学了爬虫之后,都只是爬取一些简单的小页面,觉得没意思,所以我现在准备爬取一下豆瓣上张艺谋导演的“影”的短评,存入数据库,并进行简单的分析和数据可视化,因为用到的只是比较多,所以写一篇博客当做笔记. 第 ...
- mpvue-docs基于vue来开发微信小程序
http://mpvue.com/和https://tencent.github.io/wepy/
- 《JavaScript高级程序设计(第3版)》阅读总结记录第二章之在HTML中使用JavaScript
本章目录: 2.1 <script> 元素 2.1.1 标签的位置 2.1.2 延迟脚本 2.1.3 异步脚本 2.1.4 在XHTML 中的用法 2.1.5 不推荐使用的语法 2.2 嵌 ...
- MORE XOR
MORE XOR #include<bits/stdc++.h> using namespace std; ; int a[maxn]; ][maxn]; int main() { ios ...
- win7下配置mysql的my.ini文件
一.环境 操作系统是win7 x64, mysql是5.6.40. 二. 怎么配置? 修改my.ini文件, 添加[client], 在下面加一行 default-character-set=utf8 ...
- Python入门(白银篇)
一.变量.元组的赋值和循环删除 (1)多个变量同时赋值 #多个变量赋值a,b,c,d=1,2,3,4x=y=m=n=520print(a,b,c,d,x,y,m,n) (2)不引入第三方变量下,交换a ...
- .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)
如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...

