Agent技术的概念,第1张

Agent的概念由Minsky在其1986年出版的《思维的社会》一书中提出。Minsky认为社会中的某些个体经过协商之后可求得问题的解,这些个体就是Agent。他还认为Agent应具有社会交互性和智能性。从此,Agent的概念便被引入人工智能和计算机领域,并迅速成为研究热点。

在分布计算领域,人们通常把在分布式系统中持续自主发挥作用的、具有以下特征的活着的计算实体称为Agent。

1 自主性

Agent具有属于其自身的计算资源和局部于自身的行为控制机制,能够在没有外界直接操纵的情况下,根据其内部状态和感知到的环境信息,决定和控制自身的行为。例如,SNMP中的agent就是独立运行在被管理单元上的自主进程。

2 交互性

Agent能够与其他Agent(包括人),用Agent通信语言实施灵活多样的交互,能够有效地与其他Agent协同工作。例如,一个Internet上的用户需要使用Agent通信语言向主动服务Agent陈述信息需求。

3 反应性

Agent能够感知所处的环境(可能是物理世界,操纵图形界面的用户,或其他Agent等),并对相关事件作出适时反应。例如,一个模拟飞机的Agent能够对用户的操纵作出适时反应。

4 主动性

Agent能够遵循承诺采取主动行动,表现出面向目标的行为。例如,一个Internet上的主动服务Agent,在获得新的信息之后能够按照约定主动将其提交给需要的用户;一个工作流管理Agent,能够按照约定将最新的工作进展情况主动通报给有关的工作站。

具有上述特性的计算实体可以是类Unix进程(或线程)、计算机系统、仿真器、机器人。

从系统实现的层次上分析,在上面列举的应用中,纯软件形态的Agent就是指具有上述特性的类Unix进程。在上述4个特性中,前3个是基本的。人们也称具有上述前3个特性的计算实体为反应式Agent。在经典的客户/服务器计算模型中,服务器就是一种典型的反应式Agent。一些学者对Agent概念赋予了更拟人化的要求,例如分布式人工智能领域的学者,要求Agent具有知识、信念、意图等认知特性;CSCW领域的学者,要求Agent具有更友好的人-机交互方式。当然,目前在主流的分布计算领域为人们广泛认同的Agent概念,是具有上述4个特性的计算实体。

流行的分布式计算技术都基于Client/Server模式,通过远程过程调用或消息传递等方式进行远程通信,比较适合稳定的网络环境应用场合。随着新型网络应用(如移动计算)的出现,Client/Server模式的缺点日益明显,远远不能适应当今快速多变的网络应用发展,移动Agent技术集智能Agent、分布式计算、通信技术于一体,提供了一个强大的、统一的和开放的计算模式,更适合于提供复杂的网络服务(如复杂的Internet信息搜索、Internet智能信息管理等)。

移动Agent是具有移动特性(Mobility)的智能Agent,它可以自主地在网络上从一台主机移动到另一台主机,并代表用户完成指定的任务,如检索、过滤和收集信息,甚至可以代表用户进行商业活动。

MA技术是分布式技术与Agent技术相结合的产物,它除了具有智能Agent的最基本特性——反应性、自治性、导向目标性和针对环境性外,还具有移动性[1]。

具体特性表现在如下几个方面:

⑴节约网络带宽、克服网络延迟。移动Agent的本质是将计算移动到数据端,直接在数据端进行本地处理,只返回最终结果,从而避免了大量中间数据在通信两端的传输。移动Agent一次可以携带多个服务请求移动到服务器端进行本地调用,避免了多次远程调用,从而节省了每次远程调用的网络延迟。因此在处理的数据量大、通信两端交互频繁、带宽不足的情况下,使用移动Agent技术可以有效地节省网络负载。

⑵支持实时远程交互。在一些远程控制系统中,如工业控制、海底探测器控制、外太空探测器控制、有毒环境中的监控,实时性非常重要,但是网络的延迟使远程实时控制变得不太可能。将移动Agent发送到远端系统,代替人在远端完成各种控制活动,可以从根本上解决网络延迟问题。

⑶封装网络协议。任何网络程序都是建立在特定的协议之上的,网络程序的开发要求程序设计者深刻地理解低层的网络协议;随着Internet的发展,新的协议和数据格式不断地产生,随着网络协议的升级,

