加强网站建设说明报告范文Wordpress二次开发多少钱

web/2025/9/28 2:38:53/文章来源:
加强网站建设说明报告范文,Wordpress二次开发多少钱,农业门户网站开发,百宝图建设工程电子网站目录 前言 一、问题的出现#xff1f; 二、一体化架构中的慢请求排查如何做 三、分布式 Trace原理 四、如何来做分布式 Trace 前言 在分布式服务架构下#xff0c;一个 Web 请求从网关流入#xff0c;有可能会调用多个服务对请求进行处理#xff0c;拿到最终结果。这个…目录 前言 一、问题的出现 二、一体化架构中的慢请求排查如何做 三、分布式 Trace原理 四、如何来做分布式 Trace 前言 在分布式服务架构下一个 Web 请求从网关流入有可能会调用多个服务对请求进行处理拿到最终结果。这个过程中每个服务之间的通信又是单独的网络请求无论请求经过的哪个服务出了故障或者处理过慢都会对前端造成影响。 处理一个Web请求要调用的多个服务为了能更方便的查询哪个环节的服务出现了问题现在常用的解决方案是为整个系统引入分布式链路跟踪。 一、问题的出现 通过监控发现系统的核心下单接口在晚高峰的时候会有少量的慢请求用户也投诉在 APP 上下单时等待的时间比较长。而下单的过程可能会调用多个RPC 服务或者使用多个资源一时之间你很难快速判断究竟是哪个服务或者资源出了问题从而导致整体流程变慢于是你和你的团队开始想办法如何排查这个问题。 二、一体化架构中的慢请求排查如何做 因为在分布式环境下请求要在多个服务之间调用所以对于慢请求问题的排查会更困难我们不妨从简单的入手先看看在一体化架构中是如何排查这个慢请求的问题的。 最简单的思路是打印下单操作的每一个步骤的耗时情况然后通过比较这些耗时的数据找到延迟最高的一步然后再来看看这个步骤要如何的优化。如果有必要的话你还需要针对步骤中的子步骤再增加日志来继续排查简单的代码就像下面这样 long start System.currentTimeMillis(); processA(); Logs.info(process A cost (System.currentTimeMillis() - start));// 打印 A 步 start System.currentTimeMillis(); processB(); Logs.info(process B cost (System.currentTimeMillis() - start));// 打印 B 步 start System.currentTimeMillis(); processC(); Logs.info(process C cost (System.currentTimeMillis() - start));// 打印 C 步 这是最简单的实现方式打印出日志后我们可以登录到机器上搜索关键词来查看每个步骤的耗时情况。 虽然这个方式比较简单但你可能很快就会遇到问题由于同时会有多个下单请求并行处理所以这些下单请求的每个步骤的耗时日志是相互穿插打印的。你无法知道这些日志哪些是来自于同一个请求也就不能很直观地看到某一次请求耗时最多的步骤是哪一步了。那么你要如何把单次请求每个步骤的耗时情况串起来呢 一个简单的思路是给同一个请求的每一行日志增加一个相同的标记。这样只要拿到这个标记就可以查询到这个请求链路上所有步骤的耗时了我们把这个标记叫做requestId我们可以在程序的入口处生成一个 requestId然后把它放在线程的上下文中这样就可以在需要时随时从线程上下文中获取到 requestId 了。简单的代码实现就像下面这样 String requestId UUID.randomUUID().toString(); //requestId 存储在线程上下文中 ThreadLocalString tl new ThreadLocalString() { Override protected String initialValue() { return requestId; } }; long start System.currentTimeMillis(); processA(); Logs.info(rid : tl.get() , process A cost (System.currentTimeMillis() - start));start System.currentTimeMillis(); processB(); Logs.info(rid : tl.get() , process B cost (System.currentTimeMillis() - start));start System.currentTimeMillis(); processC(); Logs.info(rid : tl.get() , process C cost (System.currentTimeMillis() - start)); 有了 requestId你就可以清晰地了解一个调用链路上的耗时分布情况了。于是你给你的代码增加了大量的日志来排查下单操作缓慢的问题。很快 你发现是某一个数据库查询慢了才导致了下单缓慢然后你优化了数据库索引问题最终得到了解决。 正当你要松一口气的时候问题接踵而至又有用户反馈某些商品业务打开缓慢商城首页打开缓慢。你开始焦头烂额地给代码中增加耗时日志而这时你意识到每次排查一个接口就需要增加日志、重启服务这并不是一个好的办法于是你开始思考解决的方案。 其实从我的经验出发来说一个接口响应时间慢一般是出在跨网络的调用上比如说请求数据库、缓存或者依赖的第三方服务。所以我们只需要针对这些调用的客户端类做切面编程通过插入一些代码打印它们的耗时就好了。 一次请求可能要打印十几条日志如果你的电商系统的 QPS 是 10000 的话就是每秒钟会产生十几万条日志对于磁盘 I/O 的负载是巨大的那么这时你就要考虑如何减少日志的数量。 你可以考虑对请求做采样采样的方式也简单比如你想采样 10% 的日志那么你可以只打印“requestId%100”的请求。 有了这些日志之后当给你一个 requestId 的时候你发现自己并不能确定这个请求到了哪一台服务器上所以你不得不登陆所有的服务器去搜索这个 requestId 才能定位请求。这样无疑会增加问题排查的时间。 你可以考虑的解决思路是把日志不打印到本地文件中而是发送到消息队列里再由消息处理程序写入到集中存储中比如 Elasticsearch。这样你在排查问题的时候只需要拿着 requestId 到 Elasticsearch 中查找相关的记录就好了。在加入消息队列和Elasticsearch 之后我们这个排查程序的架构图也会有所改变 三、分布式 Trace原理 在分布式链路跟踪中有两个重要的概念跟踪trace和 跨度 span。trace 是请求在分布式系统中的整个链路视图span 则代表整个链路中不同服务内部的视图span 组合在一起就是整个 trace 的视图。 在整个请求的调用链中请求会一直携带 traceid 往下游服务传递每个服务内部也会生成自己的 spanid 用于生成自己的内部调用视图并和traceid一起传递给下游服务。 traceid 在请求的整个调用链中始终保持不变所以在日志中可以通过 traceid 查询到整个请求期间系统记录下来的所有日志。请求到达每个服务后服务都会为请求生成spanid而随请求一起从上游传过来的上游服务的 spanid 会被记录成parent-spanid或者叫 pspanid。当前服务生成的 spanid 随着请求一起再传到下游服务时这个spanid 又会被下游服务当做 pspanid 记录。 通过在访问日志和业务日志里记录的traceid、spanid 和 pspanid 能完整的还原出整个请求的调用链路视图对错误排查能起到很大的帮助。 上面就是分布式链路跟踪的原理我们可以自己实现也可以依赖 opentracing 这种开源的解决方案。一般是在请求到达网关的开始生成本次请求的traceid 和 在网关服务内的spanid 将他们放在HTTP 请求头或者RPC调用的元数据里在调用下游服务时继续向下传递。下游的RESTful API服务的全局路由中间件和RPC服务的拦截器里会接收请求携带的traceid 和生成当次请求在服务内部的spanid从上游接收到的 spanid 在这里会被转换成 pspanid。除此之外我们甚至可以把 traceid 和 spanid 注入到一些数据库连接池应用里让记录的慢SQL日志里同样能打上 traceid 和 spanid 信息为请求的响应过慢提供有效的分析数据。 四、如何来做分布式 Trace 你可能会问题目既然是“分布式 Trace横跨几十个分布式组件的慢请求要如何排查”那么我为什么要花费大量的篇幅来说明在一体化架构中如何排查问题呢这是因为在分布式环境下你基本上也是依据上面我提到的这几点来构建分布式追踪的中间件的。 在一体化架构中单次请求的所有的耗时日志都被记录在一台服务器上而在微服务的场景下单次请求可能跨越多个 RPC 服务这就造成了单次的请求的日志会分布在多个服务器上。 当然你也可以通过 requestId 将多个服务器上的日志串起来但是仅仅依靠 requestId很难表达清楚服务之间的调用关系所以从日志中就无法了解服务之间是谁在调用谁。因此我们采用 traceId spanId 这两个数据维度来记录服务之间的调用关系这里traceId 就是 requestId也就是使用 traceId 串起单次请求用 spanId 记录每一次RPC 调用。说起来可能比较抽象我给你举一个具体的例子。 比如你的请求从用户端过来先到达 A 服务A 服务会分别调用 B 和 C 服务B 服务又会调用 D 和 E 服务。 我来给你讲讲图中的内容 用户到 A 服务之后会初始化一个 traceId 为 100spanId 为 1A 服务调用 B 服务时traceId 不变而 spanId 用 1.1 标识代表上一级的 spanId 是1这一级的调用次序是 1A 调用 C 服务时traceId 依然不变spanId 则变为了 1.2代表上一级的 spanId 还是 1而调用次序则变成了 2以此类推。 通过这种方式我们可以在日志中清晰地看出服务的调用关系是如何的方便在后续计算中调整日志顺序打印出完整的调用链路。那么 spanId 是何时生成的又是如何传递的呢 首先A 服务在发起 RPC 请求服务 B 前先从线程上下文中获取当前的 traceId 和spanId然后依据上面的逻辑生成本次 RPC 调用的 spanId再将 spanId 和 traceId 序列化后装配到请求体中发送给服务方 B。 服务方 B 获取请求后从请求体中反序列化出 spanId 和 traceId同时设置到线程上下文中以便给下次 RPC 调用使用。在服务 B 调用完成返回响应前计算出服务 B 的执行时间发送给消息队列。 当然在服务 B 中你依然可以使用切面编程的方式得到所有调用的数据库、缓存、HTTP 服务的响应时间只是在发送给消息队列的时候要加上当前线程上下文中的spanId 和 traceId。 这样无论是数据库等资源的响应时间还是 RPC 服务的响应时间就都汇总到了消息队列中在经过一些处理之后最终被写入到 Elasticsearch 中以便给开发和运维同学查询使用。 而在这里你大概率会遇到的问题还是性能的问题也就是因为引入了分布式追踪中间件导致对于磁盘 I/O 和网络 I/O 的影响而我给你的“避坑”指南就是如果你是自研的分布式 trace 中间件那么一定要提供一个开关方便在线上随时将日志打印关闭如果使用开源的组件可以开始设置一个较低的日志采样率观察系统性能情况再调整到一个合适的数值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闸北做网站网页代理app

