成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

虛擬號在轉轉實踐與應用

云計算 虛擬化
總體來說,就是要設計并實施異常處理、超時設置、重試機制、斷路器以及監控與報警等措施。這些措施可以有效地保護系統,避免因不可控因素導致的故障和不穩定。

1.介紹

虛擬號是一種基于互聯網技術的電話號碼服務。它通過將電話號碼與用戶的手機或其他通信設備綁定,實現了在不同設備上接聽和撥打電話的便利,保護用戶號碼隱私,記錄通話中內容及信息等,虛擬號的主要特點包括以下幾個方面:

  1. 隱私保護:虛擬號可以作為一個中間號碼,將用戶的真實電話號碼隱藏起來。當用戶需要提供電話號碼時,可以使用虛擬號碼代替,從而保護個人隱私。
  2. 靈活性:虛擬號可以根據用戶的需求進行設置和調整。用戶可以選擇不同的地區號碼,甚至可以選擇國際號碼,使得自己的電話號碼更具靈活性和適應性。
  3. 多功能性:虛擬號不僅可以用于接聽和撥打電話,還可以提供一系列增值服務。例如,用戶可以設置來電轉接、語音信箱、短信轉發等功能,滿足不同的通信需求。
  4. 企業應用:虛擬號在企業通信中有著廣泛的應用。企業可以通過虛擬號為客戶提供更好的服務體驗,例如設置客服熱線、呼叫中心等,提高客戶滿意度和業務效率。

總之,虛擬號作為一種創新的電話號碼服務,為用戶提供了更加靈活、安全和便捷的通信方式。它在個人和企業通信中都有著廣泛的應用場景。

2.實踐與應用

在門店業務的場景下,需要店員/用戶撥打號碼進行售賣/購買等信息咨詢,通過第三方服務提供的虛擬號的方式對雙方手機號綁定,通過虛擬號來實現接聽/撥打,有效解決了用戶號碼隱私保護的問題,以及幫助門店進行管理店員話術監控與管理數據分析等。

二手交易虛擬號綁定圖二手交易虛擬號綁定圖

2.1 名稱解釋

  1. A:用戶手機號
  2. X:虛擬號/中間戶
  3. B:店員手機號
  4. 第三方:虛擬號提供服務方
  5. 運營商:電信、聯通、移動各大平臺

2.2 虛擬號的 XB 模式

XB 模式:指可以將 B(店員手機號)與 X(虛擬號)進行綁定,后續用戶直接撥打 X(虛擬號)都是由當前店員 B 手機號進行接聽。

2.3 虛擬號的 AXB 模式

AXB 模式:指用戶手機號 A 與店員手機號 B,同時綁定虛擬號碼 X,后續 A 撥打 X號碼,B 會看到 X 號碼打過來;同理 B 撥打 X號碼,A 會看到 X 號碼打過來。

2.4 虛擬號呼叫流程圖

呼叫流程圖呼叫流程圖

3. 與第三方交互的版本演進

與第三方進行交互的過程中,隨著時間的推移,業務不斷的發展,服務方與第三方的交互流程也會不斷的改版。下面會說明歷史版本與第三方交互中的一些問題。

3.1 初始版本綁定流程

圖片圖片

在最初的版本中,交互流程相對簡單,只包含基本的綁定和解綁操作。在正常情況下,這種簡單的交互是沒有問題的。然而,在線上出現最多的情況就是超時、超時、還是超時,因為和第三方交互都是基于HTTP方式進行交互,對于第三方的響應時間是不可控的。一旦響應超過了APP的請求時間,就會熔斷請求,導致請求失敗。

3.2 最新版本交互流程

為了保證服務的可靠性,在最新版本中做了以下優化措施:

圖片圖片

優化概念模型圖

  • 超時處理機制:提供一個查詢綁定狀態的接口,APP 不斷輪詢獲取綁定狀態。前置校驗代碼同步,將與第三方綁定/解綁接口進行異步化處理。