程序需要重新编写、编译,这些都给网络应用的开发和维护带来困难。移动Agent系统是一种中间件,位于操作系统和应用程序之间,封装了低层网络协议,提供移动、通信、容错和安全等基本功能,开发人员无须了解低层实现即可开发网络应用。当网络协议升级时,只需修改移动Agent系统中相关的功能实现而无需修改MA应用程序。

系统是一种中间件,位于操作系统和应用程序之间,封装了低层网络协议,提供移动、通信、容错和安全等基本功能,开发人员无须了解低层实现即可开发网络应用。当网络协议升级时,只需修改移动Agent系统中相关的功能实现而无需修改MA应用程序。

⑷支持异步自主执行。传统分布式系统中异步通信机制(如异步消息队列)可以异步地处理多个请求,但要求提出请求的客户端必须始终在线等待并响应请求的回答,这对移动客户而言是不可行的。使用移动Agent技术,用户可以将整个任务而不是单个请求提交给多个Agent去执行,这些Agent被发送到网上之后,可以独立于发送它们的程序,异步地、自主地、协作地完成任务,它们的生命周期可以长于创建它们的程序。

⑸支持离线计算(断连操作)。由于带宽是一种昂贵的资源,要求移动设备(笔记本电脑、PDA、手机等)始终保持网络连接在经济上是不可行的;无线通信的特性要求系统具有离线计算的能力,移动设备连接在技术上也是不可行的。移动Agent技术可以解决这个问题。用户派出Agent之后,可以断开网络连接,Agent在网络上自主地运行,当Agent完成任务之后,通过转接机制(Docking)监视用户是否在线,当它发现用户在线时,就返回计算结果。

⑹支持平台无关性。移动Agent的运行只和其运行环境有关,和具体的网络结构、网络协议、计算机设备、操作系统无关,只要网络节点上装有移动Agent运行环境,移动Agent就可以实现跨平台的移动和运行。如果所有的移动Agent系统都遵循移动Agent系统的互操作标准,就可以实现MA在任意移动Agent系统中的移动、交互和通信,真正实现平台的无关性,即所谓的“编译一次,到处移动”。

⑺具有动态适应性。移动Agent和其运行环境进行交互,感知环境的变化,并自主地、快速地作出反应,使整个系统始终保持在最优状态。

⑻提供个性化服务。来自不同的民族和地区,有着不同的文化背景,他们对信息的需求和使用方式有着很大的差异,这就要求Internet进行个性化服务。使用移动Agent技术,用户可以根据服务器端提供的低层操作函数,编写满足自己特定需要的Agent,然后发送到服务器端运行,利用服务器端的数据资源或计算资源为不同的用户服务,有效地增加服务器功能的伸缩性。

⑼增强应用的强壮性和容错能力。移动Agent支持离线计算,其反应性使之能及时地感知网络节点的失效,其自主性可以使它自主地处理并修正错误,更容易建立容错能力强的分布式系统。例如,在一个网络节点失效之前,在其上工作的移动Agent可以立即感知,并完成相应的备份工作,然后移动到其他节点,继续原来的工作。

移动Agent系统的组成不同的移动Agent系统的体系结构各不相同,但几乎所有的移动Agent系统都包括如下两部分:Agent和MA环境(MAE或称MA服务器、MA主机(MAH)、MA服务设施、Place、Context、Location)。MA环境为Agent提供安全、正确的运行环境,实现MA的移动、MA执行状态的建立、MA的启动、实施MA的约束机制、容错策略、安全控制和通信机制,并提供基本服务模块,如事件服务(EventService)、黄页服务(YellowPageService)、事物服务(TransactionService)和域名服务(DNS)等。1台主机上可以有1个或多个MAE。通常情况下,1个MAE只位于1台主机上,但当主机之间是以高速、持续、稳定可靠的网络连接时,1个MAE可以跨越多台主机而不影响整个系统的运行效率。Agent可以分为移动Agent和服务Agent。移动Agent可以从1个MAE移动到另1个MAE,在MAE中执行,并通过Agent通信语言(ACL)与其他MA通信或访问MAE提供的服务。移动Agent的主要作用是完成用户指定的任务,需要实现移动语义(即目标主机或路由的选择)、安全控制(保护自身)、与外界(MA服务环境以及其他Agent)的通信等功能。服务Agent不具有移动的能力,其主要功能是向本地的Agent或来访的Agent提供服务。通常,1个MAE上驻有多个服务Agent,分别提供不同的服务,如文件服务、黄叶服务等系统级服务,定票服务、数据库服务等应用级服务。由于系统Agent是不移动的,并且只能由它所在MAE的管理员启动和管理,因此保证服务Agent不会是“恶意的”。来访的移动Agent不能直接访问系统资源,只能通过服务Agent提供的接口访问“受控制的(Controlled)”、“安全的(Secure)”的服务,这可以避免恶意的Agent对主机的攻击,是移动Agent系统经常采用的安全策略。另外,采用Java提供的C语言接口,服务Agent可以提供和其他软件LegacySoftware)的交互接口,很容易将非Agent系统集成到Agent系统中。

