تست B&A برای وب سرتاسر به صورت محلی

1. مقدمه

Bidding & Auction Services (B&A) از 4 سرویس برای خریداران و فروشندگان برای تسهیل حراج مخاطب محافظت شده تشکیل شده است:

پشته خریدار:

  • سرویس جلویی خریدار
  • خدمات مناقصه

پشته فروشنده:

  • خدمات فرانت‌اند فروشنده
  • خدمات حراج

این کد لبه شما را از طریق راه اندازی و آزمایش راه اندازی انتها به انتها در محیط محلی خود راهنمایی می کند. انتظار می‌رود این پیاده‌روی تقریباً 1 ساعت طول بکشد، بدون در نظر گرفتن زمان ساخت سرویس اولیه.

حتی اگر ممکن است فقط روی کد سمت خرید یا کد سمت فروش کار کنید، راه‌اندازی جریان انتها به انتها در محیط محلی‌تان برای درک بهتر نحوه کار پشته‌های خریدار و فروشنده با یکدیگر مفید است. با تنظیم هر دو پشته، بعداً وقتی با پشته خریدار یا فروشنده مربوطه طرف دیگر ادغام می‌شوید، می‌توانید اطمینان بیشتری داشته باشید. تست کردن خدمات به صورت محلی نیز باعث صرفه جویی در هزینه توسعه شما می شود.

در این نرم افزار کد، ما از برنامه تست محلی B&A به عنوان یک همراه راهنما استفاده خواهیم کرد.

برنامه آزمایش محلی همراه، منابع مختلف خریدار و فروشنده مورد استفاده در حراج B&A را میزبانی می کند. این برنامه همچنین یک رابط کاربری در http://localhost:3000 ارائه می دهد که در آن می توانید پیکربندی های مختلف حراج را شبیه سازی کنید.

2. تنظیم محیط

2.1 یک ماشین لینوکس آماده کنید

از یک ماشین لینوکس محلی استفاده کنید یا یک VM لینوکس از ارائه دهنده ابر انتخابی خود تهیه کنید. برای بهبود زمان ساخت، حداقل 16 هسته به عنوان حداقل توصیه می شود و 32 هسته ترجیح داده می شود.

توجه داشته باشید که ما یک صفحه HTML را از http://localhost:3000 این دستگاه بارگذاری خواهیم کرد. اگر VM رابط کاربری گرافیکی ارائه نمی کند، مطمئن شوید که پورت 3000 برای دستگاه محلی شما قابل دسترسی است تا بتوانید به آن متصل شوید.

2.2 Docker را نصب کنید

ما از Docker برای اجرای سرویس ها و برنامه آزمایش محلی استفاده می کنیم.

ما از اسکریپت راحتی برای نصب Docker در یک محیط آزمایشی استفاده خواهیم کرد.

# Install Docker
> curl -fsSL https://get.docker.com -o get-docker.sh
> sudo sh get-docker.sh

# Set up sudo-less Docker
> sudo groupadd docker
> sudo usermod -aG docker $USER
> newgrp docker

# Test
> docker run hello-world

هشدار: با راه اندازی sudo-less، گروه Docker امتیازات سطح ریشه را به کاربر اعطا می کند. راهنمای sudo-less Docker را بخوانید تا بیشتر بدانید.

2.3 برنامه تست محلی همراه را راه اندازی کنید

برنامه همراه منابعی مانند اسکریپت‌های پیشنهادی ساختگی/ امتیازدهی و نقاط پایانی K/V BYOS را فراهم می‌کند. برنامه باید قبل از اجرای خدمات B&A راه اندازی شود تا بتوان منابع را در سرویس ها بارگیری کرد.

مخزن برنامه تست محلی را پایین بکشید:

git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git

از ریشه مخزن، اسکریپت setup را اجرا کنید:

./setup

اسکریپت راه‌اندازی شبکه ba-dev Docker را ایجاد می‌کند، گواهی‌های SSL تولید می‌کند و تصویر برنامه آزمایشی را می‌سازد.

پس از موفقیت آمیز بودن ساخت، اسکریپت شروع را اجرا کنید:

./start

3. B&A را به صورت محلی بسازید و اجرا کنید

3.1 خدمات B&A را پایین بیاورید

ما دو مجموعه از خدمات B&A را روی یک دستگاه اجرا می کنیم، بنابراین مخزن را در دو پوشه مختلف پایین می آوریم.