//開啟異步線程,執行重試方法,進行與第三方接口綁定。
ThreadUtil.executor.submit(() -> {
  try {
    log.info("act=AppOperationHandler type=retryBindXb_retryBindAxb_start");
    pstnRetryService.retryBindXb(appOpnParam);
  } catch (Exception e) {
    log.error("act=AppOperationHandler type=retryBindXb_retryBindAxb_fail", e);
}
});
  • 并發處理機制:基于樂觀鎖的方式加鎖實現避免并發問題。將綁定狀態添加了一個操作中的中間態。
NOT_BIND(1, "未綁定"),
    BIND(2, "已綁定"),
    OPERATION(3, "操作中");
  • 異常處理機制:在綁定過程中,及時捕獲并處理異常情況,例如調用第三方接口超時、服務端錯誤異常等等,通過重試方式來保證操作的完整性和一致性。重試基于注解AOP攔截,通過MQ消息的方式實現重試。
@Override
@ZZMQRetry(errorHandler = "onErrorMsgPcBindXb", firstSyncCall = true)
public void retryBindXb(PstnBindParam pstnBindParam) {
   //調用第三方接口進行綁定
    String bindId = bindVirtualNumber(pstnBindParam);
    Boolean executeResult = transactionTemplate.execute(status -> {
      try {
      //創建綁定記錄
      pstnBindRecordService.insertBindRecord(bindId, pstnBindParam);
      //狀態流轉至已綁定
      return this.xbOpnStateToBind(pstnBindParam.getAssignVirtualNum());
      } catch (Exception e) {
        status.setRollbackOnly();
        return Boolean.FALSE;
      }
    });
     if (Objects.isNull(executeResult) || !executeResult) {
           throw new BusinessException("修改狀態異常進行重試");
        }
    }
  • 告警處理機制:在發生嚴重異常、或者重試到一定次數之后任然沒有成功,發送告警進行通知。
public void onErrorMsgPcBindXb(PstnBindParam param) {
      int retryCount = RetryContext.getRetryCount();
      log.info("act=PcOperationHandler type=onErrorMsgPcBindXb retryCount={} ", retryCount);
      if (retryCount >= RETRY_MAX_NUM) {
        WxMsgUtil.sendMsg(GROUP, "綁定XB重試"+ retryCount +    "次,仍未成功請排查,虛擬號:"+ param.getVirtualNum());
        }
    }

通過以上優化措施,可以提高交互流程的穩定性和可靠性,減少業務方與服務方的異常、超時以及綁定狀態不一致的情況,從而確保虛擬號的正常使用,提升系統的穩定性和店員使用體驗。

axb綁定流程axb綁定流程

以上優化后的店員撥打電話AXB綁定的流程,在與第三方交互綁定時,開啟了一個新的線程進行處理任務,并且在這個線程中有出現錯誤或異常時就會重新回到線程入口重新執行。通過異步和循環查詢狀態的方式解決了與第三方交互耗時高的問題,有效提高了流程以及使用體驗。同時,通過重試的方式保證了流程的一致性和完整性,避免了因網絡波動或其他異常情況導致的狀態數據不一致問題。此外,通過監控告警可以實時監控系統應用的運行狀態,并在出現異常或故障時及時發出警報通知,幫助店員及時處理問題,提高整個流程的可靠性和穩定性。

這個流程只是業務中的其中一環,在線上使用還有更復雜的場景比如同時綁定xb、axb兩個場景,怎么能保證都能成功、怎么能保證不超時、怎么能保證狀態都一致?

確保流程成功、避免超時和保持狀態一致,可以通過以下步驟來優化:

  1. 增加狀態值:在庫表中添加兩個狀態值,一個用于XB的綁定狀態,另一個用于AXB的綁定狀態。
  2. 使用樂觀鎖:在業務檢查完成后,以樂觀鎖的方式同時更新這兩個狀態值。
  3. 創建線程:創建兩個線程來處理XB和AXB的綁定流程,這樣可以保證兩個流程相互不影響。
  4. 狀態流轉:在流程結束后,將這兩個狀態值流轉至已綁定的狀態。
  5. 輪詢接口:提供一個單獨獲取綁定狀態的接口,供端輪詢查詢使用,優化店員使用體驗。

