国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Webman高性能框架實現(xiàn)Nacos微服務(wù)動態(tài)配置服務(wù)的全面突破

Tinywan

Nacos 簡介

Nacos是什么

Nacos 屬于阿里巴巴的一個開源的項目,通過一組簡單的特性集,Nacos能夠幫助用戶實現(xiàn)服務(wù)動態(tài)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。nacos主要提供三種功能:服務(wù)注冊與發(fā)現(xiàn)、動態(tài)配置服務(wù)動態(tài)DNS服務(wù)。

特性

動態(tài)配置服務(wù)

  • 動態(tài)配置服務(wù)可以讓您以中心化、外部化和動態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置。
  • 動態(tài)配置消除了配置變更時重新部署應(yīng)用和服務(wù)的需要,讓配置管理變得更加高效和敏捷。
  • 配置中心化管理讓實現(xiàn)無狀態(tài)服務(wù)變得更簡單,讓服務(wù)按需彈性擴展變得更容易。

可以通過管理系統(tǒng)去更新配置項,并且在更新完配置項之后,可以主動推送到訂閱了這個配置的客戶端。動態(tài)配置服務(wù)可以跳過重啟直接實現(xiàn)配置的實時生效,可以使我們的服務(wù)擁有更多的靈活性。

服務(wù)注冊與發(fā)現(xiàn)

Nacos 支持基于 DNS 和基于 RPC 的服務(wù)發(fā)現(xiàn)。服務(wù)提供者使用 原生SDK、OpenAPI、或一個獨立的Agent TODO注冊 Service 后,服務(wù)消費者可以使用DNS TODO 或HTTP&API查找和發(fā)現(xiàn)服務(wù)。

Nacos 提供對服務(wù)的實時的健康檢查,阻止向不健康的主機或服務(wù)實例發(fā)送請求。Nacos 支持傳輸層 (PING 或 TCP)和應(yīng)用層 (如 HTTP、MySQL、用戶自定義)的健康檢查。

Nacos提供多種服務(wù)注冊與發(fā)現(xiàn),包括基于 DNS 和基于 RPC 的服務(wù)發(fā)現(xiàn)和RPC 如 dubbo 的服務(wù)注冊與發(fā)現(xiàn)。

動態(tài)DNS服務(wù)

動態(tài) DNS 服務(wù)支持權(quán)重路由,讓您更容易地實現(xiàn)中間層負(fù)載均衡、更靈活的路由策略、流量控制以及數(shù)據(jù)中心內(nèi)網(wǎng)的簡單DNS解析服務(wù)。

動態(tài)DNS服務(wù)還能讓您更容易地實現(xiàn)以 DNS 協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以幫助您消除耦合到廠商私有服務(wù)發(fā)現(xiàn) API 上的風(fēng)險。

動態(tài)配置服務(wù)

配置中心的作用是將本地配置文件云端話,所謂的云端也就是 Nacos 的服務(wù)器端,這樣既能保證配置文件中的敏感數(shù)據(jù)不會暴露,同時又提供了實時的修改、查看、回滾和動態(tài)刷新配置文件的功能,非常實用。

為什么需要配置中心

在沒有配置中心之前,傳統(tǒng)應(yīng)用配置的存在以下痛點:

  1. 采用本地靜態(tài)配置,無法保證實時性:修改配置不靈活且需要經(jīng)過較長的測試發(fā)布周期,無法盡快通知到客戶端,還有些配置對實時性要求很高,比方說主備切換配置或者碰上故障需要修改配置,這時通過傳統(tǒng)的靜態(tài)配置或者重新發(fā)布的方式去配置,那么響應(yīng)速度是非常慢的,業(yè)務(wù)風(fēng)險非常大。
  2. 易引發(fā)生產(chǎn)事故:比如在發(fā)布的時候,容易將測試環(huán)境的配置帶到生產(chǎn)上,引發(fā)生產(chǎn)事故。
  3. 配置散亂且格式不標(biāo)準(zhǔn):有的用properties格式,有的用xml格式,還有的存DB,團隊傾向自造輪子,做法五花八門。
  4. 配置缺乏安全審計、版本控制、配置權(quán)限控制功能:誰?在什么時間?修改了什么配置?無從追溯,出了問題也無法及時回滾到上一個版本;無法對配置的變更發(fā)布進(jìn)行認(rèn)證授權(quán),所有人都能修改和發(fā)布配置。