مجموعه A:

مخزن B&A را پایین بکشید:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a

مجموعه B

مخزن B&A را پایین بکشید:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`

3.2 خدمات را بسازید

از پوشه ریشه هر پوشه B&A، دستور زیر را برای ساخت هر 4 سرویس اجرا کنید:

production/packaging/build_and_test_all_in_docker \
  --service-path bidding_service \
  --service-path auction_service \
  --service-path buyer_frontend_service \
  --service-path seller_frontend_service \
  --platform gcp \
  --instance local \
  --no-precommit \
  --no-tests \
  --build-flavor non_prod \
  --gcp-skip-image-upload

دستور بالا یک نمونه local از ساخت توسعه ( non_prod ) برای Google Cloud Platform ( gcp ) از هر 4 سرویس می‌سازد. در صورت نیاز، پرچم --platform را به ارائه دهنده ابر انتخابی خود به روز کنید. برای کسب اطلاعات بیشتر در مورد پرچم‌های ساخت، فایل build_and_test_all_docker را بررسی کنید.

ساخت اولیه ممکن است 2 ساعت طول بکشد در صورت استفاده از یک ماشین 64 هسته ای، و زمان ساخت به صورت خطی بر اساس تعداد هسته مقیاس می شود. اگر از دستگاه 32 هسته ای استفاده می کنید، ممکن است 4 ساعت طول بکشد. اگر از دستگاه 16 هسته ای استفاده می کنید، ممکن است 8 ساعت طول بکشد.

توجه داشته باشید که بیلدهای بعدی از کش استفاده می کنند و هر ساخت باید حدود 5-20 دقیقه طول بکشد.

کمیک xkcd مربوطه :

نشان می دهد دو برنامه نویس در حال سستی در دفتر هستند که باعث می شود مدیر به آنها بگوید که سر کار برگردند و کارگران می گویند که کد در حال کامپایل شدن است و مدیر با آن مشکلی ندارد و نویسنده این کمیک شماره یک را می داند. بهانه مشروع برای سستی

( من رندال مونرو از xkcd را در حین نوشتن این کد لبه ملاقات کردم و به او گفتم که این کمیک را اینجا اضافه کردم )

3.3 سرویس ها را اجرا کنید

برای آزمایش ما، 8 سرویس (4 سرویس در هر پشته) را اجرا خواهیم کرد. هر فرمان برای استفاده از منابع ارائه شده توسط Local Testing App تنظیم شده است. به شدت توصیه می شود از یک مدیر پنجره مانند tmux استفاده کنید.

حداقل 8 پنجره ترمینال اضافی باز کنید و دستورات زیر را در هر جلسه اجرا کنید.

توجه داشته باشید که سرور برنامه تست محلی باید قبلاً در یک فرآیند جداگانه اجرا شود، زیرا اسکریپت‌های مناقصه و امتیازدهی توسط برنامه ارائه می‌شوند.

3.3.1 دستورات A را تنظیم کنید

خدمات

فرمان

DSP-X Bidding Service

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.101 --network=ba-dev" \

BIDDING_JS_URL=https://192.168.84.100:5003/generate-bid.js \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bidding

سرویس DSP-X BFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.102 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5003/kv \

BIDDING_SERVER_ADDR=192.168.84.101:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

سرویس حراج SSP-BA

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.103 --network=ba-dev" \

AUCTION_JS_URL="https://192.168.84.100:6002/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

سرویس SSP-BA SFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.104 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6002" \

AUCTION_SERVER_ADDR="192.168.84.103:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6002/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 دستورات B را تنظیم کنید

خدمات

فرمان

DSP-X Bidding Service

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.201 --network=ba-dev" \

BIDDING_JS_URL=https://192.168.84.100:5004/generate-bid.js \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bidding

سرویس DSP-X BFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.202 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5004/kv \

BIDDING_SERVER_ADDR=192.168.84.201:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

سرویس حراج SSP-BA

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.203 --network=ba-dev" \

AUCTION_JS_URL="https://192.168.84.100:6003/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

سرویس SSP-BA SFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.204 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6003" \

AUCTION_SERVER_ADDR="192.168.84.203:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6003/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 متغیرهای محیطی برای اسکریپت های شروع محلی

برای کنترل رفتار راه اندازی می توان از متغیرهای محیطی زیر استفاده کرد.

Env var

در دسترس بودن

توضیحات

DOCKER_RUN_ARGS_STRING

کلیه خدمات

پرچم هایی برای تنظیم دستور docker

SKIP_TLS_VERIFICATION

کلیه خدمات

هنگامی که در حال آزمایش بر روی دستگاه محلی خود هستید، ممکن است لازم باشد از یک گواهی خودامضا استفاده کنید که در بررسی تأیید همتای SSL curl ناموفق است. پرچم تأیید همتا را همراه با بررسی نام میزبان SSL غیرفعال می کند.

پیش فرض ها به false .

PS_VERBOSITY

کلیه خدمات

سطح گزارش های خدمات. سطح بالاتر گزارش های بیشتری را فراهم می کند. 0 کمترین و 10 بیشترین است. پیش فرض 10 است.

BIDDING_PORT

خدمات مناقصه

بندر خدمات مناقصه. پیش فرض 50057 است

BIDDING_JS_URL

خدمات مناقصه

URL منطق مناقصه

EGRESS_SCHEMA_URL

خدمات مناقصه

خروجی داده ها برای آموزش مدل

INFERENCE_ARGS

خدمات مناقصه

استدلال برای استنباط مناقصه

BFE_PORT

سرویس BFE

پورت BFE Service. پیش فرض 50051 است

BUYER_KV_SERVER_ADDR

سرویس BFE

آدرس BYOS K/V خریدار

BUYER_TKV_V2_SERVER_ADDR

سرویس BFE

آدرس TEE K/V خریدار

BIDDING_SERVER_ADDR

سرویس BFE

آدرس خدمات مناقصه خریدار

AUCTION_PORT

خدمات حراج

بندر خدمات حراج. پیش فرض 50061 است

AUCTION_JS_URL

خدمات حراج

URL منطق امتیازدهی

BUYER_REPORT_WIN_URL

خدمات حراج

URL گزارش برنده خریدار

BUYER_REPORT_WIN_SCRIPT

خدمات حراج

اسکریپت گزارش برنده خریدار

BUYER_PAS_REPORT_WIN_SCRIPT

خدمات حراج

اسکریپت گزارش برنده خریدار برای PAS

SFE_PORT

سرویس SFE

پورت سرویس SFE پیش فرض 50053 است

AUCTION_SERVER_ADDR

سرویس SFE

آدرس خدمات حراج فروشنده

KEY_VALUE_SIGNALS_ADDR

سرویس SFE

آدرس BYOS K/V فروشنده

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

سرویس SFE

آدرس TEE K/V فروشنده

SELLER_ORIGIN_DOMAIN

سرویس SFE

منشاء فروشنده

BUYER_SERVER_ADDRS_JSON

سرویس SFE

آدرس های BFE خریدار

4. با Secure Invoke از خط فرمان تست کنید

4.1 تست SFE

همچنین می‌توانید از ابزار Secure Invoke که در بسته B&A Services موجود است برای تماس مستقیم با خدمات از خط فرمان استفاده کنید.

4.1.2 SFE SelectAd payload

درخواست JSON زیر با راه اندازی حراج B&A تک فروشنده SSP-BA پر شده است:

{
  "auction_config": {
    "seller": "https://localhost:6002",
    "auction_signals": "{\"testKey\":\"someValue\"}",
    "seller_signals": "{\"testKey\":\"someValue\"}",
    "buyer_list": [
      "https://localhost:5003",
      "https://localhost:5004"
    ],
    "per_buyer_config": {
      "https://localhost:5003": { "buyer_signals": "{\"testKey\":\"someValue\"}" },
      "https://localhost:5004": { "buyer_signals": "{\"testKey\":\"someValue\"}" }
    }
  },
  "raw_protected_audience_input": {
    "publisher_name": "http://localhost:4001",
    "generation_id": "1210718540",
    "enable_debug_reporting": true,
    "raw_buyer_input": {
      "https://localhost:5003": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      },
      "https://localhost:5004": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      }
    }
  }
}

فایل را به‌عنوان sfe-test.json در پوشه اصلی مخزن سرویس‌های B&A Set A ذخیره کنید (اسکریپت ساخت B&A فایل‌های موجود در پوشه ریشه مخزن را در پوشه /src/workspace تصویر Docker کپی می‌کند).

4.1.2 با SFE با فراخوانی امن تماس بگیرید

دستور زیر را از پوشه ریشه مخزن B&A Services اجرا کنید:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=sfe \
  -input_file=/src/workspace/sfe-test.json \
  -host_addr=192.168.84.104:50053 \
  -client_ip=192.168.84.100 \
  -insecure=true

اگر پشته های B&A به درستی تنظیم شده باشند، پاسخ موفقیت آمیز زیر را دریافت خواهید کرد:

{"adRenderUrl":"https://localhost:5004/ad.html","interestGroupName":"dsp-x-demo","interestGroupOwner":"https://localhost:5004","score":39,"bid":39,"biddingGroups":{"https://localhost:5003":{"index":[0]},"https://localhost:5004":{"index":[0]}}}

4.2 تست BFE

4.2.1 درخواست BFE GetBids

{
  "buyer_input": {
    "interest_groups": {
      "name": "dsp-x-demo",
      "ad_render_ids": ["1234"],
      "bidding_signals_keys": ["demo-key"],
      "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" }
    }
  },
  "auction_signals": "{\"testKey\":\"someValue\"}",
  "buyer_signals": "{\"testKey\":\"someValue\"}",
  "seller": "https://localhost:6002",
  "publisher_name": "http://localhost:4001",
  "enable_debug_reporting": true,
  "client_type": "CLIENT_TYPE_BROWSER"
}

فایل را به عنوان bfe-test.json در پوشه اصلی مخزن B&A Services ذخیره کنید.

4.2.2 با فراخوانی امن با BFE تماس بگیرید

دستور زیر را از پوشه ریشه مخزن B&A Services اجرا کنید:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=bfe \
  -input_file="/src/workspace/bfe-test.json" \
  -host_addr="192.168.84.102:50051" \
  -client_ip=192.168.84.100 \
  -insecure=true

اگر پشته‌های B&A به درستی تنظیم شده باشند، BFE پاسخ زیر را برمی‌گرداند:

{"bids":[{"bid":6,"render":"https://localhost:5003/ad.html","interestGroupName":"dsp-x-demo"}],"updateInterestGroupList":{}}

4.3 گزارش های SFE را بررسی کنید

از ترمینال دیدن کنید و سیاهههای مربوط به SFE را بررسی کنید. ما برخی از گزارش‌های قابل توجه در خروجی را مرور خواهیم کرد.

4.3.1 محموله رمزگذاری شده درخواست SelectAd

در این خروجی ورود به سیستم SFE، بار رمزگذاری شده فراخوانی navigator.getInterestGroupAdAuctionData() را پیدا می کنیم. این بار توسط مرورگر تولید می شود، از برچسب به SAS ارسال می شود و سپس SAS آن را به SFE ارسال می کند:

I1210 21:20:47.266673      37 select_ad_reactor.cc:228] Protected auction ciphertext: AEAAIAABAAKg3OQSSLEBMR1MmJiwfOT8uef41iE+DQIvKUowsQvVcGbWZ+r17ff2r/iTbEnwqLPtpAxSTy77mi+cVV5cKjkKb4piaZnKiCDIMCyEvrQUD4+BG+HgrbUFhqiWPmQhNThvInMaHuYrXG7xushbRtvSPsVzEl6iBZcLZzD7W3CHMFK7bnJ+ufu52W6B7/8dOQ1gZW6SpwXMGNcrurTGoucbwbZRIPqCcbZk76J1gB69wrDYRo1wQ6jmBleLM36nulxbEj/sHhpQIgr895aKqEGQ3Fy+/HHPTO+zHphcX44YeF6mZ/I+WxZTDxCi1x27nI4yvzC8vI4a/giJN5XUlJZGb/fMrj3/Qly+gwJ8lbxdX+4GWTooDoS4MTtiBpJqh9wkIQ5XwfO54p8Kv6j/tk+51hOfVkOdtGwX0LvVrWT9PiJOJHa23nZ1fLg/22mTe05xdbR3WVeA+xiO9YwF4ozyCYDRUkDyWB/3k9RuaaT9H5S1szVpuOuD2nYSRpT9svmpfG4kipiS6BTPZPX2whDlukpuuoFgdiDtH6cFShNhZ5C47R0ayAvaZ1QSpOZMWfA6pdl4nhvNLpOKesKY/KFDEBzpUXRDsQWsfvmdqFl1mCeX9rOrEc9rodYVLXXhM8GPycehHmvqkccTBW6kipOQlmnSdIYaFmtWSFpUrzxajGkct3mZdTjVjOf...

4.3.2 محموله رمزگشایی شده

در این خروجی، بار رمزگشایی شده فراخوانی navigator.getInterestGroupAdAuctionData() را می‌یابیم:

I1210 21:20:47.267590      37 select_ad_reactor.cc:347]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Decoded BuyerInput:
https://localhost:5003 : {interest_groups { name: "dsp-x-demo" bidding_signals_keys: "demo-key" browser_signals { join_count: 1 recency: 7 prev_wins: "[]" } }}

4.3.3 درخواست GetBids به BFE

درخواست GetBids از SFE به BFE ارسال می شود:

I1210 21:20:47.267710      37 select_ad_reactor.cc:751]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Getting bid from a BFE
I1210 21:20:47.267729      37 buyer_frontend_async_client.cc:52] Raw request:
buyer_input {
  interest_groups {
    name: "dsp-x-demo"
    bidding_signals_keys: "demo-key"
    browser_signals {
      join_count: 1
      recency: 7
      prev_wins: "[]"
    }
  }
}
auction_signals: "{\"testKey\":\"someValue\"}"
buyer_signals: "{\"testKey\": \"someValue\"}"
seller: "https://localhost:6002"
publisher_name: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
client_type: CLIENT_TYPE_BROWSER

4.3.4 پاسخ GetBids از BFE

BFE با پیشنهاد پاسخ می دهد:

I1210 21:20:47.282549      41 select_ad_reactor.cc:856]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Received response from a BFE ...
I1210 21:20:47.282552      41 select_ad_reactor.cc:859]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252)
GetBidsResponse:
bids {
  bid: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
}
update_interest_group_list {
}

4.3.5 درخواست ScoreAds به سرویس مزایده

پس از دریافت پیشنهادات، تماس ScoreAds توسط SFE با سرویس حراج برای هر پیشنهاد انجام می شود:

I1210 21:20:47.287898      18 select_ad_reactor.cc:1280]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) ScoreAdsRawRequest:
ad_bids {
  bid: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  interest_group_owner: "https://localhost:5003"
  join_count: 1
  k_anon_status: true
}
seller_signals: "{\"testKey\":\"someValue\"}"
auction_signals: "{\"testKey\":\"someValue\"}"
scoring_signals: "{\"renderUrls\":{\"https://localhost:5003/ad.html\":[1,2,3],\"https://localhost:5004/ad.html\":[1,2,3]}}"
publisher_hostname: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
per_buyer_signals {
  key: "https://localhost:5003"
  value: "{\"testKey\": \"someValue\"}"
}
per_buyer_signals {
  key: "https://localhost:5004"
  value: "{\"testKey\": \"someValue\"}"
}
seller: "https://localhost:6002"

4.3.6 پاسخ ScoreAds از Auction Service

خدمات حراج فروشنده با نمره مطلوبیت پاسخ می دهد:

I1210 21:20:47.298029      33 default_async_grpc_client.h:134] Decrypting the response ...
I1210 21:20:47.298100      33 default_async_grpc_client.h:152] Decryption/decoding of response succeeded: ad_score {
  desirability: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  buyer_bid: 9
  interest_group_owner: "https://localhost:5003"
  win_reporting_urls {
    top_level_seller_reporting_urls {
    }
  }
  ad_type: AD_TYPE_PROTECTED_AUDIENCE_AD
}

4.3.7 پاسخ Ad از SFE SelectAd

پاسخ SelectAd SFE رمزگذاری شده و به SAS ارسال می شود:

I1210 21:20:47.298428      33 select_ad_reactor.cc:1413]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Encrypted SelectAdResponse:
auction_result_ciphertext: "\023\233\252\321\000\331M\327\216\201S\332kl?\322\255\247\312\375h\007W\367\016\366FR\364\275\377\326\027h\204\203\265\t\271-\333\266\tH\342\033F\001k\211C\026V\013\271\255(\236\273\353\260\275\007\346\027\340?\005|\235S\244\265\2563U\246\322\177%\200/\3175\034 \020\024\362\345\3263\356F.s\261\005\231\262Z\000\330x\0230\335>\"\217\254\010\254\330>\206\007\274\235\037`\370W\032\207\356\367\206\026\341.i\"$\370\367\2554i\247\354\304e\306\2466S\337\321w\327+!\316\035:\002\231\246\362\366qm\211\000\013\343\345\224{\365py\361\374\316\202\217-\244\302\331\216D\025W#.\304nH\235\315\311<#\342\344\324\257\354\2441\251\312\320\226\342\021\377>3`\347/\350\254h\306\273\023\365\340@\321\2412\254\323\213\0137,\013n\220|\211\323/\030)\314\263\223\355>\254\312aa`!\375\335\023Z\234p\206\037\001\355\261{$\025+\341\275\327Ny\342\342\264=\376\2138\224\026\2058\251\020\202\245*46\023\307)K\342\364k<\2104r\247\034\216}\034\001\374\215\363\210\026\275\371S>\031;f.b\260\363\257.\255\023I\341A\237*_T\355\262\005\344L\336D%\327\267@\302$\300\340\203c\350|\337>C\275c\260\202o\315xp\260\257\241\305U\nK\033\274L6\025\350\373a:\253\212&>p\210\215\017&^\327\005_\037\020\212\362\351\341\231@g\372\0037\275b:)\207\303d\243?\261O\266\343\214\200\004\247\372\022S\326\200\037\330\252r\257+e\273[\231\202\3625{\330\213\240\370\245\\\214\350/\313\ty/\004\313\0304k\223\354\374\305\233\264\224K\344\241\251\322?\323q6\314D\027\200\203\035]\023O\306\230?\203\237:\254\305\265\332\330\2641l\322\020\022\330O-\242\207>Q\364_{F\235\353tk\207\035\205\005\221\373\207\0143\035\014\322\240H\220\347%\262f\347\017\352\273\265\231\014\204\r\312\254z\000\340&\354\222\323\245\356\217(i\246"