通過以上步驟,可以有效地優化流程,確保其成功、避免超時并保持狀態一致。

4.上線方案

在進行版本優化時,盡量保持入口不變,底層改變。這樣可以使得灰度測試更加容易進行。通過保持入口不變,可以確保用戶在升級版本時不會遇到任何新的障礙或問題。

/**
     * 是否為灰度虛擬號碼
     *
     * @param grayVirtualNumber
     * @return
     */
    public boolean isGrayVirtualNumber(String grayVirtualNumber) {
        return flag || grayVirtualNumberList.contains(grayVirtualNumber);
    }

根據阿波羅配置,我們將某個城市的虛擬號碼設置為線上灰度測試。其他虛擬號碼仍將使用老版本的服務接口。在測試沒有問題后,將直接開啟全量即可。

5.重試組件

我們對添加了@ZZMQRetry的函數增加了AOP攔截,請求將不會真正同步執行重試函數,而是發送一條MQ消息;同時會自動start一個消費組,消費函數為@ZZMQRetry函數。

圖片圖片

6.總結

在與第三方服務的接口交互中,不可控因素是不可避免的。為了確保系統的穩定性和可靠性,重要的是采取預防措施。總體來說,就是要設計并實施異常處理、超時設置、重試機制、斷路器以及監控與報警等措施。這些措施可以有效地保護系統,避免因不可控因素導致的故障和不穩定。

關于作者

徐鑫輝,轉轉門店技術部后端研發工程師

責任編輯:武曉燕 來源: 轉轉技術
相關推薦

2022-12-21 08:32:34

OLAPDruid架構

2022-10-28 08:31:43

2023-03-22 08:32:35

2022-10-28 09:15:02

2023-04-19 13:18:41

動態線程池平臺

2023-06-07 08:32:32

引擎技術while

2022-11-09 09:00:51

OCR游戲應用

2023-11-01 07:44:29

轉轉Flutter業務

2024-09-11 19:36:24

2024-10-16 21:49:24

2022-11-07 14:45:26

轉轉價格DDD

2023-12-27 19:12:42

OLAP自助分析

2024-09-19 22:22:41

多任務學習

2023-02-08 09:42:30

策略方式容量

2022-12-15 08:35:01

用戶畫像平臺

2024-04-07 07:53:12

SpringWeb技術WebSocket

2023-03-29 08:33:03

倉儲自動化系統

2023-03-02 08:32:41

2024-08-08 07:13:36

2023-07-12 08:33:34

引擎LiteFlow編排
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区中文字幕 | 久久久久亚洲国产| 国产亚洲精品久久久久动 | 中文字幕一区二区三区乱码图片 | 欧美精品video | 久久久久久黄 | 欧美日韩三区 | 成人免费视频一区二区 | 亚洲第一网站 | 成人精品一区二区 | 国产激情福利 | 久久成人精品一区二区三区 | 日本精品在线一区 | 日韩国产精品一区二区三区 | 黄色免费av | 美日韩免费视频 | 亚洲欧美少妇 | 国产精品欧美精品日韩精品 | 91电影在线 | 国产精品一区二区久久 | 亚洲欧美一区二区三区国产精品 | 在线观看视频亚洲 | 国产综合久久久久久鬼色 | 天天精品综合 | 亚洲一区二区电影网 | 国产在线视频一区 | 亚洲性视频 | av色噜噜 | 日韩无| 免费国产网站 | 在线视频三区 | 亚洲免费在线播放 | 免费在线成人 | 国产精品大片在线观看 | 精品熟人一区二区三区四区 | 国产成人精品一区二区三区 | 国产视频中文字幕在线观看 | 亚洲精品视频观看 | 国产精品免费视频一区 | 精品日韩| 91高清视频在线观看 |