cari
Rumahpembangunan bahagian belakangTutorial PythonPerpustakaan Python yang luar biasa untuk Membina Perkhidmatan Mikro Teguh

owerful Python Libraries for Building Robust Microservices

Sebagai pengarang terlaris, saya menjemput anda untuk menerokai buku saya di Amazon. Jangan lupa ikuti saya di Medium dan tunjukkan sokongan anda. terima kasih! Sokongan anda bermakna dunia!

Python telah menjadi bahasa pilihan untuk membina perkhidmatan mikro kerana kesederhanaan, fleksibiliti dan ekosistemnya yang teguh. Dalam artikel ini, saya akan meneroka lima perpustakaan Python berkuasa yang boleh membantu anda mencipta seni bina perkhidmatan mikro yang teguh dan berskala.

Flask ialah rangka kerja mikro popular yang sesuai untuk membina perkhidmatan mikro ringan. Kesederhanaan dan kebolehlanjutannya menjadikannya pilihan yang sangat baik untuk pembangun yang ingin mencipta perkhidmatan kecil dan fokus dengan cepat. Teras Flask sengaja mudah, tetapi ia boleh dilanjutkan dengan pelbagai pemalam untuk menambah fungsi mengikut keperluan.

Berikut ialah contoh asas perkhidmatan mikro Flask:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    return jsonify({"message": "Hello, World!"})

if __name__ == '__main__':
    app.run(debug=True)

Perkhidmatan ringkas ini mendedahkan satu titik akhir yang mengembalikan respons JSON. Kesederhanaan Flask membolehkan pembangun menumpukan pada logik perniagaan dan bukannya kod boilerplate.

Untuk perkhidmatan mikro yang lebih kompleks, FastAPI ialah pilihan yang sangat baik. Ia direka untuk prestasi tinggi dan pembangunan API yang mudah, dengan sokongan terbina dalam untuk pengaturcaraan tak segerak dan dokumentasi API automatik.

Berikut ialah contoh perkhidmatan mikro FastAPI:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.post("/items")
async def create_item(item: Item):
    return {"item": item.dict()}

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

Penggunaan pembayang jenis FastAPI membolehkan pengesahan permintaan automatik dan penjanaan dokumentasi API. Ini boleh mempercepatkan pembangunan dengan ketara dan mengurangkan kemungkinan pepijat.

Nameko ialah satu lagi perpustakaan yang berkuasa untuk membina perkhidmatan mikro dalam Python. Ia menyediakan rangka kerja yang mudah dan fleksibel untuk mencipta, menguji dan menjalankan perkhidmatan. Nameko menyokong pelbagai kaedah pengangkutan dan bersiri, menjadikannya serba boleh untuk kes penggunaan yang berbeza.

Berikut ialah perkhidmatan Nameko asas:

from nameko.rpc import rpc

class GreetingService:
    name = "greeting_service"

    @rpc
    def hello(self, name):
        return f"Hello, {name}!"

Sistem suntikan pergantungan Nameko memudahkan anda menambah ciri baharu pada perkhidmatan anda tanpa menukar kod sedia ada. Ini menggalakkan gandingan longgar dan menjadikan perkhidmatan lebih mudah untuk diselenggara dan skala.

Untuk komunikasi antara perkhidmatan yang cekap, gRPC ialah pilihan terbaik. Ia menggunakan penimbal protokol untuk bersiri, menghasilkan muatan yang lebih kecil dan komunikasi yang lebih pantas berbanding API REST tradisional.

Berikut ialah contoh definisi perkhidmatan gRPC:

syntax = "proto3";

package greeting;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Dan inilah cara anda boleh melaksanakan perkhidmatan ini dalam Python:

import grpc
from concurrent import futures
import greeting_pb2
import greeting_pb2_grpc

class Greeter(greeting_pb2_grpc.GreeterServicer):
    def SayHello(self, request, context):
        return greeting_pb2.HelloReply(message=f"Hello, {request.name}!")

def serve():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    greeting_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
    server.add_insecure_port('[::]:50051')
    server.start()
    server.wait_for_termination()

if __name__ == '__main__':
    serve()

ciri taip dan penjanaan kod gRPC yang kukuh boleh membantu mengesan ralat lebih awal dan meningkatkan kebolehpercayaan sistem secara keseluruhan.