5. با برنامه تست محلی از مرورگر تست کنید

5.1 کروم را باز کنید

مقاله Chromium را در مورد راه‌اندازی Chrome از خط فرمان بخوانید و آن را با پرچم‌های زیر شروع کنید:

google-chrome --enable-privacy-sandbox-ads-apis --disable-features=EnforcePrivacySandboxAttestations,FledgeEnforceKAnonymity --enable-features=FledgeBiddingAndAuctionServerAPI,FledgeBiddingAndAuctionServer:FledgeBiddingAndAuctionKeyURL/https%3A%2F%2Fstorage.googleapis.com%2Fba-test-buyer%2Fcoordinator-test-key.json 

پرچم تنظیم شده است تا کلید هماهنگ کننده ساختگی را که در https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json میزبانی کرده ایم بارگیری کند.

مهم: قبل از باز کردن آن از خط فرمان با پرچم‌های B&A، مطمئن شوید که از تمام نمونه‌های کروم خارج شده‌اید. برای خروج از تمام فرآیندهای Chrome، ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 را اجرا کنید ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 .

5.2 از رابط کاربری برنامه تست محلی دیدن کنید

رابط کاربری برنامه را می‌توانید در http://localhost:3000 در نمونه مرورگر Chrome که با پرچم‌ها باز کرده‌اید، پیدا کنید. اگر از VM با نام میزبان متفاوت استفاده می کنید، آدرس دقیقی که بازدید می کنید ممکن است متفاوت باشد.