配置中心好處

  1. 通過配置中心,可以使得配置標(biāo)準(zhǔn)化、格式統(tǒng)一化
  2. 當(dāng)配置信息發(fā)生變動時,修改實時生效,無需要重新重啟服務(wù)器,就能夠自動感知相應(yīng)的變化,并將新的變化統(tǒng)一發(fā)送到相應(yīng)程序上,快速響應(yīng)變化。比方說某個功能只是針對某個地區(qū)用戶,還有某個功能只在大促的時段開放,使用配置中心后只需要相關(guān)人員在配置中心動態(tài)去調(diào)整參數(shù),就基本上可以實時或準(zhǔn)實時去調(diào)整相關(guān)對應(yīng)的業(yè)務(wù)。
  3. 通過審計功能還可以追溯問題

配置中心功能實現(xiàn)

安裝插件

composer require workbunny/webman-nacos

配置 Nacos

插件配置文件路徑:plugin/workbunny/webman-nacos/app.php

1、服務(wù)端配置

/** nacos 服務(wù)端地址 */
'host' => '192.168.1.2', 

/** nacos 服務(wù)端端口 */
'port' => 8848,

/** nacos 認(rèn)證用戶名 */
'username' => 'nacos',

/** nacos 認(rèn)證用戶密碼 */
'password' => 'nacos',

以上主要是配置Nacos Server的服務(wù)端連接、認(rèn)證用戶名、認(rèn)證用戶密碼配置。

2、配置中心配置

'config_listeners' => [
    [
        /** DataID */
        'payment.php',
        /** groupName */
        'DEFAULT_GROUP',
        /** namespaceId */
        '',
        /** filePath @desc 配置文件本地保存的地址 */
        config_path() . '/nacos/payment.php',
    ],
    [
        /** DataID */
        'application-dev.yml',
        /** groupName */
        'DEFAULT_GROUP',
        /** namespaceId */
        'b34ea59f-e240-413b-ba3d-bb040981d773',
        /** filePath @desc 配置文件本地保存的地址 */
        config_path() . '/nacos/application-dev.yml',
    ],
],

以上配置含義和規(guī)則

  1. config_listeners 配置數(shù)組支持配置多個配置文件,每個配置文件為一個單獨的數(shù)組
  2. payment.php配置說明
    1. Data ID:payment.php
    2. 配置格式:text
    3. 用戶組:DEFAULT_GROUP
    4. 命名空間:public (默認(rèn)命名空間)
    5. 命名空間ID:''
    6. 配置文件本地保存位置:config_path() . '/nacos/payment.php'
  3. application-dev.yml配置說明
    1. Data ID:application-dev.yml
    2. 配置格式:YAML
    3. 用戶組:DEFAULT_GROUP
    4. 命名空間:java
    5. 命名空間ID:b34ea59f-e240-413b-ba3d-bb040981d773
    6. 配置文件本地保存位置:config_path() . '/nacos/application-dev.yml'

注意:config_path() 助手函數(shù)為webman框架自帶函數(shù),用于獲取當(dāng)前配置目錄路徑地址,該函數(shù)指定路徑為項目/config目錄

3、編寫代碼讀取配置文件

創(chuàng)建一個測試控制器文件,用于手動讀取配置文件

<?php
declare(strict_types=1);

namespace app\controller;

class Test
{
    /**
     * @desc nacos 配置中心
     * @author Tinywan(ShaoBo Wan)
     */
    public function nacos()
    {
        $client = \Workbunny\WebmanNacos\Client::channel();

        /** 讀取命名空間為 public 的配置文件 payment.php */
        $payment = $client->config->get('payment.php', 'DEFAULT_GROUP');
        var_dump($payment);

        echo '讀取命名空間配置文件' . PHP_EOL;

        /** 讀取命名空間為 java 的配置文件 application-dev.yml */
        $application = $client->config->get('application-dev.yml', 'DEFAULT_GROUP', 'b34ea59f-e240-413b-ba3d-bb040981d773');
        var_dump($application);
    }
}

4、Nacos 控制臺添加配置

在 Nacos 控制臺創(chuàng)建并設(shè)置配置文件

命名空間為public配置文件截圖

截圖

配置詳情

截圖

配置文件payment.php內(nèi)容

<?php
/**
 * @desc 支付配置文件
 * @author Tinywan(ShaoBo Wan)
 * @date 2022/03/11 20:15
 */