Apabila seni bina perkhidmatan mikro berkembang, penemuan perkhidmatan dan pengurusan konfigurasi menjadi penting. Konsul ialah alat berkuasa yang boleh membantu mengurus aspek sistem anda ini. Walaupun bukan perpustakaan Python semata-mata, ia berintegrasi dengan baik dengan perkhidmatan Python.

Berikut ialah contoh pendaftaran perkhidmatan dengan Konsul menggunakan Python:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    return jsonify({"message": "Hello, World!"})

if __name__ == '__main__':
    app.run(debug=True)

Stor nilai kunci Consul juga boleh digunakan untuk pengurusan konfigurasi berpusat, menjadikannya lebih mudah untuk mengurus tetapan merentas berbilang perkhidmatan.

Dalam sistem teragih, kegagalan tidak dapat dielakkan. Hystrix ialah perpustakaan yang membantu melaksanakan toleransi kesalahan dan toleransi kependaman dalam seni bina perkhidmatan mikro. Walaupun pada asalnya dibangunkan untuk Java, terdapat port Python tersedia.

Berikut ialah contoh menggunakan port Python Hystrix:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.post("/items")
async def create_item(item: Item):
    return {"item": item.dict()}

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

Arahan ini akan cuba mendapatkan data pengguna, tetapi jika ia gagal (disebabkan isu rangkaian, contohnya), ia akan mengembalikan respons sandaran dan bukannya membuang ralat.

Apabila mereka bentuk perkhidmatan mikro, adalah penting untuk mempertimbangkan ketekalan data, terutamanya apabila berurusan dengan transaksi yang diedarkan. Satu pendekatan ialah menggunakan corak Saga, di mana urutan transaksi tempatan mengemas kini setiap perkhidmatan dan menerbitkan acara untuk mencetuskan transaksi tempatan seterusnya.

Berikut ialah contoh ringkas bagaimana anda boleh melaksanakan Saga dalam Python:

from nameko.rpc import rpc

class GreetingService:
    name = "greeting_service"

    @rpc
    def hello(self, name):
        return f"Hello, {name}!"

Saga ini melaksanakan satu siri langkah untuk memproses pesanan. Jika mana-mana langkah gagal, ia akan mencetuskan proses pampasan untuk membuat asal langkah sebelumnya.

Pengesahan ialah satu lagi aspek penting dalam seni bina perkhidmatan mikro. Token Web JSON (JWT) ialah pilihan popular untuk melaksanakan pengesahan tanpa kewarganegaraan antara perkhidmatan. Berikut ialah contoh cara anda boleh melaksanakan pengesahan JWT dalam perkhidmatan mikro Flask:

syntax = "proto3";

package greeting;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Contoh ini menunjukkan cara membuat dan mengesahkan JWT untuk mengesahkan permintaan antara perkhidmatan.

Pemantauan adalah penting untuk mengekalkan kesihatan dan prestasi seni bina perkhidmatan mikro. Prometheus ialah sistem pemantauan sumber terbuka popular yang berintegrasi dengan baik dengan perkhidmatan Python. Berikut ialah contoh cara anda boleh menambah pemantauan Prometheus pada aplikasi Flask:

import grpc
from concurrent import futures
import greeting_pb2
import greeting_pb2_grpc

class Greeter(greeting_pb2_grpc.GreeterServicer):
    def SayHello(self, request, context):
        return greeting_pb2.HelloReply(message=f"Hello, {request.name}!")

def serve():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    greeting_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
    server.add_insecure_port('[::]:50051')
    server.start()
    server.wait_for_termination()

if __name__ == '__main__':
    serve()

Kod ini menyediakan metrik asas untuk aplikasi Flask anda, yang kemudiannya boleh dikikis dan dianalisis oleh Prometheus.

Dalam aplikasi dunia nyata, seni bina perkhidmatan mikro boleh menjadi agak rumit. Mari kita pertimbangkan platform e-dagang sebagai contoh. Anda mungkin mempunyai perkhidmatan berasingan untuk pengurusan pengguna, katalog produk, pemprosesan pesanan, pengurusan inventori dan pemprosesan pembayaran.

Perkhidmatan pengurusan pengguna mungkin dilaksanakan menggunakan Flask dan JWT untuk pengesahan:

import consul

c = consul.Consul()

c.agent.service.register(
    "web",
    service_id="web-1",
    address="10.0.0.1",
    port=8080,
    tags=["rails"],
    check=consul.Check.http('http://10.0.0.1:8080', '10s')
)

Perkhidmatan katalog produk mungkin menggunakan FastAPI untuk prestasi tinggi:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    return jsonify({"message": "Hello, World!"})

