ما څنګه داسې ژوند تېر کړ؟
ډیر وخت دمخه ما د یوې خورا بار شوي پروژې شالید کې کار کولو ته اړتیا درلوده ، په کوم کې چې دا اړینه وه چې د پیچلو محاسبو او د دریمې ډلې خدماتو غوښتنې سره د ډیری شالید کارونو منظم اجرا تنظیم کړئ. پروژه غیر متناسب ده او مخکې لدې چې زه راغلم ، دا د کرون لانچ کولو کارونو لپاره یو ساده میکانیزم درلود: یو لوپ چې اوسنی وخت چیک کوي او د راټولولو له لارې د کورټینونو ګروپونه پیلوي - دا طریقه د منلو وړ وګرځید تر هغه چې په لسګونو او سلګونو داسې کورټینونه شتون ولري. په هرصورت، کله چې د دوی شمیر له دوو زرو څخه زیات شو، ما باید د یو بروکر، څو کارمندانو او داسې نورو سره د عادي کاري کتار تنظیم کولو په اړه فکر وکړ.
لومړی ما پریکړه وکړه چې د سیلري هڅه وکړم، کوم چې ما مخکې کارولی و. د پروژې د غیر متناسب طبیعت له امله ، ما پوښتنې ته ډوب شو او ولیدل
زه به دا ووایم، پروژه خورا په زړه پورې ده او زموږ د ټیم په نورو غوښتنلیکونو کې په بریالیتوب سره کار کوي، او لیکوال پخپله وايي چې هغه د دې توان درلود چې د غیر متمرکز حوض په کارولو سره دا تولید ته واړوي. مګر، له بده مرغه، دا واقعیا زما سره مناسب نه و، لکه څنګه چې دا معلومه شوه
په دې اړه، ما په لټه کې پیل وکړ بدیلونه او وموندله! د سیلري جوړونکي، په ځانګړې توګه، لکه څنګه چې زه پوهیږم
همدارنګه، تاسو کولی شئ وګورئ
څه وکړو؟
نو، د مقالو په یوه لنډه لړۍ کې، زه به تاسو ته وښیم چې څنګه د فاسټ په کارولو سره د شالید دندو څخه ډاټا راټول کړئ. زموږ د مثال پروژې سرچینه به وي، لکه څنګه چې نوم وړاندیز کوي،
PS د اعتماد له مخې قضاوت کول چې د څارنې په اړه ټکي لیکل شوي ، زه فکر کوم چې د وروستۍ مقالې په پای کې لوستونکی به لاهم یو څه ورته وګوري:
د پروژې اړتیاوې
د دې حقیقت له امله چې ما دمخه ژمنه کړې ، راځئ چې د هغه څه یو کوچنی لیست جوړ کړو چې خدمت باید ترسره شي:
- تضمینات او د دوی یوه عمومي کتنه (په شمول د ګټې او زیانونو ، بیلانس شیټ ، د نغدو جریان - د تیر کال لپاره) - په منظم ډول
- تاریخي ډاټا اپلوډ کړئ (د هر سوداګریز کال لپاره، د سوداګرۍ د پای نرخ خورا ارزښتونه ومومئ) - په منظمه توګه
- د سوداګرۍ وروستي معلومات اپلوډ کړئ - په منظم ډول
- د هر امنیت لپاره د شاخصونو دودیز لیست اپلوډ کړئ - په منظمه توګه
لکه څنګه چې تمه کیده، موږ له سکریچ څخه د پروژې لپاره نوم غوره کوو: هارټون
موږ زیربنا چمتو کوو
سرلیک یقینا پیاوړی دی، په هرصورت، ټول هغه څه چې تاسو یې کولو ته اړتیا لرئ د کافکا (او زوکیپر - په یوه کانټینر کې)، کافډراپ (که موږ غواړو په موضوعاتو کې پیغامونه وګورو)، مونګوډب سره د ډاکر-کمپوز لپاره یو کوچنی ترتیب ولیکئ. موږ ترلاسه کوو [docker-compose.yml](
version: '3'
services:
db:
container_name: horton-mongodb-local
image: mongo:4.2-bionic
command: mongod --port 20017
restart: always
ports:
- 20017:20017
environment:
- MONGO_INITDB_DATABASE=horton
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin_password
kafka-service:
container_name: horton-kafka-local
image: obsidiandynamics/kafka
restart: always
ports:
- "2181:2181"
- "9092:9092"
environment:
KAFKA_LISTENERS: "INTERNAL://:29092,EXTERNAL://:9092"
KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-service:29092,EXTERNAL://localhost:9092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
KAFKA_ZOOKEEPER_SESSION_TIMEOUT: "6000"
KAFKA_RESTART_ATTEMPTS: "10"
KAFKA_RESTART_DELAY: "5"
ZOOKEEPER_AUTOPURGE_PURGE_INTERVAL: "0"
kafdrop:
container_name: horton-kafdrop-local
image: 'obsidiandynamics/kafdrop:latest'
restart: always
ports:
- '9000:9000'
environment:
KAFKA_BROKERCONNECT: kafka-service:29092
depends_on:
- kafka-service
Тут вообще ничего сложного. Для kafka объявили два listener’а: одного (internal) для использования внутри композной сети, а второго (external) для запросов из вне, поэтому пробросили его наружу. 2181 — порт zookeeper’а. По остальному, я думаю, ясно.
د پروژې کنکال چمتو کول
په اساسي نسخه کې، زموږ د پروژې جوړښت باید داسې ښکاري:
horton
├── docker-compose.yml
└── horton
├── agents.py *
├── alphavantage.py *
├── app.py *
├── config.py
├── database
│ ├── connect.py
│ ├── cruds
│ │ ├── base.py
│ │ ├── __init__.py
│ │ └── security.py *
│ └── __init__.py
├── __init__.py
├── records.py *
└── tasks.py *
*هرڅه چې ما یادونه وکړه موږ تر اوسه دې ته لاس نه ورکوو، موږ یوازې خالي فایلونه جوړوو.**
موږ یو جوړښت جوړ کړ. اوس راځئ چې اړین انحصارونه اضافه کړو، ترتیب ولیکئ او د mongodb سره وصل شئ. زه به په مقاله کې د فایلونو بشپړ متن چمتو نکړم، ترڅو دا وځنډول شي، مګر زه به د اړینو نسخو لینکونه چمتو کړم.
راځئ چې د پروژې په اړه د انحصار او میټا سره پیل وکړو -
بیا، موږ د انحصارونو نصبول پیل کوو او د مجازیینو رامینځته کول (یا تاسو کولی شئ پخپله د وینو فولډر رامینځته کړئ او چاپیریال فعال کړئ):
pip3 install poetry (если ещё не установлено)
poetry install
اوس راځئ چې جوړ کړو
کله چې مونګو سره وصل شئ ، هرڅه خورا ساده دي. اعلان وکړ
بیا به څه کیږي؟
مقاله ډیره اوږده نه ده، ځکه چې دلته زه یوازې د هڅونې او چمتو کولو په اړه خبرې کوم، نو ما ملامت مه کوئ - زه ژمنه کوم چې راتلونکې برخه به عمل او ګرافیک ولري.
نو، پدې بله برخه کې موږ:
- راځئ چې په aiohttp کې د الفاوانټیج لپاره یو کوچنی پیرودونکی ولیکئ د پای ټکي لپاره غوښتنې سره چې موږ ورته اړتیا لرو.
- راځئ یو اجنټ جوړ کړو چې د دوی لپاره د تضمیناتو او تاریخي نرخونو معلومات راټول کړي.
سرچینه: www.habr.com