return [
    'alipay' => [
        'default' => [
            // 必填-支付寶分配的 app_id
            'app_id' => '2016090900470841',
            // 必填-應(yīng)用私鑰 字符串或路徑
            'app_secret_cert' => 'MIIEpAIBAAKCAQE4OUmD/+XDgCg==',
            // 必填-應(yīng)用公鑰證書 路徑
            'app_public_cert_path' => public_path().'/appCertPublicKey_2016090900470841.crt',
            // 必填-支付寶公鑰證書 路徑
            'alipay_public_cert_path' => public_path().'/alipayCertPublicKey_RSA2.crt',
            // 必填-支付寶根證書 路徑
            'alipay_root_cert_path' => public_path().'/alipayRootCert.crt',
            'return_url' => 'http://micro.train.tinywan.cn/gateway/payment/alipay-return',
            'notify_url' => 'http://micro.train.tinywan.cn/gateway/payment/alipay-notify',
            // 選填-服務(wù)商模式下的服務(wù)商 id,當(dāng) mode 為 Pay::MODE_SERVICE 時使用該參數(shù)
            'service_provider_id' => '',
            // 選填-默認(rèn)為正常模式??蛇x為: MODE_NORMAL, MODE_SANDBOX, MODE_SERVICE
            'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX,
        ]
    ]
];

命名空間為java配置文件截圖

可以在nacos控制臺新建一個命名空間。這里命名一個java,主要是為了配置yml配置文件。
截圖

命名空間配置
截圖

配置詳情

截圖

配置文件application-dev.yml內(nèi)容

server:
  port: 8501
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/train_main_service?characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: tinywan
    password: 123456
  jpa:
    properties:
      hibernate:
        show_sql: true
        format_sql: true

5、控制器讀取配置文件

配置好沒問題了,啟動webman項目

php start.php start

啟動成功終端截圖如下

截圖

通過地址http://127.0.0.1:8888/test/nacos 讀取配置文件,該路由地址由自己自定義即可,只要能訪問通控制器即可。

注意:由于上面測試控制器代碼沒有響應(yīng)到前端頁面,所以所有的打印都會在控制臺輸出

截圖

可以看到,以上終端完美的讀取到了兩個配置文件。同時配置文件也被寫入到了本地配置文件對應(yīng)設(shè)置的目錄。
截圖

6、動態(tài)讀取配置

動態(tài)讀取配置:在 Nacos 配置中心修改的配置內(nèi)容,在不重啟項目的前提下可以實時的讀取到。

webman-nacos組件默認(rèn)會啟動一個名為 config-listener 的進(jìn)程,用于監(jiān)聽在配置文件 plugin/workbunny/webman-nacos/app.phpconfig_listeners 下的配置內(nèi)容。

如果想自行掌控調(diào)用,可以使用如下服務(wù)

$client = \Workbunny\WebmanNacos\Client::channel();

// 異步非阻塞監(jiān)聽
// 注:在webman中是異步非阻塞的,不會阻塞當(dāng)前進(jìn)程
$response = $client->config->listenerAsyncUseEventLoop();

// 異步阻塞監(jiān)聽
// 注:在webman中是異步阻塞的,返回的是Guzzle/PromiseInterface,配合wait()可以多條請求并行執(zhí)行;
//     請求會阻塞在 **wait()** 直到執(zhí)行完畢;詳見 **ConfigListernerProcess.php** 
$response = $client->config->listenerAsync();

# 同步阻塞監(jiān)聽
$response = $client->config->listener();

動態(tài)讀取實現(xiàn)演示

這里動態(tài)修改一下application-dev.yml 配置文件內(nèi)容

7、歷史版本一鍵回滾

Nacos 通過提供配置版本管理及其一鍵回滾能力,幫助用戶改錯配置的時候能夠快速恢復(fù),降低微服務(wù)系統(tǒng)在配置管理上的一定會遇到的可用性風(fēng)險。讓您能夠輕松的實現(xiàn)溯源和回滾配置文件

版權(quán)聲明
作者:Tinywan
出處:https://mp.weixin.qq.com/s/TTkKg5UpRHY2DoKujW96tw
本文版權(quán)歸作者和workerman官方共有。歡迎轉(zhuǎn)載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
歡迎關(guān)注個人微信公眾號,一起進(jìn)步!掃描左方二維碼即可

2757 2 9
2個評論

z985342160

配置發(fā)生變更,得由client無限循環(huán)拉取的?nacos支持主動推送么?

  • Tinywan 2023-10-30

    沒必要主動推送

  • chaz6chez 2023-11-01

    使用的是長輪詢請求,這樣比主動推送更省資源,而且也不會浪費tcp連接

Jinson

好東西,回頭加到自己項目中試下先

  • 暫無評論

Tinywan

13620
積分
0
獲贊數(shù)
0
粉絲數(shù)
2020-01-14 加入
??