if __name__ == '__main__':
    app.run(debug=True)

Perkhidmatan pemprosesan pesanan mungkin menggunakan Nameko dan melaksanakan corak Saga untuk menguruskan transaksi yang diedarkan:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.post("/items")
async def create_item(item: Item):
    return {"item": item.dict()}

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

Perkhidmatan pengurusan inventori mungkin menggunakan gRPC untuk komunikasi yang cekap dengan perkhidmatan lain:

from nameko.rpc import rpc

class GreetingService:
    name = "greeting_service"

    @rpc
    def hello(self, name):
        return f"Hello, {name}!"

Akhir sekali, perkhidmatan pemprosesan pembayaran mungkin menggunakan Hystrix untuk toleransi kesalahan:

syntax = "proto3";

package greeting;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Perkhidmatan ini akan bekerjasama untuk mengendalikan pelbagai aspek platform e-dagang. Mereka akan berkomunikasi antara satu sama lain menggunakan gabungan API REST, panggilan gRPC dan baris gilir mesej, bergantung pada keperluan khusus setiap interaksi.

Kesimpulannya, Python menawarkan ekosistem perpustakaan dan alatan yang kaya untuk membina perkhidmatan mikro yang mantap. Dengan memanfaatkan perpustakaan ini dan mengikuti amalan terbaik untuk reka bentuk perkhidmatan mikro, pembangun boleh mencipta sistem berskala, berdaya tahan dan boleh diselenggara. Kuncinya ialah memilih alat yang betul untuk setiap kes penggunaan khusus dan mereka bentuk perkhidmatan yang digandingkan secara longgar tetapi sangat padat. Dengan perancangan dan pelaksanaan yang teliti, perkhidmatan mikro Python boleh membentuk tulang belakang sistem yang kompleks dan berprestasi tinggi merentas pelbagai industri.


101 Buku

101 Buku ialah syarikat penerbitan dipacu AI yang diasaskan bersama oleh pengarang Aarav Joshi. Dengan memanfaatkan teknologi AI termaju, kami memastikan kos penerbitan kami sangat rendah—sesetengah buku berharga serendah $4—menjadikan pengetahuan berkualiti boleh diakses oleh semua orang.

Lihat buku kami Kod Bersih Golang tersedia di Amazon.

Nantikan kemas kini dan berita menarik. Apabila membeli-belah untuk buku, cari Aarav Joshi untuk mencari lebih banyak tajuk kami. Gunakan pautan yang disediakan untuk menikmati diskaun istimewa!

Ciptaan Kami

Pastikan anda melihat ciptaan kami:

Pusat Pelabur | Pelabur Central Spanish | Pelabur Jerman Tengah | Hidup Pintar | Epos & Gema | Misteri Membingungkan | Hindutva | Pembangunan Elit | Sekolah JS


Kami berada di Medium

Tech Koala Insights | Dunia Epok & Gema | Medium Pusat Pelabur | Medium Misteri Membingungkan | Sains & Zaman Sederhana | Hindutva Moden

Atas ialah kandungan terperinci Perpustakaan Python yang luar biasa untuk Membina Perkhidmatan Mikro Teguh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah alternatif untuk menggabungkan dua senarai dalam Python?Apakah alternatif untuk menggabungkan dua senarai dalam Python?May 09, 2025 am 12:16 AM

Terdapat banyak kaedah untuk menyambungkan dua senarai dalam Python: 1. Pengendali menggunakan, yang mudah tetapi tidak cekap dalam senarai besar; 2. Gunakan kaedah Extend, yang cekap tetapi akan mengubah suai senarai asal; 3. Gunakan operator =, yang kedua -duanya cekap dan boleh dibaca; 4. Gunakan fungsi itertools.Chain, yang efisien memori tetapi memerlukan import tambahan; 5. Penggunaan senarai parsing, yang elegan tetapi mungkin terlalu kompleks. Kaedah pemilihan harus berdasarkan konteks dan keperluan kod.

Python: Cara yang cekap untuk menggabungkan dua senaraiPython: Cara yang cekap untuk menggabungkan dua senaraiMay 09, 2025 am 12:15 AM

