伝伝における仮想番号の実践と応用

伝伝における仮想番号の実践と応用

1. はじめに

仮想番号は、インターネット技術に基づいた電話番号サービスです。電話番号をユーザーの携帯電話やその他の通信デバイスにバインドすることで、さまざまなデバイスで通話に応答したり発信したりすることが便利になり、ユーザーの番号のプライバシーが保護され、通話の内容と情報が記録されます。仮想番号の主な機能は次のとおりです。

  1. プライバシー保護: 仮想番号は、ユーザーの実際の電話番号を隠すための中間番号として使用できます。ユーザーが電話番号を提供する必要がある場合、個人のプライバシーを保護するために代わりに仮想番号を使用できます。
  2. 柔軟性: 仮想番号はユーザーのニーズに応じて設定および調整できます。ユーザーはさまざまな市外局番や国際番号を選択できるため、電話番号の柔軟性と適応性が向上します。
  3. 汎用性: 仮想番号は、通話の受信や発信に使用できるだけでなく、さまざまな付加価値サービスも提供できます。たとえば、ユーザーはさまざまな通信ニーズに合わせて、通話転送、ボイスメール、SMS 転送などの機能を設定できます。
  4. エンタープライズ アプリケーション: 仮想番号は、エンタープライズ通信で広く使用されています。企業は仮想番号を使用して、カスタマー サービス ホットラインやコール センターなどを設置し、顧客満足度とビジネス効率を向上させるなど、顧客に優れたサービス エクスペリエンスを提供できます。

つまり、革新的な電話番号サービスとしての仮想番号は、ユーザーに、より柔軟で安全かつ便利な通信手段を提供します。個人および企業のコミュニケーションの両方において、幅広い応用シナリオがあります。

2. 実践と応用

店舗ビジネスのシナリオでは、店員/ユーザーは販売/購入などの情報相談のために番号をダイヤルする必要があります。双方の携帯電話番号は、サードパーティのサービスが提供する仮想番号を通じて結び付けられ、仮想番号を使用して通話に応答/発信することで、ユーザー番号のプライバシー保護の問題を効果的に解決し、店舗が店員の音声監視と管理データ分析を管理するのに役立ちます。

中古取引仮想番号バインディング図

2.1 名前の説明

  1. A : ユーザーの携帯電話番号
  2. X : 仮想番号/仲介アカウント
  3. B : 店員の携帯電話番号
  4. 第三者: 仮想番号サービスプロバイダー
  5. 通信事業者:中国電信、中国聯通、中国移動、その他主要プラットフォーム

2.2 仮想アカウントのXBモード

XBモード:B(店員の携帯電話番号)をX(仮想番号)にバインドできることを意味します。それ以降の X (仮想番号) への通話は、現在の担当者 B の携帯電話番号で応答されます。

2.3 仮想番号のAXBモード

AXB モード: 仮想番号 X にバインドされたユーザーの携帯電話番号 A と店員の携帯電話番号 B を指します。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 バインディングにより、第三者と対話する際にタスクを処理するための新しいスレッドが開かれ、このスレッドでエラーや例外が発生した場合は、スレッド エントリに戻って再度実行されます。第三者との時間のかかるやり取りの問題は、非同期および周期的なクエリ ステータスによって解決され、プロセスとユーザー エクスペリエンスが効果的に向上します。同時に、再試行によってプロセスの一貫性と整合性が確保され、ネットワークの変動やその他の異常な状況によって生じるステータス データの不一致が回避されます。さらに、監視アラームを使用することで、システムアプリケーションの動作状況をリアルタイムに監視し、異常や障害が発生したときに迅速にアラーム通知を発行できるため、店舗スタッフがタイムリーに問題に対処し、プロセス全体の信頼性と安定性を向上させることができます。

このプロセスはビジネスの一部にすぎません。 xb と axb を同時にバインドするなど、オンラインでの使用にはより複雑なシナリオがあります。両方が成功すること、タイムアウトがないこと、ステータスが一貫していることをどのように確認できるでしょうか?

プロセスの成功を確実にし、タイムアウトを回避し、一貫した状態を維持するには、次の手順に従ってプロセスを最適化できます。

  1. ステータス値の追加: ライブラリ テーブルに 2 つのステータス値を追加します。1 つは XB のバインディング ステータス用、もう 1 つは AXB のバインディング ステータス用です。
  2. 楽観的ロックを使用する: ビジネスチェックが完了したら、楽観的ロックを使用して 2 つのステータス値を同時に更新します。
  3. スレッドを作成する: 2 つのプロセスが相互に影響を与えないように、XB と AXB のバインディング プロセスを処理する 2 つのスレッドを作成します。
  4. 状態転送: プロセスが完了すると、2 つの状態値がバインドされた状態に転送されます。
  5. ポーリング インターフェイス: 店員のユーザー エクスペリエンスを最適化するために、エンドサイド ポーリング クエリのバインディング ステータスを取得するための別のインターフェイスを提供します。

