秒速赛车京东前端:PhantomJS 和NodeJS在网站前端监
秒速赛车技巧-秒速赛车规律_官网-秒速赛车走势图
当前位置:主页 > 秒速赛车技巧 > 正文

秒速赛车京东前端:PhantomJS 和NodeJS在网站前端监

  4 月 23 日,TGO 鲲鹏会上海分会会员,贝壳金控高级架构总监赵文乐作为 TGO 鲲鹏会线上分享第六季的嘉宾,以直播的形式分享了服务治理的范围及原因、服务拆分和治理的原则,以及 Spring Cloud 的服务治理等内容。本文根据当天直播内容整理。

  4 月 23 日,TGO 鲲鹏会上海分会会员,贝壳金控高级架构总监赵文乐作为 TGO 鲲鹏会线上分享第六季的嘉宾,以直播的形式分享了服务治理的范围及原因、服务拆分和治理的原则,以及 Spring Cloud 的服务治理等内容。本文根据当天直播内容整理。

  AI前线;

  以语音媒介的对话式交互技术是听得懂、讲得出的核心技术。本系列的前四篇文章将围绕着这一技术,由浅入深地讲述相关专业知识和对话技能建设实战。后四篇,将在对话式交互技术的基础上,讲述智能家居的相关技术和实战。相信学习完本系列的读者,可以对对话式交互与智能家居这个领域的相关技术和发展,有非常清晰的认知,甚至入门,更希望有读者能因此而入行,成为我们的战友和同行。

  京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践

  京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践

  GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

  亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知。

  通常在一个大型的 Web 项目中有很多监控系统,比如后端的服务 API 监控,接口存活、调用、延迟等监控,这些一般都用来监控后台接口数据层面的信息。而且对于大型网站系统来说,从后端服务到前台展示会有很多层:内网 VIP、CDN 等。

  但是这些监控并不能准确地反应用户看到的前端页面状态,比如:页面第三方系统数据调用失败,模块加载异常,数据不正确,空白开天窗等。

  PhantomJS 是一个基于 webkit 的 JavaScript API。它使用 QtWebKit 作为它的核心浏览器,使用 webkit 来编译解释执行 JavaScript 代码。任何你可以在基于 webkit 浏览器做的事情,它都能做到。

  它不仅是个隐形的浏览器,提供了诸如 CSS 选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG 等,同时也提供了处理文件 I/O 的操作,从而使你可以向操作系统读写文件等。PhantomJS 的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。

  做自动化测试的同学肯定都知道 Selenium。可以使用 Selenium 将测试用例在浏览器中执行,而且 Selenium 对各种平台和常见浏览器支持比较好,但是 Selenium 上手难度系数略高,而且使用Selenium 需要在服务器端安装浏览器。

  考虑到监控主要任务在监控不在测试。系统并不需要太多考虑兼容性,而且监控功能相对单一,主要对页面进行功能上的回归测试,所以选择了 PhantomJS。

  处理器 类似编程语言中的操作符:大于、大于等于、小于、小于等于、等于、正则。

  这样做的好处就是,录入规则的人只要了解一点 DOM 选择器的知识就可以上手操作了,在我们内部通常是交由测试工程师统一完成规则的录入。

  这个功能需要对应的前端工程师在代码中调用错误上报 API,来主动提交错误信息。主要使用的场景有,页面异步服务延时无响应、模块降级兜底主动通知等。监控脚本提供几个简单的 API 来完成这项任务。

  // error 方法调用后立即上报错误信息并发出邮件、短信通知 errorTracker.error(错误描述) // info 方法调用后立即上报信息,并在单位时间内仅仅产生一条邮件、短信通知信息描述) // log 方法调用后由报错检测是否达到设置阀值,最终确认是否报错 errorTracker.log(日志信息)

  由于京东很多页面内容是异步加载的,像首页、单品等系统有许多第三方异步接口调用,使用后端程序抓取到的页面数据是同步的,并不能取到动态的 JavaScript 渲染的数据,所以就必须使用像 PhantomJS 这种能模拟浏览器的工具。

  常规监控我们使用 PhantomJS 模拟浏览器打开页面进行抓取,然后将监控规则解析成 JavaScript 代码片段执行收集结果。

  这和 PhantomJS 的性能是密不可分的,由多次实践发现,PhantomJS 并不能很好地进行并发处理,当并发过多,会导致 CPU 过载,从而导致机器宕机

  在本机环境下的虚拟机中进行并发测试,数据并不理想,极限基本在 ab -n 100 -c 50 左右。 所以为了防止并发导致的问题,就选择了使用类消息队列来避免因为并发过高导致的服务不可用。

  我们这里通过调用内部的分布式缓存系统生成类消息队列,队列的生成其实可以参考数据接口队列。最基本的模型就是在缓存中创建一个 KEY ,然后根据队列数据结构的模式进行数据的插入和提取。

  当然,类消息队列的中间介质可根据你实际的条件来选择,当然你也可以使用本机内存实现。这可能会导致应用和类消息队列竞争内存。

  对于此系统部署是分为两大块进行的。因为机器资源数量有限,没有将所有部分都单独部署。

  规则管理系统以及规则队列生成器和持续处理器整合部署在一台机器上,PhantomJS服务部署在了其他的机器上。进程管理使用了著名的PM2。这样就可以避免自己在开发类似的部署功能。PM2 是一个带有负载均衡功能的NodeJS应用的进程管理器。可充分利用CPU,并保证进程永远都存活。

  其实我们现在开发的这套监控系统并不复杂,只是合理的运用了一些现有的技术框架。抽象出来我们自己需要的一些功能。但却有效的达到了我们的预期功能,并且节省了很多之前需要人肉测试的时间成本。系统本身还有很多问题在待解决状态,比如报警系统的规则处理与阀值设定,JavaScript报错的准确过滤机制等,这些问题我们都会一一解决,并且未来的前端监控系统会成为一个平台,核心服务在后端爬取页面服务,应用端可以有多种形式,比如监控、测试工具等。

  监控系统虽然在应用层面进行了垂直划分,但是由于机器资源等限制,秒速赛车并没有进行单独功能的部署。这点可能会在后期的使用中进行优化。因为现在仅仅提供给本部门使用。

  PhantomJS服务还需要进一步优化,以承载大并发,大处理量。提供成稳定的服务。协同开发业务线和测试业务线制定统一的规范,以达到优化的监控。

  报警由于依赖于公司内部的UMP系统,所以并不是特别灵活,每次系统接入都需要用户去UMP系统接入。

  给InfoQ中文站投稿或者参与内容翻译工作,请邮件至也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

  bywang hengNodeJS 是一个 JavaScript 运行环境,非阻塞 I/O 和异步、事件驱动,这几点对于我们构建基于 DOM 元素的监控是非常重要的。并且 NodeJS 支持非组塞 I/O 和异步、事件驱动,这点对于我们构建基于 DOM 元素的监控是比较重要的。

  by尾 尾感谢您的反馈!文章调整结构时造成了这个错误,已经修改。由于本人的失误给您造成了不好的体验,非常抱歉。

  by翟 冲写的不错,不过对selenuim必须要启动一个browser的看法有点片面

版权保护: 本文由 主页 原创,转载请保留链接: http://www.ecentiv.com//html/559.html