<div id="88wrq"></div>
<dl id="88wrq"></dl>
<sup id="88wrq"><menu id="88wrq"><small id="88wrq"></small></menu></sup>
<dl id="88wrq"></dl>
<em id="88wrq"></em>
<sup id="88wrq"></sup>

<dl id="88wrq"><ins id="88wrq"></ins></dl>

    <div id="88wrq"></div>

      <sup id="88wrq"></sup>
      <sup id="88wrq"><menu id="88wrq"></menu></sup>

      <dl id="88wrq"></dl>

          <sup id="88wrq"><menu id="88wrq"></menu></sup>

            <div id="88wrq"></div><sup id="88wrq"></sup>
            <em id="88wrq"></em>
            <dl id="88wrq"></dl>

            <em id="88wrq"></em>

              <em id="88wrq"><ol id="88wrq"></ol></em>
              <sup id="88wrq"></sup><div id="88wrq"></div>

              <dl id="88wrq"><ins id="88wrq"><small id="88wrq"></small></ins></dl>

              百度关键词
              7*24小时咨询电话
              4000-340-360
              专业网站优化 专业百度优化 专业关键词优化
              最新加盟NEWS
              CENTER
              您当前位置:易达网络科技公司 >> 百度排名 >> 百度关键词 >> 浏览文章

              正文 1、 监控体系架构 经历了很多公司,监控体系也许都是从无到有,该经历的也都经历了。所谓监控体系,也许的架构如下: ◆在服务器布置一个Agent,它负责采集数据; ◆由网上转发到一个分布式管道再转接,就像搭积木一样; ◆进行汇总;之后把监控数据分两个部分 ●一是数据库存储,重要做监控数据展示和后续排查题目。 ●二是制订许多的监控的报警项。 做一些简单的,像CPU超过9......

              案例艺龙十万级服务器监控体系开发的架构和心得

              发布时间:2019年04月19日 标签:案例,十万,服务,服务器,监控,系统,系统开发,开发 浏览

              正文

              1、 监控体系架构

              经历了很多公司,监控体系也许都是从无到有,该经历的也都经历了。所谓监控体系,也许的架构如下:

              ◆在服务器布置一个Agent,它负责采集数据;

              ◆由网上转发到一个分布式管道再转接,就像搭积木一样;

              ◆进行汇总;之后把监控数据分两个部分

              ●一是数据库存储,重要做监控数据展示和后续排查题目。

              ●二是制订许多的监控的报警项。

              做一些简单的,像CPU超过90%就会报警;还有一些复杂的,像60秒之内超过两次。后来?#19981;?#25903;撑一些集群类的报警监控。这个模块也是很简单,它重要就是在若干的文件的公式,然后进行监控数据的判断,判断之后发现了非常,就会产生一些新闻,然后上一个模块。我们只是进行判断,不进行报警。之后会有一个模块进行各种后端的报警,像如今一些公司 有微信报警、短信报警等等的,都在这部分支撑。

              ◆存储部分

              豆瓣、百度、360等等,后端琐碎的事比较多,但是也?#34892;ySQL的。现实上这部分也很简单,可以认为是一个分布式的Linux,就?#21069;?#19968;些数据往文件数据库里传,上面是一个WEB端。以上是也许架构。

              2、 设计思路

              ◆每一个模块就干一件事,把这件事干得邃密和良好。

              ●之后会细化一下模块里的详细内容。

              ●要scalable,flexible,可以?#25105;?#27178;向扩展,适应各种防火墙ACL。

              ●在360的时候机房比较多,各种防火墙的ACL特别很是多,360下还?#34892;?#22810;子公司,会出现各种访问的征象。要适应各种体系,就会通过一些模块?#35789;?#24212;。

              ◆看重代码?#20174;謾?/p>

              一套体系除去网络框架,每个模块的代码都在100行,而且是C语言写的。我们最后把这个网络框架都做在了一个网络库,这个是多线程的。

              3、 这个体系面临什么难点?

              技术量。

              就艺龙而言如今体系规模较小,天天产生160GB,360是500GB/天,百度脱离太久?#21496;?#19981;清楚了。这个数据量?#31449;?#31245;微比较大的,就是这个体系是人为造的DDoS体系,每个监控端采集项目,我们在艺龙比较少,这种比较少,每个服务器上监控项也许二百多个,默?#31995;?#39057;率是5秒钟一次的采集点。可以?#24471;?#31186;钟也许有40多条数据的采集。

              这个体系基本上不能做Cache,必须实时运算。由于服务器监控体系,我们做服务端应该都知道,耽误报警,还不如不报。报警一旦出了题目,就要尽可能快的把这个东西报出来。除非是一些不可控的因素,如短信网关,或者运营商短信发送耽误等。结论是,90%都要在15秒之内保证大家?#21482;?#33021;收到。这对我们在各?#21482;?#33410;下尽量削减各种各样的耽误什么的提出?#32454;?#30340;要求,换言之,高可用。这种监测体系作为一种服务器的基础架构存在,可用性必须比线?#32454;擼?#30001;于它发挥最大作用的时候都是公司出了大题目的时候,这个时候必须要扛的住各种各样的网络情况,把真实的情况反馈过来。?#26434;?#36825;种线?#31995;目?#29992;性要求高于线上服务至少一个数量级。像CPU?#26377;?次90%不报警,假如我们这个数据里有任何丢点,可能会导致报警报不出来。因而?#26434;?#25968;据的完备性要求也是比?#32454;?#30340;。就是在任?#25105;?#20010;模块宕机或者网络隔离,这种情况下也不许可出现任何的丢失。

              高吞吐。

              由于这个体系是典型的写的比较多,读特别很是特别很是随机的过程。读取决于大家对数据项的查看,汇总,画图的需求。所以基本上一个月之内的数据必要随时的调出来。高吞吐也是我们面临的重要题目。

              多平台。

              百度用的是Linux,Windows用的比较少。百度的挑衅在于机器比较多,像千分之一的情况在百度基本天天能出个一百台。之前我们同事做过一个分享,就是说一些经验。在服务器吞吐量分外大的时候,千分之一的情况也要考虑。360是FreeBSD。艺龙是Windows,大约占服务器的?#35805;搿?/p>

              4、解决方案

              针对数据量,HBase,自定义协议削减Overhead。数据量这个题目不大,用的技术在于说,监控数据的传输,根据一些私有的协议,也是一些历史缘故原由,当时用Json许多。也尝试过用别的,但是对监控体系偶然候,比如出丢点,像追的时候Json可以,用别的就追不上了。

              高实时。对等多线程异步非壅塞、实时计算、长连接。我们这个体系不能用一些很高耽误的东西,比如说卡罗普你想都不用想了,还有像如今比较火的流式体系,所以也没有采用。

              高可用。我们这个体系不能有单点,而且有一个要求,你是统一个机房,不能降级。就是假如这个机房停电了,这个机房不监控也罢,但是你得知道它停电了。但是剩下的机房必须保证监控没有受到任何影响,而?#19968;?#35201;保证15秒这个事。这是我发明的词,“惰性智能选路”这个其实也很简单,什么叫惰性呢?像网络挂了,连不上了,我们Agent可以连到别的上,这个很简单,就是我们想办法让Agent?#30431;?#30693;道有这个的存在,我们不用DS传统体例。我们启动的时候,或者哪儿出了题目,我们拿到另外一个连,这个策略特别很是简单,但是这个东西作为一个接口,曩昔的Agent,因为网络断了会试下一个,就是最终会迁移到离它最近的,网络状态最好的,就是很默契的达到智能,而不?#27599;?#34385;它跟谁连接。同样的,下流往上游发的时候也是用的响应策略。还有高可用,我们要保证这个数据不能丢。就是有一点必须要保证,就是这个监控数据因为第一手拿到的都是本机的一些Agent,这个Agent必须保证数据到了让报警的那个模块拿到。我们这个就是Agent拿到这个数据之后,翻译的这个模块只会进行转发,上面的收到确认之后传曩昔,最后再给。保证这个数据肯定到了上游。因为这种东西的强保证,所以说?#19981;?#23548;致性能?#31995;?#22256;?#24120;?#23601;是说我们要保证数据不丢,又要保证高性能,这后面我们再说这个是怎么做的。

              高吞吐。cache,?#31449;蒫ache。没有什么好说的,觉得一样平常cache能解决的高并发都不是难点。

              多平台。当时我们做这个的时候golang还没出来,所以都是用的C++。时间计数器一出题目什么都出了题目,时钟不好了,准时器到计算性能全都完蛋,Windows是一个特别很是坑的平台,后来幸亏有了golang,避免了Agent只能找特别很是厉害的人写的局限。

              5、 如何优化性能?

              zlib流式?#39038;?/strong>

              这个写起来没那么好弄,但是听起来挺简单的。

              pipeline滑动窗口

              ●之前说从Agent采集到数据,经过层层模块转发,如许就会导致请求和回应的耽误会特别很是大,在大耽误的情况下怎么保证高吞吐量,于是发数据的时候,比如在翻译模块都是进行批量转发,那边回一个Ok。工程师说,在应用层又造了一个TTP,这个东西比较无聊。

              协议改造,Protobuf

              数据合并

              function-filter优化,当时优化也走了许多弯路:

              ●profiler,如今CPU举动不是教科书里说的那些东西,如今CPU的架构系统不是常人能理解的了。我们的想法是各种都去尝试,最终选择好用的。

              ●分布式改造,这个容易降低速度,最终没有再尝试。

              6、走过弯路的感想

              所谓简洁即可靠,我们曾经做这种东西的时候,就是关于数据转发和怎么弄曾经做了一些版本,也走了一些弯路,慢慢发现搞的越复杂坑越多,分外是在限定要求分外高的情况下,最后返璞归真,赓续优化,出来的就是每个模块极其简单,感觉就是分布式管道,都可以在linux体系里?#19994;?#24433;子。做到简洁,由于有的模块,我们写代码都知道,从产品来看,就是从这儿到那儿。写代码假如在设计?#32454;?#26434;化,许多东西都绕,?#24433;?#21152;点也不肯定能搞晓畅。因此如今艺龙考虑的就是从简洁出发,不要搞复杂的东西。

              结语:十万级服务器监控体系开发架构尚可继?#22411;?#32654;,愿来日更上一层楼。

              关于作者:

              王鹏程艺龙技术架构总监曾于实习期间加入豆瓣,后在Baidu从事主动化运维开发,参与了Baidu运维主动化从无到有的过程。后加入360,负责过360运维主动化平台的架构设计及框架开发,从零开始负责构建了360天机、360流量卫士等移动端产品。擅长服务端、Android底层、分布式体系开发。

              上一篇:网站SEO优化过程中应避免这六大题目
              下一篇:CSS代码重构与优化之路
              百度关键词 技术咨询:4000-340-360   24小时服务热线:4000-340-360
              企业QQ: 4000340360   邮 箱:[email protected]
              Copyright 2005-2015  by 易达网络 all rights reserved
              分部地 址?#20309;?#22346;市奎文区虞河路与玉清街交叉口锦绣苑  邮 编:261000
              天津11选5前三走势图

              
              

              <div id="88wrq"></div>
              <dl id="88wrq"></dl>
              <sup id="88wrq"><menu id="88wrq"><small id="88wrq"></small></menu></sup>
              <dl id="88wrq"></dl>
              <em id="88wrq"></em>
              <sup id="88wrq"></sup>

              <dl id="88wrq"><ins id="88wrq"></ins></dl>

                <div id="88wrq"></div>

                  <sup id="88wrq"></sup>
                  <sup id="88wrq"><menu id="88wrq"></menu></sup>

                  <dl id="88wrq"></dl>

                      <sup id="88wrq"><menu id="88wrq"></menu></sup>

                        <div id="88wrq"></div><sup id="88wrq"></sup>
                        <em id="88wrq"></em>
                        <dl id="88wrq"></dl>

                        <em id="88wrq"></em>

                          <em id="88wrq"><ol id="88wrq"></ol></em>
                          <sup id="88wrq"></sup><div id="88wrq"></div>

                          <dl id="88wrq"><ins id="88wrq"><small id="88wrq"></small></ins></dl>

                          
                          

                          <div id="88wrq"></div>
                          <dl id="88wrq"></dl>
                          <sup id="88wrq"><menu id="88wrq"><small id="88wrq"></small></menu></sup>
                          <dl id="88wrq"></dl>
                          <em id="88wrq"></em>
                          <sup id="88wrq"></sup>

                          <dl id="88wrq"><ins id="88wrq"></ins></dl>

                            <div id="88wrq"></div>

                              <sup id="88wrq"></sup>
                              <sup id="88wrq"><menu id="88wrq"></menu></sup>

                              <dl id="88wrq"></dl>

                                  <sup id="88wrq"><menu id="88wrq"></menu></sup>

                                    <div id="88wrq"></div><sup id="88wrq"></sup>
                                    <em id="88wrq"></em>
                                    <dl id="88wrq"></dl>

                                    <em id="88wrq"></em>

                                      <em id="88wrq"><ol id="88wrq"></ol></em>
                                      <sup id="88wrq"></sup><div id="88wrq"></div>

                                      <dl id="88wrq"><ins id="88wrq"><small id="88wrq"></small></ins></dl>