SkyWalking是一个针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native和容器化架构,其核心是个分布式追踪系统。它通过探针自动收集所需的指标,且基于探针技术对应用零侵入零耦合。通过这些调用链路以及指标,SkyWalking APM会感知应用间关系和服务间关系,并进行相应的指标统计。

解压后,进入目录,默认自带了agent,这个是用来追踪java项目的。我因为是用来追踪php项目,所以这个用不上,如果要追踪php项目,需要另外安装php的agent,请查看我另外一篇文章( linux安装sky-php-agent )

bin里面是启动文件

config目录里面是配置文件

webapp目录里面是UI界面项目文件和配置文件

默认情况下,只需要更改一下 config/applicationyml文件

默认的restHost和gRPCHost的IP为0000,我这里改成我这边内网的IP。这里要注意一下,一旦改了IP,就只能用这个IP,比如我这里改成了内网IP,那么用127001都不能访问。

如果需要更改UI界面访问的端口,可以修改 webapp/webappyml,里面配置文件很简单

注意一下,如果要想能够让受控端访问到skywalking服务,那么必须将12800端口对受控端服务器打开。WEB界面的端口,我这里是8081,大家可以改成自己需要的端口。

变更完配置后,就可以进去bin目录下,运行 startupsh ,服务就会启动。然后通过http://服务器ip:8081进行界面访问。

受控端如果也启动了的话,这个时候,界面里就自动会出现数据了。

emmmm这里有个坑,默认情况下,打开界面什么数据都看不到,这个需要点击右上角的“自动”按钮,让按钮变成蓝色,这个时候就会有数据出现了。

如果还是没有出现数据,那就检查受控端服务是不是已经启动了,或者去看一下logs目录下的日志。如果受控端连接服务端出现错误,就看skywalking-oap-serverlog;如果受控端一切正常,界面数据还是不显示,就看webapplog

我在安装的时候,使用startupsh启动文件,又遇到一个坑。这个启动文件,无论中间是不是有报错,都会提示启动成功。而且因为没有停止的命令,如果重复运行startupsh,日志里会提示端口占用。这个时候,需要使用命令先查看占用端口的进程,然后杀掉进程,再重新运营启动文件才可以。

ump系统的组件及其具体作用分别是:

1、Mnesia:Mnesia是一个分布式数据库管理系统,适合于电信及其他需要持续运行和具备软实时特性的Erlang应用,是构建电信应用的控制系统平台——开放式电信平台(Open Telecom Platform,OTP)的一部分。

2、RabbitMQ:RabbitMQ是一个用Erlang开发的工业级的消息队列产品(功能类似于IBM公司的消息队列产品IBM WEBSPHERE MQ),作为消息传输中间件来使用,可以实现可靠的消息传送。

3、Zookeeper:Zookeeper是高效和可靠的协同工作系统,提供分布式锁之类的基本服务如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

用于构建分布式应用,减轻分布式应用程序所承担的协调任务。在UMP系统中,Zookeeper主要发挥3个作用。

ump系统中服务器的种类有:

1、Agent服务器:Agent服务器部署在运行MySQL进程的机器上,用来管理每台物理机上的MySQL实例。

执行主从切换、创建、删除、备份、迁移等操作,同时还负责收集和分析MySQL进程的统计信息、慢日志查询(Slow Query Log)和bin-log。

