۱. مقدمه
خدمات مناقصه و حراج (B&A) شامل ۴ سرویس برای خریداران و فروشندگان است تا حراج مخاطبان محافظتشده را تسهیل کند:
مجموعه خریداران:
- خدمات پشتیبانی خریدار
- خدمات مناقصه
پشته فروشنده:
- خدمات پشتیبانی فروشنده
- خدمات حراج
این آزمایشگاه کد، شما را در راهاندازی و آزمایش کامل تنظیمات در محیط محلیتان راهنمایی میکند. انتظار میرود این آموزش، بدون احتساب زمان ساخت اولیه سرویس، تقریباً ۱ ساعت طول بکشد.
حتی اگر فقط روی کد سمت خرید یا کد سمت فروش کار کنید، مفید است که جریان سرتاسری را در محیط محلی خود راهاندازی کنید تا بهتر بفهمید که چگونه مجموعههای خریدار و فروشنده با یکدیگر کار میکنند. با راهاندازی هر دو مجموعه، میتوانید بعداً وقتی با مجموعه خریدار یا فروشنده مربوطه طرف دیگر ادغام میشوید، اطمینان بیشتری داشته باشید. آزمایش سرویسها به صورت محلی همچنین در هزینههای توسعه شما صرفهجویی میکند.
در این آزمایشگاه کد، از اپلیکیشن تست محلی B&A به عنوان راهنمای گام به گام استفاده خواهیم کرد.
برنامه تست محلی همراه، منابع مختلف خریدار و فروشنده مورد استفاده در حراج B&A را میزبانی میکند. این برنامه همچنین یک رابط کاربری در http://localhost:3000 ارائه میدهد که در آن میتوانید پیکربندیهای مختلف حراج را شبیهسازی کنید.
۲. تنظیمات محیطی
۲.۱ آمادهسازی یک دستگاه لینوکس
از یک دستگاه لینوکس محلی استفاده کنید، یا یک ماشین مجازی لینوکس از ارائه دهنده ابری مورد نظر خود تهیه کنید. برای بهبود زمان ساخت، حداقل ۱۶ هسته به عنوان حداقل توصیه میشود و ۳۲ هسته یا بیشتر ترجیح داده میشود.
توجه داشته باشید که ما یک صفحه HTML را از http://localhost:3000 این دستگاه بارگذاری خواهیم کرد. اگر ماشین مجازی رابط کاربری گرافیکی (GUI) ارائه نمیدهد، مطمئن شوید که پورت 3000 برای دستگاه محلی شما قابل دسترسی است تا بتوانید به آن متصل شوید.
۲.۲ نصب داکر
ما از داکر برای اجرای سرویسها و برنامه تست محلی استفاده میکنیم.
ما از اسکریپت راحتی برای نصب داکر در یک محیط آزمایشی استفاده خواهیم کرد.
# 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 را مطالعه کنید.
۲.۳ برنامه تست محلی همراه را اجرا کنید
برنامه همراه، منابعی مانند اسکریپتهای پیشنهاد قیمت یا امتیازدهی آزمایشی و نقاط پایانی K/V BYOS آزمایشی را ارائه میدهد. این برنامه باید قبل از اجرای سرویسهای B&A اجرا شود تا منابع بتوانند در سرویسها بارگذاری شوند.
مخزن Local Testing App را باز کنید:
git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git
از ریشه مخزن، اسکریپت راهاندازی را اجرا کنید:
./setup
اسکریپت راهاندازی، شبکه ba-dev Docker را ایجاد میکند، گواهینامههای SSL تولید میکند و تصویر برنامه آزمایشی را میسازد.
پس از موفقیتآمیز بودن ساخت، اسکریپت شروع را اجرا کنید:
./start
۳. ساخت و اجرای B&A به صورت محلی
۳.۱ خدمات تخلیه بار و مسافر
ما دو مجموعه از سرویسهای B&A را روی یک دستگاه اجرا خواهیم کرد، بنابراین مخزن را به دو پوشه مختلف منتقل خواهیم کرد.
مجموعه الف:
مخزن B&A را پایین بکشید:
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a
مجموعه ب
مخزن B&A را پایین بکشید:
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`
۳.۲ ساخت سرویسها
از پوشه ریشه هر پوشه 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 ( gcp ) از هر 4 سرویس ایجاد میکند. در صورت نیاز، پرچم --platform را به ارائهدهنده ابری مورد نظر خود بهروزرسانی کنید. برای کسب اطلاعات بیشتر در مورد پرچمهای ساخت، فایل build_and_test_all_docker را بررسی کنید.
اگر از یک دستگاه ۶۴ هستهای استفاده میکنید، ساخت اولیه ممکن است ۲ ساعت طول بکشد و زمان ساخت به صورت خطی با تعداد هستهها تغییر میکند. اگر از یک دستگاه ۳۲ هستهای استفاده میکنید، ممکن است ۴ ساعت طول بکشد. اگر از یک دستگاه ۱۶ هستهای استفاده میکنید، ممکن است ۸ ساعت طول بکشد.
توجه داشته باشید که ساختهای بعدی از حافظه پنهان استفاده میکنند و هر ساخت باید حدود ۵ تا ۲۰ دقیقه طول بکشد.
دو برنامهنویس در حین اجرای یک پروژه، از انجام وظایفشان شانه خالی میکنند.
( من هنگام نوشتن این codelab با رندال مونرو از xkcd آشنا شدم و به او گفتم که این کمیک را اینجا اضافه کردهام .)
۳.۳ اجرای سرویسها
برای آزمایش، ما ۸ سرویس (۴ سرویس در هر پشته) را اجرا خواهیم کرد. هر دستور طوری تنظیم شده است که از منابع ارائه شده توسط برنامه تست محلی (Local Testing App) استفاده کند. اکیداً توصیه میشود از یک مدیر پنجره مانند tmux استفاده کنید.
حداقل ۸ پنجره ترمینال دیگر باز کنید و دستورات زیر را در هر جلسه اجرا کنید.
توجه داشته باشید که سرور برنامه تست محلی باید از قبل در یک فرآیند جداگانه در حال اجرا باشد، زیرا اسکریپتهای پیشنهاد قیمت و امتیازدهی توسط برنامه ارائه میشوند.
۳.۳.۱ دستورات تنظیم A
خدمات | فرمان |
سرویس مناقصه | |
سرویس BFE | |
خدمات حراج | |
خدمات | |
۳.۳.۲ تنظیم دستورات B
خدمات | فرمان |
سرویس مناقصه | |
سرویس BFE | |
خدمات حراج | |
خدمات | |
۳.۳.۲ متغیرهای محیطی برای اسکریپتهای شروع محلی
متغیرهای محیطی زیر میتوانند برای کنترل رفتار راهاندازی استفاده شوند.
متغیر Env | در دسترس بودن | توضیحات |
| همه خدمات | پرچمهایی که باید برای دستور docker تنظیم شوند |
| همه خدمات | وقتی روی دستگاه محلی خود آزمایش میکنید، ممکن است نیاز به استفاده از یک گواهی خودامضا داشته باشید که بررسی تأیید همتای SSL در پیشفرض روی |
| همه خدمات | سطح گزارشهای سرویس. سطح بالاتر، گزارشهای بیشتری را ارائه میدهد. ۰ کمترین و ۱۰ بیشترین است. مقدار پیشفرض |
| خدمات مناقصه | پورت سرویس مناقصه. مقدار پیشفرض |
| خدمات مناقصه | آدرس اینترنتی منطق پیشنهاد قیمت |
| خدمات مناقصه | خروجی دادهها برای آموزش مدل |
| خدمات مناقصه | استدلالهایی برای استنتاج مبتنی بر پیشنهاد قیمت |
| خدمات BFE | پورت سرویس BFE. مقدار پیشفرض |
| خدمات BFE | آدرس BYOS K/V خریدار |
| خدمات BFE | آدرس TEE K/V خریدار |
| خدمات BFE | آدرس خدمات مناقصه خریدار |
| خدمات حراج | پورت سرویس حراج. پیشفرض |
| خدمات حراج | آدرس اینترنتی منطق امتیازدهی |
| خدمات حراج | آدرس اینترنتی گزارش برد خریدار |
| خدمات حراج | اسکریپت گزارش برد خریدار |
| خدمات حراج | اسکریپت گزارش برد خریدار برای PAS |
| خدمات SFE | پورت سرویس SFE. مقدار پیشفرض |
| خدمات SFE | آدرس خدمات حراج فروشنده |
| خدمات SFE | آدرس BYOS K/V فروشنده |
| خدمات SFE | آدرس TEE K/V فروشنده |
| خدمات SFE | اصالت فروشنده |
| خدمات SFE | آدرسهای BFE خریدار |
۴. تست با Secure Invoke از خط فرمان
۴.۱ آزمایش SFE
همچنین میتوانید از ابزار Secure Invoke که در بسته B&A Services موجود است، برای فراخوانی مستقیم سرویسها از خط فرمان استفاده کنید.
۴.۱.۲ بار داده SFE SelectAd
درخواست 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 مجموعه A ذخیره کنید (اسکریپت ساخت B&A فایلهای موجود در پوشه ریشه مخزن را در پوشه /src/workspace از ایمیج داکر کپی میکند).
۴.۱.۲ فراخوانی SFE با فراخوانی امن
دستور زیر را از پوشه ریشه مخزن سرویسهای B&A اجرا کنید:
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]}}}
۴.۲ آزمایش BFE
۴.۲.۱ درخواست 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 ذخیره کنید.
۴.۲.۲ فراخوانی BFE با فراخوانی امن
دستور زیر را از پوشه ریشه مخزن سرویسهای B&A اجرا کنید:
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":{}}
۴.۳ بررسی لاگهای SFE
به ترمینال مراجعه کنید و لاگهای SFE را بررسی کنید. در ادامه به بررسی برخی از لاگهای قابل توجه در خروجی خواهیم پرداخت.
۴.۳.۱ بار داده رمزگذاری شده درخواست SelectAd
در این خروجی لاگ SFE، ما payload رمزگذاریشدهی فراخوانی navigator.getInterestGroupAdAuctionData() را پیدا میکنیم. این payload توسط مرورگر تولید میشود، از تگ به 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...
۴.۳.۲ بار داده رمزگشایی شده
در این خروجی، ما فایل رمزگشاییشدهی فراخوانی 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: "[]" } }}
۴.۳.۳ درخواست 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
۴.۳.۴ پاسخ 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 {
}
۴.۳.۵ درخواست ScoreAds به سرویس حراج
پس از دریافت پیشنهادها، SFE برای هر پیشنهاد، ScoreAds به سرویس مزایده اعلام میکند:
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"
۴.۳.۶ پاسخ ScoreAds از سرویس حراج
سرویس حراج فروشنده با امتیاز مطلوبیت پاسخ میدهد:
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
}
۴.۳.۷ پاسخ SelectAd از SFE
پاسخ 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"
۵. تست با برنامه تست محلی از طریق مرورگر
۵.۱ کروم را باز کنید
مقاله Chromium در مورد اجرای کروم از خط فرمان را بخوانید و آن را با پرچمهای زیر اجرا کنید:
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 به طور کامل خارج شدهاید. برای خروج از تمام فرآیندهای Chrome، دستور ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 از خط فرمان اجرا کنید.
۵.۲ از رابط کاربری برنامه آزمایشی محلی دیدن کنید
رابط کاربری برنامه را میتوانید در آدرس http://localhost:3000 در مرورگر کرومی که با پرچمها باز کردهاید، پیدا کنید. اگر از ماشین مجازی با نام میزبان متفاوت استفاده میکنید، آدرس دقیقی که بازدید میکنید ممکن است متفاوت باشد.
تصویری از برنامه آزمایشی محلی که در مرورگر مشاهده میشود
در ردیف بالای برنامه، پنل «کنترلها» شامل دکمههایی برای شبیهسازی پیکربندیهای مختلف حراج است. دو پنل دیگر شامل آیفریمهایی از سایتهای تبلیغکننده و ناشر هستند.
تصویری از گروههای ذینفع در Chrome DevTools.
سپس، روی دکمههای پنل «کنترلها» کلیک کنید تا انواع مختلف حراج را شبیهسازی کنید.

اگر سرویسهای B&A و برنامه تست محلی به درستی تنظیم شده باشند، تبلیغ قبلی در پنل «iframe سایت ناشر» نمایش داده میشود.
۵.۳ پیکربندی حراج برنامه آزمایشی محلی
در برنامه تست محلی همراه، شرکتکنندگان زیر میزبانی میشوند که بر اساس شماره پورت (پورت متفاوت، کراس-اوریجین در نظر گرفته میشود) از هم متمایز میشوند:
شرکتکننده | توضیحات | بندر |
تبلیغ کننده | تگهای DSP را روی صفحه بارگذاری میکند | |
ناشر | تگهای SSP را در صفحه بارگذاری میکند | |
| خریدار روی دستگاه | |
| خریدار روی دستگاه | |
| خریدار B&A | |
| خریدار B&A | |
| فروشنده سطح بالا | |
| فروشنده فقط روی دستگاه | |
| فروشنده فقط برای صبحانه و شام | |
| فروشنده با حالت ترکیبی | |
چهار 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شرکت میکنند.
-
برای معماری کامل، نمودار طراحی را بررسی کنید.
۵.۴ پیکربندی خدمات مناقصه و مزایده
در این آزمایشگاه کد، ما دو مجموعه از B&A را در کنار یکدیگر اجرا میکنیم.
تنظیم | خدمات | شرکتکننده | آدرس شبکه |
مجموعه الف | خدمات مناقصه | | |
خدمات BFE | | | |
خدمات حراج | | | |
خدمات SFE | | | |
مجموعه ب | خدمات مناقصه | | |
خدمات BFE | | | |
خدمات حراج | | | |
خدمات SFE | | | |
برنامه | برنامه تست محلی | همه | |
- در مجموعه A، خدمات خریدار توسط
DSP-Xو خدمات فروشنده توسطSSP-BAاستفاده میشود. - در مجموعه B، خدمات خریدار توسط
DSP-Yو خدمات فروشنده توسطSSP-MIXاستفاده میشوند.
برای ارتباط بین Local Testing App و B&A Services، از یک شبکه Docker bridge استفاده میشود. شبکه ba-dev bridge توسط اسکریپت راهاندازی Local Testing App ایجاد میشود. به سرویسهای B&A یک آدرس IP در زیرشبکه 192.168.84.0 اختصاص داده شده است.
برای مثال، وقتی SFE مجموعه A را از برنامه فراخوانی میکنید، از آدرس شبکه 192.168.84.104:50053 استفاده میشود. وقتی اسکریپت پیشنهاد قیمت آزمایشی را از DSP-X در BFE بارگذاری میکنید، از https://192.168.84.100:5003/generate-bid.js استفاده میشود.
۶. جمعبندی
تا اینجا، امیدواریم که با اجرای پشته سرویسهای B&A به صورت محلی روی دستگاه خود آشنا شده باشید و درک بهتری از نحوه ارتباط سرویسها با یکدیگر به دست آورده باشید.
۶.۱ پشتیبانی فنی
- اگر در مورد راهاندازی برنامه تست محلی سؤالی دارید، یک مشکل را در مخزن LTA باز کنید .
- اگر در مورد خدمات مناقصه و مزایده سوالی دارید، در مخزن خدمات B&A یک موضوع (issue) باز کنید .
۶.۲ اطلاعات بیشتر
- درباره معماری B&A برای وب بیشتر بدانید
- درباره ادغام فروشنده با B&A برای وب بیشتر بدانید