上記の手順に従うことで、プロセスを効果的に最適化し、プロセスの成功を確実にし、タイムアウトを回避し、一貫した状態を維持できます。

4. オンラインプラン

バージョンを最適化するときは、エントリ ポイントを変更せずに、基礎となるレイヤーを変更するようにしてください。これにより、グレースケールのテストが容易になります。エントリ ポイントを同じに保つことで、ユーザーがバージョンをアップグレードするときに新たな障害や問題に遭遇することがなくなります。

 /** * 是否为灰度虚拟号码* * @param grayVirtualNumber * @return */ public boolean isGrayVirtualNumber(String grayVirtualNumber) { return flag || grayVirtualNumberList.contains(grayVirtualNumber); }

Apollo の設定に従って、オンライン グレースケール テストとして特定の都市の仮想番号を設定しました。その他の仮想番号では、引き続き古いバージョンのサービス インターフェイスが使用されます。テストが成功したら、全容量を直接有効にすることができます。

5. 再試行コンポーネント

@ZZMQRetry を追加して、関数に AOP インターセプションを追加しました。リクエストは実際には再試行機能を同期的に実行しませんが、MQ メッセージを送信します。同時に、コンシューマー グループが自動的に開始され、コンシューマー関数は @ZZMQRetry 関数になります。

写真

6. まとめ

サードパーティのサービスとのインターフェースの相互作用では、制御できない要素が避けられません。システムの安定性と信頼性を確保するには、予防措置を講じることが重要です。一般的には、例外処理、タイムアウト設定、再試行メカニズム、サーキットブレーカー、監視、アラームなどの対策を設計し、実装する必要があります。これらの対策により、制御できない要因によって引き起こされる障害や不安定性からシステムを効果的に保護できます。

著者について

徐新輝、Zhuanzhuan Store テクノロジー部門バックエンド R&D エンジニア

<<:  Kubernetesは常に正しい選択ではない

>>:  Ray を使用してクラウドネイティブ シナリオで分散システムを迅速に構築する方法

推薦する

ユーザーエクスペリエンス分析: インターフェースデザインにおける構造設計

インターフェースの視覚的な階層を構築する要素には、色の目立ち具合、画像とテキストのサイズ、そして最も...

Baidu Academic Search がリリースされました! Baiduセカンダリドメイン名を有効にする

eName.cnは6月13日、Baidu Academic Searchがセカンドレベルドメイン名x...

chicagovps-18USD/8GB RAM/200GB HDD/5IP/10TB トラフィック/1000M ポート

Chicagogovps から、スマート サーバーを宣伝するメールが届きました。現在、スマート サー...

WeChatミニプログラム731日

微信公開授業の張小龍は、一日中姿を見せなかったが、微信ナイトに登場した。今回、張小龍は19時45分か...

100% Mallがオンラインねずみ講事件に関与、Fanli.comの収益モデルが論争を巻き起こす

最近、福州100%モールが「リベート」という概念を利用して資金集めのねずみ講を行っていた違法行為が暴...

アンダーレイにおけるUlti-Network Nsの応用について - このハンドブック

みなさんこんにちは。私は次男です。コンテナの場合、複数の名前空間テクノロジの重要性は強調しすぎること...

ポピュラーサイエンス |クラウドコンピューティング、ビッグデータ、人工知能のわかりやすい入門

[[358116]]今日はクラウド コンピューティング、ビッグ データ、人工知能についてお話します。...

hostodo: ラスベガス KVM+NVMe シリーズ VPS - フリー ダブル ハードディスク + 大容量トラフィック + フリー DirectAdmin 認証

Hostodo は誰もがよく知っているビジネスのはずです。同社は常に低価格の VPS を提供してきま...

オンラインローン広告の「低さ」の背景には顧客獲得への不安がある

JD Finance は、公式とは思えないほど低俗な一連の広告のおかげで、主要プラットフォームで話題...

シナジーリサーチグループ:Amazon、Microsoft、Googleがクラウド市場をリード

海外メディアの報道によると、シナジーリサーチグループが発表した最新の報告書によると、企業のクラウドイ...

未来はここにあります!分散データベースの「星の海」は、決して置き換えに限定されません。

2、3年前、分散データベースなどの技術について話すとき、この新しい技術の応用の見通しを説明するために...

URL www.***.com の外部リンクを分析することの長所と短所

最近、a5 でニュース記事をいくつか閲覧していたところ、多くの記事にウェブマスターの友人がさまざまな...

Baidu のシングルページ新規サイトの掲載に関する分析

この記事では、シングルページ サイトの組み込みについてのみ説明します。テスト プラットフォームのリン...

ホストレビューボーナス: フットボールベイビー

週末です、とても退屈です、この記事は数字を埋めるためのものです、ちなみに、特典をいくつかあげます、以...

racknerd: 900元、258IP USクラスタサーバ、e3-1240v3/16gメモリ/500gSSD/Gポート30Tまたは100M無制限

Racknerd はロサンゼルスに DC3 データセンターを新たに開設しました。今回は 258 個の...