تصویری از برنامه آزمایش محلی در حال بازدید در یک مرورگر

در ردیف بالای برنامه، پانل "کنترل ها" حاوی دکمه هایی برای شبیه سازی تنظیمات مختلف حراج است. دو پانل دیگر حاوی iframe از سایت های تبلیغ کننده و ناشر است.

هنگامی که روی دکمه "بارگیری برچسب های DSP" در iframe صفحه تبلیغ کننده کلیک می کنید، یک اسکریپت از هر DSP به صفحه اضافه می شود. این اسکریپت ها کاربر را به گروه های علاقه مند اضافه می کنند. Chrome DevTools را باز کنید و برای بررسی گروه‌های علاقه‌مندی که با برچسب‌های DSP به آن‌ها ملحق شده‌اند، از «برنامه / ذخیره‌سازی / گروه‌های علاقه» بازدید کنید:

تصویری از گروه های علاقه مند در Chrome DevTools

سپس، روی دکمه‌های موجود در پانل «کنترل‌ها» کلیک کنید تا انواع مختلف حراج را شبیه‌سازی کنید.

تبلیغی که در مرورگر B&A ارائه شده است

اگر خدمات B&A و برنامه تست محلی به درستی تنظیم شده باشند، آگهی قبلی در پانل "سایت ناشر iframe" ارائه می شود.