Terdapat banyak cara untuk menggabungkan senarai Python: 1. Menggunakan pengendali, yang mudah tetapi tidak memori yang cekap untuk senarai besar; 2. Gunakan kaedah Extend, yang cekap tetapi akan mengubah suai senarai asal; 3. Gunakan itertools.chain, yang sesuai untuk set data yang besar; 4. Penggunaan * pengendali, bergabung dengan senarai kecil hingga sederhana dalam satu baris kod; 5. Gunakan numpy.concatenate, yang sesuai untuk set data dan senario yang besar dengan keperluan prestasi tinggi; 6. Gunakan kaedah tambahan, yang sesuai untuk senarai kecil tetapi tidak cekap. Apabila memilih kaedah, anda perlu mempertimbangkan saiz senarai dan senario aplikasi.

Disusun vs bahasa yang ditafsirkan: kebaikan dan keburukanDisusun vs bahasa yang ditafsirkan: kebaikan dan keburukanMay 09, 2025 am 12:06 AM

Compiledlanguagesofferspeedandsecurity, whilintpretedLanguagesprovideoeSeAfuseAndPortability.1) compiledLanguageslikec arefasterandsecureButhavelongerDevelopmentCyclesandplatformdependency.2) interpretedLanguagePyePyhonareeAseAreeAseaneAseaneSioSioSioSioSioSioSioSioSioSioSioSioSioSioSioSioSioSeaneaneAseaneaneAseaneaneAdoSioSiAdaSiAdoeSeaneAdoeSeaneAdoeSeanDoReAseanDOREPYHOREADOREB

Python: Untuk dan sementara gelung, panduan paling lengkapPython: Untuk dan sementara gelung, panduan paling lengkapMay 09, 2025 am 12:05 AM

Di Python, A untuk gelung digunakan untuk melintasi objek yang boleh dimakan, dan gelung sementara digunakan untuk melakukan operasi berulang kali apabila keadaan berpuas hati. 1) Untuk contoh gelung: melintasi senarai dan mencetak unsur -unsur. 2) Walaupun contoh gelung: Tebak permainan nombor sehingga anda rasa betul. Menguasai prinsip kitaran dan teknik pengoptimuman dapat meningkatkan kecekapan dan kebolehpercayaan kod.

Python Concatenate menyenaraikan ke dalam rentetanPython Concatenate menyenaraikan ke dalam rentetanMay 09, 2025 am 12:02 AM

Untuk menggabungkan senarai ke dalam rentetan, menggunakan kaedah Join () dalam Python adalah pilihan terbaik. 1) Gunakan kaedah Join () untuk menggabungkan elemen senarai ke dalam rentetan, seperti '' .join (my_list). 2) Untuk senarai yang mengandungi nombor, tukar peta (str, nombor) ke dalam rentetan sebelum menggabungkan. 3) Anda boleh menggunakan ekspresi penjana untuk pemformatan kompleks, seperti ','. Sertai (f '({Fruit})' forfruitinFruits). 4) Apabila memproses jenis data bercampur, gunakan peta (str, mixed_list) untuk memastikan semua elemen dapat ditukar menjadi rentetan. 5) Untuk senarai besar, gunakan '' .join (large_li

Pendekatan Hibrid Python: Kompilasi dan Tafsiran DigabungkanPendekatan Hibrid Python: Kompilasi dan Tafsiran DigabungkanMay 08, 2025 am 12:16 AM

Pythonusesahybridapproach, combiningcompilationtobytecodeandinterpretation.1) codeiscompiledtopplatform-independentbytecode.2) byteCodeisinterpretedbythepythonvirtualmachine, enhancingficiencyAndortability.

Ketahui perbezaan antara gelung 'untuk' dan 'sementara' PythonKetahui perbezaan antara gelung 'untuk' dan 'sementara' PythonMay 08, 2025 am 12:11 AM

TheKeydifferencesbetweenpython's "for" and "while" loopsare: 1) "untuk" loopsareidealforiteratingoversequencesorknowniterations, while2) "manakala" loopsarebetterforcontinuinguntilaconditionismetwithoutpredefinediterations.un

Senarai concatenate python dengan penduaSenarai concatenate python dengan penduaMay 08, 2025 am 12:09 AM

Di Python, anda boleh menyambungkan senarai dan menguruskan elemen pendua melalui pelbagai kaedah: 1) Gunakan pengendali atau melanjutkan () untuk mengekalkan semua elemen pendua; 2) Tukar ke set dan kemudian kembali ke senarai untuk mengalih keluar semua elemen pendua, tetapi pesanan asal akan hilang; 3) Gunakan gelung atau senarai pemantauan untuk menggabungkan set untuk menghapuskan elemen pendua dan mengekalkan urutan asal.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini