精华内容
下载资源
问答
  • 敬业签是一款可以安卓手机端、苹果手机端、windows电脑端、web网页端以及苹果电脑mac端等端口同步使用的团队协作工具,因为具备“团队便签”的功能,所以可以帮助用户分配管理团队任务并实现团队在线沟通协作的...

    敬业签是一款可以在安卓手机端、苹果手机端、windows电脑端、web网页端以及苹果电脑mac端等端口同步使用的团队协作工具,因为具备“团队便签”的功能,所以可以帮助用户分配管理团队任务并实现团队在线沟通协作的目标。

    而且,敬业签还支持用户查看单条团签的日志,使得他们可以详细了解到团签内容都经历了哪些变化,既然如此,哪么团队协作工具敬业签在手机端如何查看单条团签日志呢?为了便于大家的使用,下面小编就以华为手机为例,将操作方法一一告诉大家。

    一、打开华为手机端的敬业签,进入主界面后点击下方导航栏中的“团签”按钮,就能进入到团队便签页面,然后再点击团签头像或团签名称打开团签列表,便可切换至对应的团队便签页面;

    ff4da1b7089f7aa58d3b058909717821.png 

    bda3d61d915255bd165479c9bc350dbc.png 

    二、进到对应的团队便签页面后,找出并点击要查看日志的团签,便能进入该条团签的内容浏览页面;

    21a00cf0d4db72c38a41be5be2ede07e.png 

    三、点击内容浏览页面右上方的“…”图标,然后在打开的下拉菜单中选择“日志”这一选项,便能够打开这条团签的日志;

    00361dad3997b448766314991826636c.png 

    四、根据该条团签的日志记录,我们便可以详细了解到团签内容的操作记录。

    52bdbe268f1f5bc51860b2768c24f5ec.png 

    注:

    1、团队便签创建者和团签管理员默认可以查看单条团签日志;

    2、内容管理员默认可以查看单条团签日志,但“查看日志和单条日志”的操作权限可被团签创建者手动关闭。

    3、成员没有查看单条团签日志的权限。

    展开全文
  • 导读:数据总线DBus的总体架构中主要包括六大模块,分别是:日志抓取模块、增量转换模块、全量抽取程序、日志算子处理模块、心跳监控模块、Web管理模块。六大模块各自的功能相互连接,构成DBus的工作原理:通过读取...

    导读:数据总线DBus的总体架构中主要包括六大模块,分别是:日志抓取模块、增量转换模块、全量抽取程序、日志算子处理模块、心跳监控模块、Web管理模块。六大模块各自的功能相互连接,构成DBus的工作原理:通过读取RDBMS增量日志的方式来实时获取增量数据日志(支持全量拉取);基于Logstash,flume,filebeat等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出。本文主要介绍的是DBus中基于可视化配置的日志结构化转换实现的部分。

    一、结构化日志的原理

    1.1 源端日志抓取

    DBus可以对接多种log数据源,例如:Logstash、Flume、Filebeat等。上述组件都是业界比较流行的日志抓取工具,一方面便于用户和业界统一标准,方便用户技术方案的整合;另一方面也避免了无谓的重复造轮子。抓取的数据我们称为原始数据日志(raw data log),由抓取组件将其写入Kafka中,等待DBus后续处理。

    1.2 可视化配置规则,使日志结构化

    用户可自定义配置日志源和目标端。同一个日志源的数据可以输出到多个目标端。每一条“日志源-目标端”线,用户可以根据自己的需要来配置相应的过滤规则。经过规则算子处理后的日志是结构化的,即:有schema约束,类似于数据库中的表。

    1.3 规则算子

    DBus设计了丰富易用的算子,用于对数据进行定制化操作。用户对数据的处理可分为多个步骤进行,每个步骤的数据处理结果可即时查看、验证;并且可重复使用不同算子,直到转换、裁剪出自己需要的数据。

    1.4 执行引擎

    将配置好的规则算子组应用到执行引擎中,对目标日志数据进行预处理,形成结构化数据,输出到Kafka,供下游数据使用方使用。系统流程图如下所示:

    a36755be4a5271549909417e47269001.png

    根据DBus log设计原则,同一条原始日志,可以被提取到一个或多个表中。每个表是结构化的,满足相同的schema约束。

    • 每个表是一个规则算子组的集合,每个表可以拥有1个或多个规则算子组;
    • 每个规则算子组,由一组规则算子组合而成,每个算子具有独立性;

    对于任意一条原始数据日志(raw data log),它应该属于哪张表呢?

    假如用户定义了若干张逻辑表(T1,T2…),用于抽取不同类型的日志,那么,每条日志需要与规则算子组进行匹配:

    • 进入某张表T1的所有规则算子组的执行过程
    • 符合条件的进入规则算子组,并且被执行引擎转换为结构化的表数据
    • 不符合提取条件的日志尝试下一个规则算子组
    • 对于T1的所有规则算子组,如果都不满足要求,则进入下一张表T2的执行过程,以此类推
    • 如果该条日志不符合任何一张表的过滤规则,则进入_unknown_table_表

    11921a7fb3a5204193a47797c94b8585.png

    例如,对于同一条应用日志,其可能属于不止一个规则组或Table,而在我们定义的规则组或Table中,只要其满足过滤条件,该应用日志就可以被规则组提取,即保证了同一条应用日志可以同属于不同的规则组或Table。

    de6725a85bf79bf69d13f69f90cd0417.png

    规则算子是对数据进行过滤、加工、转换的基本单元。常见的规则算子如上图所示。

    算子之间具有独立性,算子之间可以任意组合使用,从而可以实现许多复杂的、高级的功能,通过对算子进行迭代使用,最终可以实现对任意数据进行加工的目的。用户可以开发自定义算子,算子的开发非常容易,用户只要遵循基本接口原则,就可以开发任意的算子。

    二、DBus日志处理实例

    以DBus集群环境为例,DBus集群中有两台机器(即master-slave)部署了心跳程序,用于监控、统计、预警等,心跳程序会产生一些应用日志,这些应用日志中包含各类事件信息,假如我们想要对这些日志进行分类处理并结构化到数据库中,我们就可以采用DBus log程序对日志进行处理。

    DBus可以接入多种数据源(Logstash、Flume、Filebeat等),此处以Logstash为例来说明如何接入DBus的监控和报警日志数据。

    5cbf84c233240d2ba1f9a89c2db00521.png

    由于在dbus-n2和dbus-n3两台机器上分别存在监控和预警日志,为此我们分别在两台机器上部署了Logstash程序。心跳数据由Logstash自带的心跳插件产生,其作用是便于DBus对数据进行统计和输出,以及对源端日志抽取端(此处为Logstash)进行预警(对于Flume和Filebeat来说,因为它们没有心跳插件,所以需要额外为其定时产生心跳数据)。Logstash程序写入到Kafka中的数据中既有普通格式的数据,同时也有心跳数据。

    这里不只是局限于2台部署有Logstash程序的机器,DBus对Logstash数量不做限制,比如应用日志分布在几十上百台机器上,只需要在每台机器上部署Logstash程序,并将数据统一抽取到同一个Kafka Topic中,DBus就能够对所有主机的数据进行数据处理、监控、预警、统计等。

    2.1 启动Logstash

    在启动Logstash程序后,我们就可以从topic : heartbeat_log_logstash中读取数据,数据样例如下:

    1)心跳数据

    c14feec1520f3e8adebfe66a69ce9ecf.png

    2)普通日志数据

    dd5d566613b5a04c53bf1c4a9dd66148.png

    2.2 配置规则

    接下来,我们只需要在DBus Web中配置相应的规则就可以对数据进行处理了。

    首先新建一个逻辑表sink_info_table,该表用来抽取sink事件的日志信息,然后配置该表的规则组(一个或多个,但所有的规则组过滤后的数据需要满足相同schema特性),heartbeat_log_logstash作为原始数据topic,我们可以实时的对数据进行可视化操作配置(所见即所得,即席验证)。

    3f89e243a6f5fffe00881614d40842a1.png

    1)读取原始数据日志

    83c3f88df9fd2a7abd787ff80ed6a87f.png

    可以看到由Logstash预先提取已经包含了log4j的基本信息,例如path、@timestamp、level等。但是数据日志的详细信息在字段log中。由于不同的数据日志输出是不一样的,因此可以看到log列数据是不同的。

    2)提取感兴趣的列

    假如我们对timestamp、log 等原始信息感兴趣,那么可以添加一个toIndex算子,来提取这些字段:

    6216e4e4e5c0541127f7de0c4553f4bc.png

    这里需要指出,我们考虑使用数组下标方式,是有原因的: - 并不是所有列本身自带列名(例如flume抽取的原始数据,或者split算子处理后的数据列); - 下标方式可以使用数组方式指定列(类似python方式, 例如:1:3表示1,2列); 因此后续操作全部基于数组下标方式访问。

    执行规则,就可以看到被提取后的字段情况:

    5fc09fed2520b053fe3f5bfd3a382f8f.png

    3)过滤需要的数据

    在这个例子中,我们只对含有“Sink to influxdb OK!”的数据感兴趣。因此添加一个filter算子,提取第7列中包含”Sink to influxdb OK!”内容的行数据:

    e6a408540677ba93a0378e6e6a52fef9.png

    执行后,只有符合条件的日志行数据才会存在。

    076c725d101005142f1326ca9165850f.png

    4)对特定列进行提取

    添加一个select算子,我们对第1和3列的内容感兴趣,所以对这两列进行提取。

    535c70b695a1d7e29614127eae5aed16.png

    执行select算子,数据中就会只含有第1和3列了。

    22d8d4531775935905126fa88cc43fee.png

    5)以正则表达式的方式处理数据

    我们想从第1列的数据中提取符合特定正则表达式的值,使用regexExtract算子对数据进行过滤。正则表达式如下:http_code=(d*).*type=(.*),ds=(.*),schema=(.*),table=(.*)s.*errorCount=(d*),用户可以写自定义的正则表达式。

    e8ee68463e17eca11edefe3cf032e999.png

    执行后,就会获取正则表达式执行后的数据。

    375bdef8fbfe83b775d27c9f4b818735.png

    6)选择输出列

    最后我们把感兴趣的列进行输出,使用saveAs算子, 指定列名和类型,方便于保存在关系型数据库中。

    5466194a5664f9a3b28ab2cc60e56bf5.png

    执行saveAs算子后,这就是处理好的最终输出数据样本。

    fc641131b146b12f6e760e3fa5564513.png

    2.3 查看结构化输出结果

    保存上一步配置好的规则组,日志数据经过DBus执行算子引擎,就可以生成相应的结构化数据了。目前根据项目实际,DBus输出的数据是UMS格式,如果不想使用UMS,可以经过简单的开发,实现定制化。

    注:UMS是DBus定义并使用的、通用的数据交换格式,是标准的JSON。其中同时包含了schema和数据信息。更多UMS介绍请参考DBus开源项目主页的介绍。开源地址:https://github.com/bridata/dbus

    以下是测试案例,输出的结构化UMS数据的样例:

    851e57269a0f7d017417392ba53bcae7.png

    2.4 日志监控

    为了便于掌握数据抽取、规则匹配、监控预警等情况,我们提供了日志数据抽取的可视化实时监控界面,如下图所示,可随时了解以下信息:

    • 实时数据条数
    • 错误条数情况(错误条数是指:执行算子时出现错误的情况,帮助发现算子与数据是否匹配,用于修改算子,DBus同时也提供了日志回读的功能,以免丢失部分数据)
    • 数据延时情况
    • 日志抽取端是否正常

    b7be6884ae859f153ef13647d5247ea6.png

    监控信息中包含了来自集群内各台主机的监控信息,以主机IP(或域名)对数据分别进行监控、统计和预警等。

    监控中还有一张表叫做_unkown_table_ 表明所有没有被匹配上的数据条数。例如:Logstash抓取的日志中有5种不同事件的日志数据,我们只捕获了其中3种事件,其它没有被匹配上的数据,全部在_unkown_table_计数中。

    db8774e5522370e2072376a1c0662512.png

    DBus同样可以接入Flume、Filebeat、UMS等数据源,只需要稍作配置,就可以实现类似于对Logstash数据源同样的处理效果,更多关于DBus对log的处理说明,请参考:

    • https://bridata.github.io/DBus/install-logstash-source.html
    • https://bridata.github.io/DBus/install-flume-source.html
    • https://bridata.github.io/DBus/install-filebeat-source.html

    应用日志经过DBus处理后,将原始数据日志转换为了结构化数据,输出到Kafka中提供给下游数据使用方进行使用,比如通过Wormhole将数据落入数据库等。具体如何将DBus与Wormhole结合起来使用,请参考:如何设计实时数据平台(技术篇)。

    作者:仲振林

    展开全文
  • 一、基于 HTTP 的协议...随着时代的发展,Web 的用途更具多样性,比如演化成在线购物网站、SNS(Social Networking Service,社交网络服务)、企业或组织内部的各种管理工具,等等。而这些网站所追求的功能可通过 ...

    本文记录了阅读《图解HTTP》的《基于 HTTP 的功能追加协议》章节的笔记。

    一、基于 HTTP 的协议

    在建立 HTTP 标准规范时,制订者主要想把 HTTP 当作传输 HTML 文档的协议。随着时代的发展,Web 的用途更具多样性,比如演化成在线购物网站、SNS(Social Networking Service,社交网络服务)、企业或组织内部的各种管理工具,等等。

    而这些网站所追求的功能可通过 Web 应用和脚本程序实现。即使这些功能已经满足需求,在性能上却未必最优,这是因为 HTTP 协议上的限制以及自身性能有限。

    HTTP 功能上的不足可通过创建一套全新的协议来弥补。可是目前基于 HTTP 的 Web 浏览器的使用环境已遍布全球,因此无法完全抛弃HTTP。有一些新协议的规则是基于 HTTP 的,并在此基础上添加了新的功能。

    二、消除 HTTP 瓶颈的 SPDY

    Google 在 2010 年发布了 SPDY(取自 SPeeDY,发音同 speedy),其开发目标旨在解决 HTTP 的性能瓶颈,缩短 Web 页面的加载时间(50%)。

    1 HTTP 的瓶颈

    在 Facebook 和 Twitter 等 SNS 网站上,几乎能够实时观察到海量用户公开发布的内容,这也是一种乐趣。当几百、几千万的用户发布内容时,Web 网站为了保存这些新增内容,在很短的时间内就会发生大量的内容更新。

    为了尽可能实时地显示这些更新的内容,服务器上一有内容更新,就需要直接把那些内容反馈到客户端的界面上。虽然看起来挺简单的,但 HTTP 却无法妥善地处理好这项任务。

    使用 HTTP 协议探知服务器上是否有内容更新,就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新,那么就会产生徒劳的通信。

    若想在现有 Web 实现所需的功能,以下这些 HTTP 标准就会成为瓶颈。

    • 一条连接上只可发送一个请求。
    • 请求只能从客户端开始。客户端不可以接收除响应以外的指令。
    • 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。
    • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多。
    • 可任意选择数据压缩格式。非强制压缩发送。

    v2-a73495f084533ebd7cc7f70d13c6f057_b.jpg
    以前的 HTTP 通信

    (1)Ajax

    Ajax(Asynchronous JavaScript and XML, 异 步 JavaScript 与 XML 技术)是一种有效利用 JavaScript 和 DOM(Document Object Model,文档对象模型)的操作,以达到局部 Web 页面替换加载的异步通信手段。和以前的同步通信相比,由于它只更新一部分页面,响应中传输的数据量会因此而减少,这一优点显而易见。

    Ajax 的核心技术是名为 XMLHttpRequest 的 API,通过 JavaScript 脚本语言的调用就能和服务器进行 HTTP 通信。借由这种手段,就能从已加载完毕的 Web 页面上发起请求,只更新局部页面。

    而利用 Ajax 实时地从服务器获取内容,有可能会导致大量请求产生。另外,Ajax 仍未解决 HTTP 协议本身存在的问题。

    v2-022010ea886fcb2fa9195c2367ebc6d1_b.jpg

    (2)Comet 的解决方法

    一旦服务器端有内容更新了,Comet 不会让请求等待,而是直接给客户端返回响应。这是一种通过延迟应答,模拟实现服务器端向客户端推送(Server Push)的功能。

    通常,服务器端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能,Comet 会先将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。因此,服务器端一旦有更新,就可以立即反馈给客户端。

    内容上虽然可以做到实时更新,但为了保留响应,一次连接的持续时间也变长了。期间,为了维持连接会消耗更多的资源。另外,Comet也仍未解决 HTTP 协议本身存在的问题。

    v2-08b03422124f4ec685dcfc81e7bc21de_b.jpg
    Comet 通信

    (3)SPDY 的目标

    陆续出现的 Ajax 和 Comet 等提高易用性的技术,一定程度上使 HTTP得到了改善,但 HTTP 协议本身的限制也令人有些束手无策。为了进行根本性的改善,需要有一些协议层面上的改动。

    处于持续开发状态中的 SPDY 协议,正是为了在协议级别消除 HTTP所遭遇的瓶颈。

    2 SPDY 的设计与功能

    SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规定通信中使用 SSL。

    SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方 法、Cookie 以及 HTTP 报文等。

    v2-79f5bba77fa34bbf7812e2b55bea5419_b.jpg

    使用 SPDY 后,HTTP 协议额外获得以下功能。

    • 多路复用流:通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高。
    • 赋予请求优先级:SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题。
    • 压缩 HTTP 首部:压缩 HTTP 请求和响应的首部。这样一来,通信产生的数据包数量和发送的字节数就更少了。
    • 推送功能:支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
    • 服务器提示功能:服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求。

    3 SPDY 消除 Web 瓶颈了吗

    希望使用 SPDY 时,Web 的内容端不必做什么特别改动,而 Web 浏览器及 Web 服务器都要为对应 SPDY 做出一定程度上的改动。有好几家 Web 浏览器已经针对 SPDY 做出了相应的调整。另外,Web 服务器也进行了实验性质的应用,但把该技术导入实际的 Web 网站却进展不佳。

    因为 SPDY 基本上只是将单个域名( IP 地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限制。

    SPDY 的确是一种可有效消除 HTTP 瓶颈的技术,但很多 Web 网站存在的问题并非仅仅是由 HTTP 瓶颈所导致。对 Web 本身的速度提升,还应该从其他可细致钻研的地方入手,比如改善 Web 内容的编写方式等。

    三、使用浏览器进行全双工通信的WebSocket

    利用 Ajax 和 Comet 技术进行通信可以提升 Web 的浏览速度。但问题在于通信若使用 HTTP 协议,就无法彻底解决瓶颈问题。WebSocket网络技术正是为解决这些问题而实现的一套新协议及 API。

    当时筹划将 WebSocket 作为 HTML5 标准的一部分,而现在它却逐渐变成了独立的协议标准。WebSocket 通信协议在 2011 年 12 月 11 日,被 RFC 6455 - The WebSocket Protocol 定为标准。

    1 WebSocket 的设计与功能

    WebSocket,即 Web 浏览器与 Web 服务器之间全双工通信标准。其中,WebSocket 协议由 IETF 定为标准,WebSocket API 由 W3C 定为标准。仍在开发中的 WebSocket 技术主要是为了解决 Ajax 和 Comet里 XMLHttpRequest 附带的缺陷所引起的问题。

    2 WebSocket 协议

    一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML 或图片等任意格式的数据。

    由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。

    下面我们列举一下 WebSocket 协议的主要特点:

    • 推送功能:支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
    • 减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息很小,通信量也相应减少了。

    为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一次“握手”(Handshaking)的步骤。

    (1)握手 请求

    为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字段,告知服务器通信协议发生改变,以达到握手的目的。

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Origin: Example Domain
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13

    Sec-WebSocket-Key 字段内记录着握手过程中必不可少的键值。

    Sec-WebSocket-Protocol 字段内记录使用的子协议。

    子协议按 WebSocket 协议标准在连接分开使用时,定义那些连接的名称。

    (2)握手 响应

    对于之前的请求,返回状态码 101 Switching Protocols 的响应。

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
    Sec-WebSocket-Protocol: chat

    Sec-WebSocket-Accept 的字段值是由握手请求中的 Sec-WebSocket-Key 的字段值生成的。

    成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数据帧,而采用 WebSocket 独立的数据帧。

    v2-3c771e15e21930c0ba590524effc450c_b.jpg

    3 WebSocket API

    JavaScript 可调用“The WebSocket API”(http://www.w3.org/TR/websockets/,由 W3C 标准制定)内提供的 WebSocket 程序接口,以实现 WebSocket 协议下全双工通信。

    以下为调用 WebSocket API,每 50ms 发送一次数据的实例。

    var socket = new WebSocket('ws://game.example.com:12010/updates');
    socket.onopen = function () {
    setInterval(function() {
    if (socket.bufferedAmount == 0)
    socket.send(getUpdateData());
    }, 50);
    };

    四、期盼已久的 HTTP/2.0

    目前主流的 HTTP/1.1 标准,自 1999 年发布的 RFC2616 之后再未进行过改订。SPDY 和 WebSocket 等技术纷纷出现,很难断言 HTTP/1.1仍是适用于当下的 Web 的协议。

    负责互联网技术标准的 IETF(Internet Engineering Task Force,互联网工程任务组)创立 httpbis(Hypertext Transfer Protocol Bis,HTTP (httpbis) - Documents 工作组,其目标是推进下一代 HTTP——HTTP/2.0 在 2014 年 11 月实现标准化。

    1 HTTP/2.0 的特点

    HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。由于基本上都会先通过 HTTP/1.1 与 TCP 连接,现在我们以下面的这些协议为基础,探讨一下它们的实现方法。

    • SPDY
    • HTTP Speed + Mobility
    • Network-Friendly HTTP Upgrade

    HTTP Speed + Mobility 由微软公司起草,是用于改善并提高移动端

    通信时的通信速度和性能的标准。它建立在 Google 公司提出的 SPDY与 WebSocket 的基础之上。

    Network-Friendly HTTP Upgrade 主要是在移动端通信时改善 HTTP 性能的标准。

    2 HTTP/2.0 的 7 项技术及讨论

    HTTP/2.0 围绕着主要的 7 项技术进行讨论,现阶段(2012 年 8 月 13日),大都倾向于采用以下协议的技术。但是,讨论仍在持续,所以不能排除会发生重大改变的可能性。HTTP Speed + Mobility 简写为 Speed + Mobility,Network-Friendly HTTP Upgrade 简写为 Friendly。

    v2-c322429490e30b3e7bb57981cb5c9818_b.jpg

    五、Web 服务器管理文件的 WebDAV

    WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。它作为扩展 HTTP/1.1的协议定义在 RFC4918。

    除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能。

    v2-1a556027848ffe233ea5c159af7b0ea4_b.jpg

    使用 HTTP/1.1 的 PUT 方法和 DELETE 方法,就可以对 Web 服务器上的文件进行创建和删除操作。可是出于安全性及便捷性等考虑,一般不使用。

    1 扩展 HTTP/1.1 的 WebDAV

    针对服务器上的资源,WebDAV 新增加了一些概念,如下所示。

    v2-10498c98ecbaa0a51f4c993e0b3828c9_b.jpg
    • 集合(Collection):是一种统一管理多个资源的概念。以集合为单位可进行各种操作。也可实现类似集合的集合这样的叠加。
    • 资源(Resource):把文件或集合称为资源。
    • 属性(Property):定义资源的属性。定义以“名称 = 值”的格式执行。
    • 锁(Lock):把文件设置成无法编辑状态。多人同时编辑时,可防止在同一时间进行内容写入。

    2 WebDAV 内新增的方法及状态码

    WebDAV 为实现远程文件管理,向 HTTP/1.1 中追加了以下这些方法。

    • PROPFIND :获取属性
    • PROPPATCH :修改属性
    • MKCOL :创建集合
    • COPY :复制资源及属性
    • MOVE :移动资源
    • LOCK :资源加锁
    • UNLOCK :资源解锁

    为配合扩展的方法,状态码也随之扩展。

    • 102 Processing :可正常处理请求,但目前是处理中状态
    • 207 Multi-Status :存在多种状态
    • 422 Unprocessible Entity :格式正确,内容有误
    • 423 Locked :资源已被加锁
    • 424 Failed Dependency :处理与某请求关联的请求失败,因此不再维持依赖关系
    • 507 Insufficient Storage :保存空间不足

    3 WebDAV实例

    (1)WebDAV 的请求实例

    下面是使用 PROPFIND 方法对 http://www.example.com/file 发起

    获取属性的请求。

    PROPFIND /file HTTP/1.1
    Host: Example Domain
    Content-Type: application/xml; charset="utf-8"
    Content-Length: 219
    <?xml version="1.0" encoding="utf-8" ?>
    <D:propfind xmlns:D="DAV:">
    <D:prop xmlns:R="http://ns.example.com/boxschema/">
    <R:bigbox/>
    <R:author/>
    <R:DingALing/>
    <R:Random/>
    </D:prop>
    </D:propfind>

    (2)WebDAV 的响应实例

    下面是针对之前的 PROPFIND 方法,返回

    http://www.example.com/file 的属性的响应。

    HTTP/1.1 207 Multi-Status
    Content-Type: application/xml; charset="utf-8"
    Content-Length: 831
    <?xml version="1.0" encoding="utf-8" ?>
    <D:multistatus xmlns:D="DAV:">
    <D:response xmlns:R="http://ns.example.com/boxschema/">
    <D:href>http://www.example.com/file</D:href>
    <D:propstat>
    <D:prop>
    <R:bigbox>
    <R:BoxType>Box type A</R:BoxType>
    </R:bigbox>
    <R:author>
    <R:Name>J.J. Johnson</R:Name>
    </R:author>
    </D:prop>
    <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    <D:propstat>
    <D:prop><R:DingALing/><R:Random/></D:prop>
    <D:status>HTTP/1.1 403 Forbidden</D:status>
    <D:responsedescription> The user does not have access to the </D:responsedescription>
    </D:propstat>
    </D:response>
    <D:responsedescription> There has been an access violation error.
    </D:responsedescription>
    </D:multistatus>
    展开全文
  • 3.旅游信息查询:该功能实际是在网页上插了一个百度地图容器,需要连接网络便可以查看,假如用户想知道自己的景点或者酒店在哪,就可以很方便的定位了。 4.酒店预订功能:该功能也在首页有所显示,管理员通过添加...
  • 导读:数据总线DBus的总体架构中主要包括六大模块,分别是:日志抓取模块、增量转换模块、全量抽取程序、日志算子处理模块、心跳监控模块、Web管理模块。六大模块各自的功能相互连接,构成DBus的工作原理:通过读取...

    导读:数据总线DBus的总体架构中主要包括六大模块,分别是:日志抓取模块、增量转换模块、全量抽取程序、日志算子处理模块、心跳监控模块、Web管理模块。六大模块各自的功能相互连接,构成DBus的工作原理:通过读取RDBMS增量日志的方式来实时获取增量数据日志(支持全量拉取);基于Logstash,flume,filebeat等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出。本文主要介绍的是DBus中基于可视化配置的日志结构化转换实现的部分。

    一、结构化日志的原理

    1.1 源端日志抓取

    DBus可以对接多种log数据源,例如:Logstash、Flume、Filebeat等。上述组件都是业界比较流行的日志抓取工具,一方面便于用户和业界统一标准,方便用户技术方案的整合;另一方面也避免了无谓的重复造轮子。抓取的数据我们称为原始数据日志(raw data log),由抓取组件将其写入Kafka中,等待DBus后续处理。

    1.2 可视化配置规则,使日志结构化

    用户可自定义配置日志源和目标端。同一个日志源的数据可以输出到多个目标端。每一条“日志源-目标端”线,用户可以根据自己的需要来配置相应的过滤规则。经过规则算子处理后的日志是结构化的,即:有schema约束,类似于数据库中的表。

    1.3 规则算子

    DBus设计了丰富易用的算子,用于对数据进行定制化操作。用户对数据的处理可分为多个步骤进行,每个步骤的数据处理结果可即时查看、验证;并且可重复使用不同算子,直到转换、裁剪出自己需要的数据。

    1.4 执行引擎

    将配置好的规则算子组应用到执行引擎中,对目标日志数据进行预处理,形成结构化数据,输出到Kafka,供下游数据使用方使用。系统流程图如下所示:

    1de5d1fefaf52cf7d27934cbe04c315e.png

    根据DBus log设计原则,同一条原始日志,可以被提取到一个或多个表中。每个表是结构化的,满足相同的schema约束。

    • 每个表是一个规则算子组的集合,每个表可以拥有1个或多个规则算子组;
    • 每个规则算子组,由一组规则算子组合而成,每个算子具有独立性;

    对于任意一条原始数据日志(raw data log),它应该属于哪张表呢?

    假如用户定义了若干张逻辑表(T1,T2…),用于抽取不同类型的日志,那么,每条日志需要与规则算子组进行匹配:

    • 进入某张表T1的所有规则算子组的执行过程
    • 符合条件的进入规则算子组,并且被执行引擎转换为结构化的表数据
    • 不符合提取条件的日志尝试下一个规则算子组
    • 对于T1的所有规则算子组,如果都不满足要求,则进入下一张表T2的执行过程,以此类推
    • 如果该条日志不符合任何一张表的过滤规则,则进入_unknown_table_表
    ca4e9c6858ea9543153d31a5f213ae2f.png

    例如,对于同一条应用日志,其可能属于不止一个规则组或Table,而在我们定义的规则组或Table中,只要其满足过滤条件,该应用日志就可以被规则组提取,即保证了同一条应用日志可以同属于不同的规则组或Table。

    5908c4c01a92c9ad8207a4dfbad4d413.png

    规则算子是对数据进行过滤、加工、转换的基本单元。常见的规则算子如上图所示。

    算子之间具有独立性,算子之间可以任意组合使用,从而可以实现许多复杂的、高级的功能,通过对算子进行迭代使用,最终可以实现对任意数据进行加工的目的。用户可以开发自定义算子,算子的开发非常容易,用户只要遵循基本接口原则,就可以开发任意的算子。

    二、DBus日志处理实例

    以DBus集群环境为例,DBus集群中有两台机器(即master-slave)部署了心跳程序,用于监控、统计、预警等,心跳程序会产生一些应用日志,这些应用日志中包含各类事件信息,假如我们想要对这些日志进行分类处理并结构化到数据库中,我们就可以采用DBus log程序对日志进行处理。

    DBus可以接入多种数据源(Logstash、Flume、Filebeat等),此处以Logstash为例来说明如何接入DBus的监控和报警日志数据。

    a2af1c8a36e9bfa77b0c38076e07e64e.png

    由于在dbus-n2和dbus-n3两台机器上分别存在监控和预警日志,为此我们分别在两台机器上部署了Logstash程序。心跳数据由Logstash自带的心跳插件产生,其作用是便于DBus对数据进行统计和输出,以及对源端日志抽取端(此处为Logstash)进行预警(对于Flume和Filebeat来说,因为它们没有心跳插件,所以需要额外为其定时产生心跳数据)。Logstash程序写入到Kafka中的数据中既有普通格式的数据,同时也有心跳数据。

    这里不只是局限于2台部署有Logstash程序的机器,DBus对Logstash数量不做限制,比如应用日志分布在几十上百台机器上,只需要在每台机器上部署Logstash程序,并将数据统一抽取到同一个Kafka Topic中,DBus就能够对所有主机的数据进行数据处理、监控、预警、统计等。

    2.1 启动Logstash

    在启动Logstash程序后,我们就可以从topic : heartbeat_log_logstash中读取数据,数据样例如下:

    1)心跳数据

    07773fb3a014e3e28879b5a9db72e932.png

    2)普通日志数据

    ba67d3c7eae3960bc93153aa4ae25bb4.png

    2.2 配置规则

    接下来,我们只需要在DBus Web中配置相应的规则就可以对数据进行处理了。

    首先新建一个逻辑表sink_info_table,该表用来抽取sink事件的日志信息,然后配置该表的规则组(一个或多个,但所有的规则组过滤后的数据需要满足相同schema特性),heartbeat_log_logstash作为原始数据topic,我们可以实时的对数据进行可视化操作配置(所见即所得,即席验证)。

    5e1a0cd4730f5274aee8f3888781a88d.png

    1)读取原始数据日志

    821653a2267e6b906e3ea5369eb7e4e7.png

    可以看到由Logstash预先提取已经包含了log4j的基本信息,例如path、@timestamp、level等。但是数据日志的详细信息在字段log中。由于不同的数据日志输出是不一样的,因此可以看到log列数据是不同的。

    2)提取感兴趣的列

    假如我们对timestamp、log 等原始信息感兴趣,那么可以添加一个toIndex算子,来提取这些字段:

    384261e13da197ea88fcf09e982504f3.png

    这里需要指出,我们考虑使用数组下标方式,是有原因的: - 并不是所有列本身自带列名(例如flume抽取的原始数据,或者split算子处理后的数据列); - 下标方式可以使用数组方式指定列(类似python方式, 例如:1:3表示1,2列); 因此后续操作全部基于数组下标方式访问。

    执行规则,就可以看到被提取后的字段情况:

    36f8da92f0fa724af8a2fcf5870d1924.png

    3)过滤需要的数据

    在这个例子中,我们只对含有“Sink to influxdb OK!”的数据感兴趣。因此添加一个filter算子,提取第7列中包含”Sink to influxdb OK!”内容的行数据:

    f31896cd50ffd847d897f9d1aab55e65.png

    执行后,只有符合条件的日志行数据才会存在。

    0cd64d895e0d919f5a7943639621d59e.png

    4)对特定列进行提取

    添加一个select算子,我们对第1和3列的内容感兴趣,所以对这两列进行提取。

    7bdc57060537c8c7ee10ef3197aca965.png

    执行select算子,数据中就会只含有第1和3列了。

    c083c4e58fcbcbabd0c36894d8c52661.png

    5)以正则表达式的方式处理数据

    我们想从第1列的数据中提取符合特定正则表达式的值,使用regexExtract算子对数据进行过滤。正则表达式如下:http_code=(d*).*type=(.*),ds=(.*),schema=(.*),table=(.*)s.*errorCount=(d*),用户可以写自定义的正则表达式。

    5d9c38ad3f0e262dfabf2ee7f0fa8eb9.png

    执行后,就会获取正则表达式执行后的数据。

    eb7214be3ed54dd7a41dc9c6d41d26ca.png

    6)选择输出列

    最后我们把感兴趣的列进行输出,使用saveAs算子, 指定列名和类型,方便于保存在关系型数据库中。

    cfb18f2ad294e17b4b126b22222ec42e.png

    执行saveAs算子后,这就是处理好的最终输出数据样本。

    b765bb993d2cfd0a363733949a7a44b0.png

    2.3 查看结构化输出结果

    保存上一步配置好的规则组,日志数据经过DBus执行算子引擎,就可以生成相应的结构化数据了。目前根据项目实际,DBus输出的数据是UMS格式,如果不想使用UMS,可以经过简单的开发,实现定制化。

    注:UMS是DBus定义并使用的、通用的数据交换格式,是标准的JSON。其中同时包含了schema和数据信息。更多UMS介绍请参考DBus开源项目主页的介绍。开源地址:https://github.com/bridata/dbus

    以下是测试案例,输出的结构化UMS数据的样例:

    a44ac89044490d227f204c3a2bea8e03.png

    2.4 日志监控

    为了便于掌握数据抽取、规则匹配、监控预警等情况,我们提供了日志数据抽取的可视化实时监控界面,如下图所示,可随时了解以下信息:

    • 实时数据条数
    • 错误条数情况(错误条数是指:执行算子时出现错误的情况,帮助发现算子与数据是否匹配,用于修改算子,DBus同时也提供了日志回读的功能,以免丢失部分数据)
    • 数据延时情况
    • 日志抽取端是否正常
    cc56d54c4bfbeeddec46b0bc6876fc8d.png

    监控信息中包含了来自集群内各台主机的监控信息,以主机IP(或域名)对数据分别进行监控、统计和预警等。

    监控中还有一张表叫做_unkown_table_ 表明所有没有被匹配上的数据条数。例如:Logstash抓取的日志中有5种不同事件的日志数据,我们只捕获了其中3种事件,其它没有被匹配上的数据,全部在_unkown_table_计数中。

    adf257c53595c9f1f9ef7dbb66660e4f.png

    DBus同样可以接入Flume、Filebeat、UMS等数据源,只需要稍作配置,就可以实现类似于对Logstash数据源同样的处理效果,更多关于DBus对log的处理说明,请参考:

    • https://bridata.github.io/DBus/install-logstash-source.html
    • https://bridata.github.io/DBus/install-flume-source.html
    • https://bridata.github.io/DBus/install-filebeat-source.html

    应用日志经过DBus处理后,将原始数据日志转换为了结构化数据,输出到Kafka中提供给下游数据使用方进行使用,比如通过Wormhole将数据落入数据库等。具体如何将DBus与Wormhole结合起来使用,请参考:如何设计实时数据平台(技术篇)。

    作者:仲振林

    展开全文
  • Java 开发者常会运用的 JDK?...几个源代码管理工具是开发设计团队首要采用的? Java 开发人员首要应用几个测试技术? Java 程序员应用程序中会采用几个非 JVM 语言? 几个 Web 框架是 Java 开发人
  • 它支持所有主要的开发语言,脚本和工具,而无论它们处在一个开发平台,它还把许多软件开发程序集成一起以便集中构建,并且能多项目、多团队之间对发布进行管理。已有的脚本和正在使用的开发工具可以很好地与...
  • 5.12 调度和资源管理工具 163 5.12.1 Oracle调度程序 163 5.12.2 数据库资源管理器 163 5.13 自动数据库管理 163 5.13.1 ADDM 163 5.13.2 自动撤销保留调优 164 5.13.3 自动优化程序统计数据收集 164 ...
  • (如果你用的和我一样 也是 <em>cli-2</em> 那么不需要如此新的 <em>nodeJs</em> )你可以使用 <em>nvm</em> 或 <em>nvm-windows</em> 同一台电脑中管理多个 <em>Node</em> 版本。 不讲原理了,官网比我讲的...
  • 2、调整管理员后台记录显示为多重条件显示,按照上机时间降序,节次降序,机号升序显示,这样按照机号顺序可以及时查看台机器未提交记录。 --== 微机室上机记录管理系统 V1.2 ==-- 程序更新(2010年5月25日) ...
  • CRM客户销售管理软件B/S

    热门讨论 2012-08-09 15:56:22
    同时每个用户的销售管理平台都是一套独立的系统,都安装用户自己的服务器上,客户资料和销售信息都保存自己的服务器上,从根本上保证了数据信息的安全。 用户把平台安装自己的服务器上后,可以自由分配帐号...
  • 我什么也没改,清理几次项目,打开关闭vs,重新生成,暂时可以了,每次我都是这样解决,但是不知道根本原因在哪。 先继续干活吧,等一会数据调通了,根据那位同学的建议把那些工具类的代码新建一个项目,生成dll,...
  • 我们感到有些遗憾(例如,为用户提供重要的工具选择,框架之间协调项目配置...),但是,您仍然可以放心使用正式的CLI工具,例如他们是一个伟大的项目,为开发经验和Web优化而走得更远。 Fountain Vue.js 2生成器 ...
  • 我们感到有些遗憾(例如为用户提供重要的工具选择,框架之间协调项目配置...),但是,您仍然可以放心使用正式的CLI工具,例如他们是一个伟大的项目,为开发经验和Web优化而走得更远。 喷泉React发电机 这个...
  • 首先先说一下 大概有几个模块 创建一个pom项目 用来管理jar包的 也相当于是parent父工程 其他的就是interface service web 也可以自己再创建一个common存放工具类的工程 parent父工程是pom类型 webweb类型...
  • .Net 学习

    2019-07-15 14:14:23
    绝对的万金油,核心js只有50K,占用带宽小,门户网站、管理系统,用在哪都可以。2. jQuery是对js底层dom操作封装最薄的一个框架,没有大量的专有对象,多为提供函数进行dom操作。准确的说,它不是偏...
  • 遇到一个问题,我们选择webshell上传,但是上传我们需要一个我们能进行web访问的路径,但是路径在哪找呢? --------我们可以通过查看页面中的图片属性,然后来进行web路径的寻找。通过F12源码审查,我们可以获取到...
  • 我有时候想,如果一天这个软件涨价了,昂贵的使管理层不愿意购买了,或者到了一个新环境不用这个软件了,如何搭建后端服务的测试框架呢?经过一段时间的研究,发现Apache HTTPClient很适合作为Web服务调用的工具...
  • HTML-CSS回顾-源码

    2021-02-17 13:06:39
    无论您使用种编程语言,每个开发人员每天都会使用两种工具:命令行和版本控制。 命令行允许开发人员快速有效地与其操作系统和软件进行交互。 首先,我们将使用命令行浏览文件树并创建目录和文件。 稍后,我们将...
  • 无论是工作还是学习,Mac都是一款值得拥有的工具,另外Mac上还有很多优质的软件。它们的功能强大,能使你的Mac 如虎添翼 ...这是Mac平台上一款功能强大的GTD任务管理,Omnifocus将各种功能结合一起,成
  • asp.net知识库

    2015-06-18 08:45:45
    ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! 将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 ...
  • 现在负责美团 App 的 iOS 和 Android 平台业务和技术,我是如何管理的,如何理解客户端的技术,客户端的技术点是什么,Web大前端中作用是什么呢。 实录提要: RN 的方案不用,现在用什么方案,会考虑weex不...
  • 这个工具设计的初衷是为了更加方便的对多台服务器进行docker管理台服务器上有些什么容器和镜像一目了然。减少平时工作中切换登录不同服务器和执行命令的时间,提高工作效率。同时也为不熟悉docker的人提供帮助,...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧4.27 使用Ctrl+PgUp键和Ctrl+PgDn键在工具窗口组中的各个工具窗口间导航 90 4.2.6 隐藏状态 91 技巧4.28 自定义单击X按钮时对工具窗口或工具窗口选项卡组的操作 91 4.2.7 隐藏的键盘快捷键 92 技巧4.29...
  • C#微软培训资料

    2014-01-22 14:10:17
    超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以...
  • 软件测试经典面试题 (超实用)

    热门讨论 2012-02-16 13:48:08
    59、测试工具在测试工作中是什么地位? 18 60、什么是软件测试,软件测试的目的? 18 61、简述负载测试与压力测试的区别。 19 62、写出bug报告流转的步骤,每步的责任人及主要完成的工作。 19 63、写出bug报告当中...
  • ✅ mypassword:一款根据熟悉问题产生的易记且超强密码的生成工具、管理工具。演示用户:13510920000,密码:123456 ✅ 中国诗人:一款收录80万首,远古、古代、当代、近现代的古诗网站,支持用户上传创作诗词 ✅ ...
  • Spring面试题

    2015-05-06 07:19:39
    代码中不直接与对象和服务连接,但配置文件中描述一个组件需要一项服务。容器( Spring 框架中是 IOC 容器) 负责将这些联系一起。 典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

web管理工具在哪