5.3 تنظیمات حراج برنامه تست محلی

در برنامه آزمایشی محلی همراه، شرکت‌کنندگان زیر میزبانی می‌شوند که با شماره پورت متمایز می‌شوند (یک پورت متفاوت با مبدا متقابل در نظر گرفته می‌شود):

شرکت کننده

توضیحات

بندر

تبلیغ کننده

برچسب های DSP را در صفحه بارگیری می کند

4001

ناشر

برچسب های SSP را در صفحه بارگیری می کند

4002

DSP-A

خریدار روی دستگاه

5001

DSP-B

خریدار روی دستگاه

5002

DSP-X

خریدار B&A

5003

DSP-Y

خریدار B&A

5004

SSP-TOP

فروشنده سطح بالا

6001

SSP-OD

فروشنده فقط روی دستگاه

6002

SSP-BA

فروشنده فقط B&A

6003

SSP-MIX

فروشنده حالت مختلط

6004

چهار DSP وجود دارد:

  • DSP-A و DSP-B در مزایده های روی دستگاه شرکت می کنند
  • DSP-X و DSP-Y در مزایده های B&A شرکت می کنند

چهار SSP وجود دارد و هر فروشنده پیکربندی حراج متفاوتی را اجرا می کند:

  • SSP-OD یک حراج فقط روی دستگاه را اجرا می کند
  • SSP-BA یک حراج فقط B&A را اجرا می کند
  • SSP-MIX حراج حالت مختلط را اجرا می کند
  • SSP-TOP یک حراج چند فروشنده را اجرا می کند
    • SSP-OD/BA/MIX به عنوان فروشنده قطعات در حراج چند فروشنده SSP-TOP

