Membina Perkhidmatan Mikro Berpacukan Peristiwa
Reka bentuk dan laksanakan seni bina perkhidmatan mikro yang kukuh, dengan fungsi Lambda berkomunikasi secara tak segerak melalui peristiwa bagi menggalakkan gandingan longgar dan kebolehskalaan.
Membina Perkhidmatan Mikro Berpacukan Peristiwa ialah pelajaran Pembangunan AWS Lambda Tanpa Pelayan percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pembangunan AWS Lambda Tanpa Pelayan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pembangunan AWS Lambda Tanpa Pelayan merangkumi sejumlah 4 pelajaran.
Perkhidmatan Mikro dan Komunikasi Peristiwa
Aplikasi moden sering dipecahkan kepada perkhidmatan kecil dan bebas yang dipanggil perkhidmatan mikro. Pendekatan ini membantu mengurus kerumitan dan membolehkan pasukan bekerja secara bebas.
Namun, bagaimanakah perkhidmatan ini berkomunikasi antara satu sama lain? Kaedah tradisional seperti panggilan API terus boleh mewujudkan kebergantungan yang rapat. Di sinilah seni bina dipacu peristiwa terserlah!
Kekuatan Seni Bina Dipacu Peristiwa
Perkhidmatan mikro dipacu peristiwa berkomunikasi dengan menghantar dan bertindak balas terhadap peristiwa. Bayangkan satu perkhidmatan mengumumkan "sesuatu telah berlaku!" tanpa mengambil berat tentang pihak yang mendengarnya.
- Gandingan Longgar: Perkhidmatan tidak perlu mengetahui antara satu sama lain.
- Kebolehskalaan: Setiap perkhidmatan boleh diskalakan secara bebas.
- Ketahanan: Kegagalan dalam satu perkhidmatan kurang berkemungkinan menjejaskan perkhidmatan lain.
- Fleksibiliti: Tambahkan pengguna baharu dengan mudah tanpa mengubah pengeluar sedia ada.
Penjelasan tentang Peristiwa dan Pengeluar
Di tengah-tengah corak ini terdapat peristiwa dan pengeluar peristiwa.
- Peristiwa ialah rekod tentang sesuatu yang berlaku, seperti "OrderCreated" atau "ProductUpdated". Biasanya, peristiwa ialah paket data kecil.
- Pengeluar peristiwa ialah perkhidmatan yang menjana dan menerbitkan peristiwa ini. Perkhidmatan itu melaksanakan tindakan lalu mengumumkannya kepada semua pihak.
Pengeluar tidak menunggu respons; pengeluar hanya menerbitkan peristiwa lalu meneruskan tugasnya.
Pengguna dan Bas Peristiwa
Di sisi yang lain, terdapat pengguna peristiwa dan bas peristiwa.
- Pengguna peristiwa ialah perkhidmatan yang melanggan dan memproses peristiwa tertentu. Fungsi AWS Lambda amat sesuai sebagai pengguna peristiwa!
- Bas peristiwa (seperti Amazon SNS atau EventBridge) bertindak sebagai penghala pusat. Pengeluar menghantar peristiwa kepada bas, dan bas menghantarnya kepada pengguna yang berminat.
Pusat ini memisahkan pengeluar daripada pengguna.
Aliran Contoh Perkhidmatan Mikro
Mari kita bayangkan sebuah sistem e-dagang:
- Seorang pengguna membuat pesanan (Perkhidmatan Pesanan).
- Perkhidmatan Pesanan menerbitkan peristiwa "OrderCreated" ke bas peristiwa.
- Perkhidmatan Inventori (Lambda) menggunakan "OrderCreated" untuk mengemas kini stok.
- Perkhidmatan Pemberitahuan (Lambda) juga menggunakan "OrderCreated" untuk menghantar e-mel pengesahan.
Setiap perkhidmatan beroperasi secara bebas dan bertindak balas terhadap peristiwa yang sama.
Lambda Pengeluar dalam Python
Berikut ialah fungsi Lambda Python ringkas yang bertindak sebagai pengeluar peristiwa. Fungsi ini menerbitkan peristiwa "UserRegistered" ke topik Amazon SNS.
Ingat untuk menggantikan 'arn:aws:sns:REGION:ACCOUNT_ID:MyTopic' dengan ARN topik SNS sebenar anda.
import json
import boto3
sns_client = boto3.client('sns')
SNS_TOPIC_ARN = 'arn:aws:sns:REGION:ACCOUNT_ID:MyTopic' # Replace with your SNS Topic ARN
def lambda_handler(event, context):
user_id = 'user123'
username = 'Alice'
event_payload = {
'detail-type': 'UserRegistered',
'source': 'com.coddykit.userservice',
'detail': {
'userId': user_id,
'username': username
}
}
try:
response = sns_client.publish(
TopicArn=SNS_TOPIC_ARN,
Message=json.dumps(event_payload),
MessageAttributes={
'event_type': {
'DataType': 'String',
'StringValue': 'UserRegistered'
}
}
)
print(f"Published event: {event_payload}")
return {
'statusCode': 200,
'body': json.dumps('Event published successfully!')
}
except Exception as e:
print(f"Error publishing event: {e}")
return {
'statusCode': 500,
'body': json.dumps(f'Error: {str(e)}')
}
Lambda Pengguna dalam Python
Sekarang, mari kita cipta fungsi Lambda Python yang bertindak sebagai pengguna peristiwa. Fungsi ini akan dilanggan kepada topik SNS daripada babak sebelumnya.
Fungsi ini hanya mencatat peristiwa yang diterima, sebagai simulasi pemprosesannya.
import json
def lambda_handler(event, context):
print("Received event:")
print(json.dumps(event, indent=2))
# Extract message from SNS notification
if 'Records' in event:
for record in event['Records']:
if 'Sns' in record:
sns_message = json.loads(record['Sns']['Message'])
print(f"Processing event of type: {sns_message.get('detail-type')}")
print(f"User ID: {sns_message.get('detail', {}).get('userId')}")
# Add your business logic here
return {
'statusCode': 200,
'body': json.dumps('Event processed successfully!')
}
Faedah Gandingan Longgar
Perhatikan bahawa Lambda pengeluar (Perkhidmatan Pengguna) tidak mengetahui apa-apa tentang Lambda pengguna (contohnya, Perkhidmatan E-mel Aluan). Ia hanya menerbitkan peristiwa "UserRegistered".
- Jika anda menambah perkhidmatan baharu (contohnya, Perkhidmatan Mata Kesetiaan) yang juga perlu bertindak balas terhadap "UserRegistered", anda hanya perlu melanggankannya kepada topik SNS yang sama.
- Tiada perubahan diperlukan pada Perkhidmatan Pengguna! Fleksibiliti ini penting untuk mengembangkan seni bina perkhidmatan mikro.
Kebolehskalaan & Ketahanan
Corak dipacu peristiwa meningkatkan kebolehskalaan dan ketahanan dengan ketara:
- Kebolehskalaan: Setiap pengguna boleh diskalakan secara bebas berdasarkan beban kerjanya. Jika Perkhidmatan Pemberitahuan sibuk, ia tidak akan memperlahankan Perkhidmatan Inventori.
- Ketahanan: Jika pengguna gagal buat sementara waktu, bas peristiwa biasanya akan mencuba semula penghantaran (untuk perkhidmatan tertentu) atau peristiwa itu boleh disimpan dalam Baris Gilir Surat Mati (DLQ) untuk diproses kemudian, sekali gus mencegah kehilangan data.
Hal ini menjadikan keseluruhan sistem anda lebih teguh.
Semakan Perkhidmatan Mikro Dipacu Peristiwa
Mari uji pemahaman anda tentang seni bina perkhidmatan mikro dipacu peristiwa.
Imbas Kembali: Perkhidmatan Mikro Dipacu Peristiwa
Anda telah mempelajari bahawa seni bina dipacu peristiwa ialah asas penting untuk membina perkhidmatan mikro yang teguh dan boleh diskalakan menggunakan AWS Lambda.
- Perkhidmatan berkomunikasi secara tak segerak melalui peristiwa.
- Pengeluar peristiwa menerbitkan peristiwa ke bas peristiwa (seperti SNS).
- Pengguna peristiwa (fungsi Lambda) melanggan dan bertindak balas terhadap peristiwa ini.
- Corak ini menghasilkan gandingan longgar, kebolehskalaan bebas, dan ketahanan sistem yang lebih tinggi.
Teruskan membina perkhidmatan terpisah yang hebat!
Pelajari Pembangunan AWS Lambda Tanpa Pelayan dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Membina Perkhidmatan Mikro Berpacukan Peristiwa” percuma?
Ya — teks penuh “Membina Perkhidmatan Mikro Berpacukan Peristiwa” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pembangunan AWS Lambda Tanpa Pelayan, tingkat taraf kepada CoddyKit PRO. Kursus Pembangunan AWS Lambda Tanpa Pelayan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Membina Perkhidmatan Mikro Berpacukan Peristiwa”?
Reka bentuk dan laksanakan seni bina perkhidmatan mikro yang kukuh, dengan fungsi Lambda berkomunikasi secara tak segerak melalui peristiwa bagi menggalakkan gandingan longgar dan kebolehskalaan. Anda berlatih Pembangunan AWS Lambda Tanpa Pelayan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pembangunan AWS Lambda Tanpa Pelayan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pembangunan AWS Lambda Tanpa Pelayan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Membina Perkhidmatan Mikro Berpacukan Peristiwa” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pembangunan AWS Lambda Tanpa Pelayan ini?
Ya. Setiap pelajaran Pembangunan AWS Lambda Tanpa Pelayan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membina Perkhidmatan Mikro Berpacukan Peristiwa
- Mengintegrasikan dengan Amazon EventBridge
- Pemprosesan Masa Nyata dengan Kinesis
- Corak Saga untuk Transaksi Teragih