Rumah >pembangunan bahagian belakang >Tutorial Python >Perpustakaan Python yang luar biasa untuk Membina Perkhidmatan Mikro Teguh
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 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!
Pastikan anda melihat ciptaan kami:
Pusat Pelabur | Pelabur Central Spanish | Pelabur Jerman Tengah | Hidup Pintar | Epos & Gema | Misteri Membingungkan | Hindutva | Pembangunan Elit | Sekolah JS
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!