2、日志分析服务器:日志分析服务器存储和分析Proxy服务器传入的用户访问日志,并支持实时查询一段时间内的慢日志和统计报表。

3、信息统计服务器:信息统计服务器定期将采集到的用户的连接数、QPS数值以及MySQL实例的进程状态用RRDtool进行统计。

可以在Web界面上可视化展示统计结果,也可以把统计结果作为今后实现弹性的资源分配和自动化的MySQL实例迁移的依据。

针对每一个问答都本着绝不大胆胡说,只管小心求证的态度,疯评科技来解答您的提问。

想要随时随地监测服务器的运行情况,需要使用专业的监控软件。下面具体来说一说。

监控软件的功能要求

首先理清楚自己的需求,需要监控什么指标,监控方式,能否预警,历史数据是否保存,是否需要图形,只有对这些进行了充分了解,才能进行目标选定。

常用监控指标如下:

设备的运行状态有cpu使用情况,内存使用情况,硬盘使用情况,设备温度,运行时间等。

网络运行状态有流量,网卡状态,端口状态,路由条目数,路由协议状态等。

其它有ups运行状态,电量,光纤功率,电源状态等。

监控方式有snmp,,wmi,agent等。

预警需求有短信,电话,邮件,微信等。

相信经过这一系列的了解,对监控软件就走了选型了,这里我自己管理的网络用的流量监控软件是cacti和zabbix,其它状态监控用的是PRTG,还有设备厂商自带的监控软件。

监控软件的安装部署

在选定了监控软件后就是进行安装部署了,选用本地服务器还是云服务器都是可以的,需要服务器保持稳定,能够存储一定量的监控数据。

有的监控软件安装比较简单,比如Windows环境下的,涉及到数据库安装的就复杂一些,相比较而言,Linux下的监控软件性能更好,更稳定,当然非专业人员部署起来也比较困难。

监控软件安装完成后,需要进行必要的配置,包括监控目标的添加,参数调整,阈值设置,预警方式等。

在设置完整后,需要对所有配置保存并备份,并做定期备份计划,以确保数据安全。

随时随监测服务器

经过前面的准备,我们已经可以实现随时随地监测服务器了。具体实施可以如下来做:

有web登录功能的监控软件直接在手机浏览器中访问,并存入收藏夹,以被随时登录查看服务器状态。

有app客户端的监控软件则直接在手机上安装app进行查看。

没有web和app登录方式的则手机需要有远程软件,进行远程登录查看。

通过上述所说,用手机即可以轻松实现随时随地监测服务器的情况,当然有条件的,可以对监控软件进行二次开发或者自己开发所需功能的监控软件。

根据Go趋势报告显示,全球范围内有 110 万专业开发者选择Go作为其主要开发语言。如果把以其他编程语言作为主要开发语言,同时也在使用Go的开发者计算在内,这一数字将高达270万,中国的Go语言开发者排名第一,全球占比超过16%。

Go 语言能够支持并构建与微服务结合的内部工具、架构和后端服务而深受IT企业欢迎,许多IT架构工具由Go构建而成,例如大型的Kubernetes、Docker和Vault等。数据显示,有63%的具有统治力的云原生项目都是用Go构建。

因此,博睿数据在国内首发支持Go语言智能探针,对于提升业务性能,助力企业数字化转型有着非常重要的意义。

SmartAgent探针技术集结主流编程语言

SmartAgent是博睿数据自研的自动化部署的一体化探针,在已支持JAVA,PHP,net,Nodejs,NET Core,Python的基础上,新增了对Go语言的支持。

相较而言,传统探针技术需要客户配合修改应用程序代码,风险不可控,需要客户重新编译程序集成探针,耦合度高。

不同于行业内传统探针技术,博睿数据GoAgent探针直接后台安装即可,主动注入和嵌码,降低与客户程序耦合、无需二次修改代码、提高 GoAgent 技术易用性。无论是动态编译还是静态编译的代码,博睿数据Samrt Agent技术都可以在不进行任何修改的情况下进行服务级别和代码级别的分布式链路跟踪,实现业务的可观测性。

GoAgent探针支持六大功能,实现全链路追踪

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Agent技术的概念

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情