1.随意创建一个类,他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. (告诉引擎我是从远古大帝UObject中,继承而来,我们是一家人,只是我进化了其他功能…

有什么软件可以做网站国内室内设计师

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

专业网站运营托管网站ui设计例子

你想要实现一个JavaScript函数,用于根据时间段过滤搜索结果吗?可以尝试以下的示例代码: // 假设这是你的数据 const data [{ id: 1, name: Alice, timestamp: 1622382000000 }, // 2021-05-30 12:00:00 UTC{ id: 2, name: Bob, timestamp: …

中国建设银行深圳分行网站网站的投票 计数模块怎么做

UE发起计算服务申请后,网络侧处理的流程 UE发起服务的流程:service request网络侧处理服务涉及的通信数据通过PDU Session进行传输,涉及到SMF与UPF的交互。PDU Session的建立、管理全部由SMF(Session Management Function&#x…

普宁市做网站php 如何在网站根目录创建文件夹

我国有着众多的电商,这些电商为了促进消费总是想出千奇百怪的营销节日,比如年中大促、双十一、双十二、年终大促,在今年更是多出了6.18促销、双十萌节,还有一个慢慢火起来的“黑五”。“黑五”与之前提到的众多营销节日有所不同&a…

网站商城开发一个多少钱阳江做网站seo

主机是sunshine,客机是moonlight,一个太阳一个月光,两者真是太配啦! 下载sunshine sunshine是服务器端,去以下GitHub链接下载windows端的解压缩即用版 https://github.com/LizardByte/Sunshine/releases下载完毕解压…

网站制作宣传成都3d效果图制作公司

linux chown 命令详解 一、更改文件或目录的所有者和/或所属组二、更改用户权限三、chown与chmod的区别 一、更改文件或目录的所有者和/或所属组 它的基本语法如下: chown [选项]... [所有者][:[所属组]] 文件...其中,选项可以是-R(递归更改…

网站推广哪个好wordpress安装插件无法创建目录

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 2 分,共 30 分) 第1题 小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几…

新手怎么学习网站建设wordpress 设置版权信息

文章目录 常用图像增强技术调整大小灰度变换标准化随机旋转中心剪切随机裁剪高斯模糊亮度、对比度和饱和度调节水平翻转垂直翻转高斯噪声随机块中心区域 常用图像增强技术 图像增强技术是常用于数据增强的方法,可以帮助增加数据集中图像的多样性,提高深…

新乡网站开发的公司电话家在深圳 歌曲

简介: DevOps追求更短的迭代周期、更高频的发布。但发布的次数越多,引入故障的可能性就越大。更多的故障将会降低服务的可用性,进而影响到客户体验。所以,为了保证服务质量,守好发布这个最后一道关,阿里逐步…

胶州网站设计公司wordpress 默认缩略图

问题:创建字符串枚举的最好方法 用一个枚举类型去表示一组字符串的最好方法是什么 我尝试这样: enum Strings{STRING_ONE("ONE"), STRING_TWO("TWO") }我怎么样才可以像使用字符串那样使用它们? 回答一 我不知道你想…

青岛网站制作公司哪家正规做羞羞事免费网站

看到“统计学”,你首先想到什么?是让人眼花缭乱的表格,还是各种晦涩难懂的术语?其实,统计学并不遥远,从日常生活到科学研究,到处都有它的踪影;统计学也并不枯燥,在本片中…

高陵县建设局网站泰安网站建设定制公司

​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个数形参 面向对象:封装性 访问权限修饰符 构造方法&…

学校网站建设所使用的技术男的女的做那个视频网站

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如果某个表有近千万数据,CRUD比较慢,如何优化? 当某个表存在近千万数据且CRUD(增删改查)操作比较慢时,可以考虑以下优化策略: 使用索引:索…

网站建设中服务器和空间区别企业邮箱官方网站

“Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接:错误:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable …

商城网站设计服务删除中文wordpress

宏打印函数 在我们的嵌入式开发中,使用printf打印一些信息是一种常用的调试手段。但是,在打印的信息量比较多的时候,就比较难知道哪些信息在哪个函数里进行打印。特别是对于异常情况的打印,我们需要快速定位到异常情况的位置。这时…

怎么找网站模板网站模糊背景

哈喽~我是电商月月 要说做抖音小店最主要的是什么?那当然是找品了 那出单最快的方法是什么?无疑是达人带货了! 但新手店铺没销量,没体验分,没好评怎么能让达人同意帮我们带货呢? 方法其实很简单&#x…

网站 logfiles网络专业有哪些

通过前面几个课时的学习,相信你对 JVM 的理论及实践等相关知识有了一个大体的印象。而本课时将重点讲解 JVM 的排查与优化,这样就会对 JVM 的知识点有一个完整的认识,从而可以更好地应用于实际工作或者面试了。 我们本课时的面试题是&#x…

泰州做网站哪家好横泉水库建设管理局网站

1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题…

商城网站的psd模板免费下载泛站群

点击下载《产品经理的进阶之路》 1. 前言 本文深入剖析了产品经理这一职业从产品专员起步,逐步晋升为产品经理、高级产品经理,直至产品总监的整个职业发展路径。在每个阶段,产品经理都需承担不同的工作职责,展现出独特的职业特点。 2. 产品专员 关键词【产品需求/原型/文…