برای معماری کامل، نمودار طراحی را بررسی کنید.

5.4 پیکربندی خدمات مزایده و مزایده

در این کد لبه، دو مجموعه B&A را در کنار یکدیگر اجرا می کنیم.

تنظیم کنید

خدمات

شرکت کننده

آدرس شبکه ba-dev

مجموعه A

خدمات مناقصه

DSP-X

192.168.84.101:50057

سرویس BFE

DSP-X

192.168.84.102:50051

خدمات حراج

SSP-BA

192.168.84.103:50061

سرویس SFE

SSP-BA

192.168.84.104:50053

مجموعه B

خدمات مناقصه

DSP-Y

192.168.84.201:50057

سرویس BFE

DSP-Y

192.168.84.202:50051

خدمات حراج

SSP-MIX

192.168.84.203:50061

سرویس SFE

SSP-MIX

192.168.84.204:50053

برنامه

برنامه تست محلی

همه

https://192.168.84.100:PORT

  • در مجموعه A، خدمات خریدار توسط DSP-X و خدمات فروشنده توسط SSP-BA استفاده می شود.
  • در مجموعه B، خدمات خریدار توسط DSP-Y و خدمات فروشنده توسط SSP-MIX استفاده می شود.

برای برقراری ارتباط بین Local Testing App و B&A Services، از شبکه Docker Bridge استفاده می شود. شبکه پل ba-dev توسط اسکریپت راه اندازی برنامه تست محلی ایجاد شده است. به خدمات B&A یک آدرس IP در زیرشبکه 192.168.84.0 اختصاص داده شده است.

به عنوان مثال، هنگامی که از برنامه Set A's SFE تماس می گیرید، از آدرس شبکه 192.168.84.104:50053 استفاده می شود. هنگامی که اسکریپت پیشنهاد قیمت ساختگی را از DSP-X در BFE بارگیری می کنید، https://192.168.84.100:5003/generate-bid.js استفاده می شود.

6. بسته بندی کنید

تا به حال، امیدواریم که با اجرای پشته خدمات B&A به صورت محلی بر روی دستگاه خود آشنا شده باشید و درک بهتری از نحوه ارتباط سرویس ها با یکدیگر به دست آورده باشید.

6.1. پشتیبانی فنی

6.2 بیشتر بدانید