AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

PHP 服務實現(xiàn)性能剖析、跟蹤和可觀察性14444444444444】=102102102102102102102102102102102102102102102102實踐

來源: 責編: 時間:2024-06-11 17:52:20 212觀看
導讀簡介鏈路追蹤Tracing Analysis為分布式應用的開發(fā)者提供了完整的調(diào)用鏈路還原、調(diào)用請求量統(tǒng)計、鏈路拓撲、應用依賴分析等工具,可以幫助開發(fā)者快速分析和診斷分布式應用架構(gòu)下的性能瓶頸,提高微服務時代下的開發(fā)診斷效

簡介

鏈路追蹤Tracing Analysis為分布式應用的開發(fā)者提供了完整的調(diào)用鏈路還原、調(diào)用請求量統(tǒng)計、鏈路拓撲、應用依賴分析等工具,可以幫助開發(fā)者快速分析和診斷分布式應用架構(gòu)下的性能瓶頸,提高微服務時代下的開發(fā)診斷效率。gQE28資訊網(wǎng)——每日最新資訊28at.com

官方地址:https://github.com/openzipkin/zipkingQE28資訊網(wǎng)——每日最新資訊28at.com

Zipkin運行架構(gòu)

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

產(chǎn)品架構(gòu)(鏈路追蹤)

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

鏈路追蹤的主要工作流程如下

  1. 客戶側(cè)的應用程序通過集成鏈路追蹤的多語言客戶端SDK上報服務調(diào)用數(shù)據(jù)。鏈路追蹤支持多種開源社區(qū)的SDK,且支持OpenTracing標準。
  2. 數(shù)據(jù)上報至鏈路追蹤控制臺后,鏈路追蹤組件進行實時聚合計算和持久化,形成鏈路明細、性能總覽、實時拓撲等監(jiān)控數(shù)據(jù)。您可以據(jù)此進行問題排查與診斷。
  3. 調(diào)用鏈數(shù)據(jù)可對接下游阿里云產(chǎn)品,例如LogSearch、CloudMonitor、MaxCompute等,用于離線分析、報警等場景。

業(yè)務場景

隨著業(yè)務越來越復雜,系統(tǒng)也隨之進行各種拆分,特別是隨著微服務架構(gòu)和容器技術(shù)的興起,看似簡單的一個應用,后臺可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務調(diào)用最后才能完成;當請求變慢或者不可用時,我們無法得知是哪個后臺服務引起的,這時就需要解決如何快速定位服務故障點,zipkin分布式跟蹤系統(tǒng)就能很好的解決這樣的問題。gQE28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

請求&響應

微服務架構(gòu)下,一次請求后端會經(jīng)歷多個服務調(diào)用(所有請求鏈有相同的traceId和不同的spanId),都會沿著traceText帶到每一個服務中。gQE28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)是如何上報的?

直接上報數(shù)據(jù)

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

gQE28資訊網(wǎng)——每日最新資訊28at.com

不通過Agent而直接上報數(shù)據(jù)的原理(傳統(tǒng)框架。PHP-FPM + Nginx模式)gQE28資訊網(wǎng)——每日最新資訊28at.com

  • ThinkPHP6.0
  • Laravel
  • Yii2.0

通過Agent上報數(shù)據(jù)

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

通過Agent上報數(shù)據(jù)的原理(現(xiàn)代化框架。命令行模式)。gQE28資訊網(wǎng)——每日最新資訊28at.com

  • webman
  • Swoole

安裝

通過composer安裝:gQE28資訊網(wǎng)——每日最新資訊28at.com

composer require openzipkin/zipkin

使用

創(chuàng)建Tracer

Tracer對象可以用來創(chuàng)建Span對象(記錄分布式操作時間)。Tracer對象還配置了上報數(shù)據(jù)的網(wǎng)關(guān)地址、本機IP、采樣頻率等數(shù)據(jù),您可以通過調(diào)整采樣率來減少因上報數(shù)據(jù)產(chǎn)生的開銷。gQE28資訊網(wǎng)——每日最新資訊28at.com

function create_tracing($endpointName, $ipv4){    $endpoint = Endpoint::create($endpointName, $ipv4, null, 2555);    /* Do not copy this logger into production.     * Read https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#log-levels     */    $logger = new /Monolog/Logger('log');    $logger->pushHandler(new /Monolog/Handler/ErrorLogHandler());    $reporter = new Zipkin/Reporters/Http(/Zipkin/Reporters/Http/CurlFactory::create());    $sampler = BinarySampler::createAsAlwaysSample();    $tracing = TracingBuilder::create()        ->havingLocalEndpoint($endpoint)        ->havingSampler($sampler)        ->havingReporter($reporter)        ->build();    return $tracing;}

記錄請求數(shù)據(jù)

$rootSpan = $tracer->newTrace();$rootSpan->setName('encode');$rootSpan->start();try {  doSomethingExpensive();} finally {  $rootSpan->finish();}

以上代碼用于記錄請求的根操作,如果需要記錄請求的上一步和下一步操作,則需要傳入上下文。示例:gQE28資訊網(wǎng)——每日最新資訊28at.com

$span = $tracer->newChild($parentSpan->getContext());$span->setName('encode');$span->start();try {  doSomethingExpensive();} finally {  $span->finish();}

總體流程如下

Client Span                                                Server Span┌──────────────────┐                                       ┌──────────────────┐│                  │                                       │                  ││   TraceContext   │           Http Request Headers        │   TraceContext   ││ ┌──────────────┐ │          ┌───────────────────┐        │ ┌──────────────┐ ││ │ TraceId      │ │          │ X-B3-TraceId      │        │ │ TraceId      │ ││ │              │ │          │                   │        │ │              │ ││ │ ParentSpanId │ │ Inject   │ X-B3-ParentSpanId │Extract │ │ ParentSpanId │ ││ │              ├─┼─────────>│                   ├────────┼>│              │ ││ │ SpanId       │ │          │ X-B3-SpanId       │        │ │ SpanId       │ ││ │              │ │          │                   │        │ │              │ ││ │ Sampled      │ │          │ X-B3-Sampled      │        │ │ Sampled      │ ││ └──────────────┘ │          └───────────────────┘        │ └──────────────┘ ││                  │                                       │                  │└──────────────────┘                                       └──────────────────┘

webman應用

1. 開通ARMS

開通ARMS地址 https://arms.console.aliyun.com/ (一般有15天試用)gQE28資訊網(wǎng)——每日最新資訊28at.com

2. 獲得數(shù)據(jù)上報接入點url

進入 https://tracing.console.aliyun.com/#/globalSetting/cn-hangzhou/process 按照圖示獲得接入點url地址。gQE28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

如果你的服務器在阿里云上可以用阿里云vpc網(wǎng)絡接入點,本示例用的是阿里云公網(wǎng)接入點。gQE28資訊網(wǎng)——每日最新資訊28at.com

安裝

通過composer安裝:gQE28資訊網(wǎng)——每日最新資訊28at.com

composer require openzipkin/zipkin

使用

1. 編寫中間件

鏈路監(jiān)控中間件 app/middleware/ArmsMiddleware.phpgQE28資訊網(wǎng)——每日最新資訊28at.com

<?php/** * @desc 全鏈路監(jiān)控中間件 * @author Tinywan(ShaoBo Wan) * @date 2021/12/6 14:06 */declare(strict_types=1);namespace app/middleware;use Monolog/Handler/ErrorLogHandler;use Monolog/Logger;use support/Log;use think/facade/Db;use Webman/MiddlewareInterface;use Webman/Http/Response;use Webman/Http/Request;use Zipkin/Reporters/Http;use Zipkin/TracingBuilder;use Zipkin/Samplers/BinarySampler;use Zipkin/Endpoint;use Workerman/Timer;use const Zipkin/Tags/SQL_QUERY;class ArmsMiddleware implements MiddlewareInterface{    /**     * @desc: 方法描述     * @param Request $request     * @param callable $next     * @return Response     * @author Tinywan(ShaoBo Wan)     */    public function process(Request $request, callable $next) : Response    {        static $tracing = null, $tracer = null;        if (!$tracing) {            $endpoint = Endpoint::create('開源技術(shù)小棧', $request->getRealIp(), null, 2555);            $logger = new Logger('log');            $logger->pushHandler(new ErrorLogHandler());            $reporter = new Http(['endpoint_url' => config('security')['endpoint_url']]);            $sampler = BinarySampler::createAsAlwaysSample();            $tracing = TracingBuilder::create()                ->havingLocalEndpoint($endpoint)                ->havingSampler($sampler)                ->havingReporter($reporter)                ->build();            $tracer = $tracing->getTracer();            // 55秒上報一次,盡量將上報對業(yè)務的影響減少到最低            Timer::add(55, function () use ($tracer) {                $tracer->flush();            });            register_shutdown_function(function () use ($tracer) {                $tracer->flush();            });        }        $rootSpan = $tracer->newTrace();        $rootSpan->setName($request->controller."::".$request->action);        $rootSpan->start();        $request->rootSpan = $rootSpan;        $request->tracer = $tracer;        $result = $next($request);        // 統(tǒng)計sql(日志在內(nèi)存)        if (class_exists(Db::class)) {            $logs = Db::getDbLog(true);            if (!empty($logs['sql'])) {                foreach ($logs['sql'] as $sql) {                    $sqlSpan = $tracer->newChild($rootSpan->getContext());                    $sqlSpan->setName(SQL_QUERY);                    $sqlSpan->start();                    $sqlSpan->tag('db.statement', $sql);                    $sqlSpan->finish();                }            }        }        $rootSpan->finish();        return $result;    }}

2. 配置中間件

在 config/middleware.php 中添加全局中間件如下:gQE28資訊網(wǎng)——每日最新資訊28at.com

return [    '' => [        /app/middleware/ArmsMiddleware::class,    ],    ...];

3. 查看監(jiān)控

訪問地址 https://tracing.console.aliyun.com/ ,效果類似如下:gQE28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

接口監(jiān)控

圖片圖片gQE28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)庫監(jiān)控

圖片 圖片 gQE28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-93091-0.htmlPHP 服務實現(xiàn)性能剖析、跟蹤和可觀察性14444444444444】=102102102102102102102102102102102102102102102102實踐

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 震驚!用 Suspense 解決請求依賴的復雜場景居然這么簡單!

下一篇: 嚴重!Spring AOP Bug導致切面重復執(zhí)行

標簽:
  • 熱門焦點
  • 6月iOS設備性能榜:M2穩(wěn)居榜首 A系列只能等一手3nm來救

    沒有新品發(fā)布,自然iOS設備性能榜的上榜設備就沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,畢竟蘋果新品的發(fā)布節(jié)奏就是這樣的,一年下來也就幾個移動端新品,不會像安卓廠商,一
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內(nèi)容創(chuàng)建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應該選擇什么樣的著裝?&rdquo;近日,在網(wǎng)絡上,一個與著裝相關(guān)的帖子引發(fā)關(guān)注,在該帖子里,一位在高級寫字樓亞洲金
  • 聯(lián)想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯(lián)想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據(jù)有人爆料,聯(lián)想的下一款 ThinkBook Plus 可能更特殊,它
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護航

    喜逢開學季,各大商家開始推出自己的新產(chǎn)品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
Top