Rumah pembangunan bahagian belakang Golang Amalan gabungan go-zero dan Apache Camel: membina sistem penghalaan mesej teragih berprestasi tinggi

Amalan gabungan go-zero dan Apache Camel: membina sistem penghalaan mesej teragih berprestasi tinggi

Jun 22, 2023 am 09:42 AM
apache camel go-zero Sistem penghalaan mesej yang diedarkan

Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat teknologi Internet, perusahaan berhadapan dengan peningkatan jumlah data, dan baris gilir mesej terpusat tradisional selalunya tidak dapat memenuhi keperluan sistem teragih Oleh itu, sistem penghalaan mesej teragih semakin banyak popular. Dapatkan perhatian daripada perniagaan.

Artikel ini memperkenalkan cara menggunakan dua rangka kerja sumber terbuka go-zero dan Apache Camel untuk melaksanakan sistem penghalaan mesej teragih berprestasi tinggi.

1. Pengenalan kepada go-zero

go-zero ialah rangka kerja mikro yang menyepadukan banyak komponen (seperti RPC, API, cache, log, dll.). dan Alat yang boleh membina sistem teragih yang sangat tersedia, berprestasi tinggi dan mudah diselenggara.

Ciri utama go-zero adalah seperti berikut:

1 Berdasarkan gRPC: gunakan protobuf untuk mentakrifkan antara muka dan menyokong berbilang bahasa, seperti Go, Java, Python, dll.

2. Menjana kod secara automatik: Mengikut fail proto yang ditentukan, model dan kod perkhidmatan dijana secara automatik.

3. Menyokong storan data berbilang: menyokong MySQL, Redis, MongoDB dan kaedah penyimpanan data lain.

4. Cache terbina dalam: Memcached dan Redis terbina dalam, menyokong pemisahan baca-tulis cache, cache berbilang peringkat, dsb.

5. Ringan: Berbanding dengan rangka kerja lain, go-zero mempunyai jumlah kod yang sangat kecil, keluk pembelajaran yang rendah dan sangat mudah digunakan.

2. Pengenalan kepada Apache Camel

Apache Camel ialah sumber terbuka, penghalaan berasaskan peraturan dan rangka kerja pengantaraan yang boleh digunakan untuk menyambungkan pelbagai komponen aplikasi.

Ciri utama Camel adalah seperti berikut:

1 Mudah dikembangkan: Camel direka dengan sejumlah besar komponen, dan penghala dan penukar data yang sedia ada boleh dikembangkan dengan mudah dengan menambah baharu. komponen.

2. Sokongan berbilang bahasa: Menyokong interaksi antara pelbagai bahasa dan protokol, seperti Java, C#, C++, Python, Scala, Ruby, dll.

3. Ringan: Berbanding dengan rangka kerja lain, Camel mempunyai jumlah kod yang sangat kecil, keluk pembelajaran yang rendah dan sangat mudah digunakan.

4. Sokongan sumber berbilang data: Menyokong penukaran antara pelbagai sumber data, seperti MQ, HTTP, JMS, TCP, FTP, dll.

3. Amalan gabungan go-zero dan Apache Camel

Kami menggunakan go-zero untuk membina pelayan RPC untuk mengendalikan pelbagai permintaan, seperti penghalaan mesej, penukaran data, dsb. Apache Camel bertanggungjawab untuk penukaran dan penghalaan data.

Dalam bahagian pelayan ini, kami menggunakan model go-zero dan alat penjanaan automatik perkhidmatan untuk menjana penghalaan mesej dan perkhidmatan penukaran data. Perkhidmatan ini adalah berdasarkan rangka kerja komunikasi gRPC, dan antara muka ditakrifkan menggunakan protobuf.

Seterusnya, kami akan menggunakan Camel untuk melaksanakan fungsi penghalaan dan penukaran data. Untuk penghalaan, kami menggunakan enjin penghalaan Camel untuk menghalakan mesej ke perkhidmatan sasaran. Untuk penukaran data, kami menggunakan pelbagai penukar data yang disediakan oleh Camel untuk menukar mesej ke dalam format sasaran dan menghantarnya ke sistem sasaran.

Untuk menunjukkan dengan lebih baik proses pembinaan sistem penghalaan mesej teragih ini, kami akan menggambarkan dengan contoh mudah.

Pertama, kami mempunyai senario: sistem pengurusan pesanan perlu menghantar maklumat pesanan kepada sistem ERP untuk diproses. Kita perlu melaksanakan fungsi berikut:

1 Terima pesanan pesanan daripada sistem pengurusan pesanan.

2. Tukar mesej pesanan ke dalam format yang boleh dikenali oleh sistem ERP.

3 Halakan mesej pesanan yang ditukar ke sistem ERP.

Untuk melaksanakan fungsi ini, kita boleh melakukan ini:

1. Gunakan go-zero untuk membina pelayan RPC untuk menerima mesej pesanan daripada sistem pengurusan pesanan.

2. Gunakan komponen JMS yang disediakan oleh Camel sebagai perisian tengah mesej untuk menghantar mesej pesanan kepada sistem ERP.

3. Gunakan penukar data Camel untuk menukar mesej pesanan kepada format yang boleh dikenali oleh sistem ERP.

4. Tentukan peraturan penghalaan Camel untuk menghalakan mesej pesanan yang ditukar ke sistem ERP.

Sekarang, mari lihat langkah pelaksanaan khusus.

Pertama, tentukan antara muka protobuf dan model data dalam go-zero:

syntax = "proto3";

package order;

option go_package = "order";

message OrderInfo {
    string orderId = 1;
    string customerName = 2;
    string address = 3;
    string phone = 4;
}

service OrderService {
    // 接收订单信息
    rpc SubmitOrder(OrderInfo) returns (Empty) {}
}
Salin selepas log masuk

Gunakan alat penjanaan automatik go-zero untuk menjana model dan kod perkhidmatan:

# 生成model
make service.proto

# 生成service
make service
Salin selepas log masuk

Kemudian, Di bahagian pelayan RPC, laksanakan kaedah SubmitOrder untuk menerima mesej pesanan daripada sistem pengurusan pesanan:

func (s *Service) SubmitOrder(ctx context.Context, req *order.OrderInfo) (*status.Empty, error) {
    orders := make([]string, 0)
    orders = append(orders, req.OrderId)
    orders = append(orders, req.CustomerName)
    orders = append(orders, req.Address)
    orders = append(orders, req.Phone)

    // 通过RPC发送消息到消息中间件
    go sendToMQ(orders)

    return &status.Empty{}, nil
}

func sendToMQ(order []string) {
    // 发送MQ消息
    orderInfo := map[string]interface{}{
        "orderId":      order[0],
        "customerName": order[1],
        "address":      order[2],
        "phone":        order[3],
    }
    fmt.Printf("Send to MQ: %v
", orderInfo)

    message := &jms.TextMessage{
        Body: fmt.Sprintf("%v", orderInfo),
    }
    err := producer.Send(message)
    if err != nil {
        fmt.Printf("Failed to send message: %v
", err)
    }
}
Salin selepas log masuk

Seterusnya, kami menggunakan komponen JMS Camel untuk menyambung ke perisian tengah mesej ActiveMQ:

from("activemq:queue:order.queue").process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        // 接收MQ消息,转换数据格式
        Map<String, Object> orderInfo = new HashMap<String, Object>();
        orderInfo = exchange.getIn().getBody(Map.class);

        exchange.getIn().setBody(orderInfo);
    }
});
Salin selepas log masuk

Kemudian , Gunakan penukar data Camel untuk menukar mesej pesanan ke dalam format yang sistem ERP boleh kenali:

from("activemq:queue:order.queue").process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        // 接收MQ消息,转换数据格式
        Map<String, Object> orderInfo = new HashMap<String, Object>();
        orderInfo = exchange.getIn().getBody(Map.class);

        // 数据转换
        String json = "{"order_id": "" + orderInfo.get("orderId") + """ +
                ", "customer_name": "" + orderInfo.get("customerName") + """ +
                ", "address": "" + orderInfo.get("address") + """ +
                ", "phone": "" + orderInfo.get("phone") + """ +
                "}";

        exchange.getIn().setBody(json);
    }
});
Salin selepas log masuk

Akhir sekali, tentukan peraturan penghalaan Camel untuk menghalakan mesej pesanan yang ditukar ke sistem ERP:

from("activemq:queue:order.queue").process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        // 接收MQ消息,转换数据格式
        Map<String, Object> orderInfo = new HashMap<String, Object>();
        orderInfo = exchange.getIn().getBody(Map.class);

        // 数据转换
        String json = "{"order_id": "" + orderInfo.get("orderId") + """ +
                ", "customer_name": "" + orderInfo.get("customerName") + """ +
                ", "address": "" + orderInfo.get("address") + """ +
                ", "phone": "" + orderInfo.get("phone") + """ +
                "}";

        exchange.getIn().setBody(json);
    }
}).to("http://erp.com/order");
Salin selepas log masuk

Dalam kod di atas, kami menggunakan enjin penghalaan Camel dan penukar data untuk menukar dan menghalakan mesej pesanan ke dalam sistem ERP.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan dua rangka kerja sumber terbuka go-zero dan Apache Camel untuk melaksanakan sistem penghalaan mesej teragih berprestasi tinggi. Dengan menggunakan ciri dan kelebihan go-zero dan Camel, sistem penghalaan mesej yang diedarkan dengan prestasi tinggi, ketersediaan tinggi dan penyelenggaraan mudah boleh dibangunkan dengan lebih baik, membawa nilai yang lebih besar kepada perusahaan.

Atas ialah kandungan terperinci Amalan gabungan go-zero dan Apache Camel: membina sistem penghalaan mesej teragih berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1655
14
Tutorial PHP
1252
29
Tutorial C#
1226
24
Gunakan go-zero untuk melaksanakan reka bentuk sistem penyewa berbilang dimensi Gunakan go-zero untuk melaksanakan reka bentuk sistem penyewa berbilang dimensi Jun 23, 2023 am 10:49 AM

Dengan perkembangan Internet, semakin banyak perusahaan mula berubah ke arah penyewaan berbilang untuk meningkatkan daya saing mereka. Sistem berbilang penyewa membenarkan berbilang penyewa berkongsi set aplikasi dan infrastruktur yang sama, masing-masing dengan perlindungan data dan privasi mereka sendiri. Untuk melaksanakan sistem berbilang penyewa, reka bentuk berbilang dimensi perlu dipertimbangkan, melibatkan isu seperti pengasingan data dan keselamatan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja go-zero untuk melaksanakan reka bentuk sistem penyewa berbilang dimensi. go-zero ialah rangka kerja perkhidmatan mikro berdasarkan gRPC, yang berprestasi tinggi, cekap dan mudah dikembangkan.

Gunakan go-zero+Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang Gunakan go-zero+Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang Jun 23, 2023 am 08:46 AM

Dalam era Internet yang pesat membangun hari ini, reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan belakang telah menjadi idea reka bentuk yang sangat popular. Menggunakan idea reka bentuk ini, kami boleh membangunkan kod hadapan dan kod belakang secara berasingan, dengan itu mencapai pembangunan yang lebih cekap dan kebolehselenggaraan sistem yang lebih baik. Artikel ini akan memperkenalkan cara melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang dengan menggunakan go-zero dan Vue.js. 1. Kelebihan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan bahagian belakang Kelebihan reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan bahagian hadapan terutamanya merangkumi aspek berikut: Pembangunan

Amalan go-zero dan Kubernetes: membina seni bina perkhidmatan mikro dalam kontena dengan ketersediaan tinggi, prestasi tinggi dan berskala tinggi Amalan go-zero dan Kubernetes: membina seni bina perkhidmatan mikro dalam kontena dengan ketersediaan tinggi, prestasi tinggi dan berskala tinggi Jun 22, 2023 am 09:26 AM

Memandangkan skala Internet terus berkembang dan keperluan pengguna terus meningkat, kelebihan seni bina perkhidmatan mikro semakin mendapat perhatian. Selepas itu, seni bina perkhidmatan mikro kontena telah menjadi sangat penting, yang dapat memenuhi keperluan ketersediaan tinggi, prestasi tinggi, berskala tinggi dan aspek lain dengan lebih baik. Di bawah aliran ini, go-zero dan Kubernetes telah menjadi rangka kerja mikro perkhidmatan bekas paling popular. Artikel ini akan memperkenalkan cara menggunakan rangka kerja go-zero dan alatan orkestrasi kontena Kubernetes untuk membina ketersediaan tinggi, berprestasi tinggi

Gunakan go-zero untuk melaksanakan pengagihan dan penjadualan tugas teragih Gunakan go-zero untuk melaksanakan pengagihan dan penjadualan tugas teragih Jun 22, 2023 am 09:06 AM

Dengan perkembangan pesat perniagaan Internet dan volum perniagaan yang semakin meningkat secara beransur-ansur, jumlah data yang boleh diproses oleh satu pelayan adalah jauh daripada memenuhi permintaan. Untuk memenuhi keperluan konkurensi tinggi, ketersediaan tinggi dan prestasi tinggi, seni bina teragih muncul mengikut keperluan masa. Dalam seni bina teragih, pengagihan tugas dan penjadualan adalah komponen yang sangat kritikal. Kualiti pengagihan tugas dan penjadualan secara langsung akan mempengaruhi prestasi dan kestabilan keseluruhan sistem. Di sini, kami akan memperkenalkan cara menggunakan rangka kerja go-zero untuk melaksanakan pengagihan dan penjadualan tugas teragih. 1. Agihan tugas agihan Agihan tugas

Amalan aplikasi go-zero dan RabbitMQ Amalan aplikasi go-zero dan RabbitMQ Jun 23, 2023 pm 12:54 PM

Kini semakin banyak perusahaan mula menggunakan model seni bina perkhidmatan mikro, dan dalam seni bina ini, baris gilir mesej telah menjadi kaedah komunikasi yang penting, antaranya RabbitMQ digunakan secara meluas. Dalam bahasa Go, go-zero ialah rangka kerja yang telah muncul dalam beberapa tahun kebelakangan ini. Ia menyediakan banyak alat dan kaedah praktikal untuk membolehkan pembangun menggunakan baris gilir mesej dengan lebih mudah Di bawah ini kami akan memperkenalkan go-zero berdasarkan aplikasi praktikal dan amalan aplikasi RabbitMQ. 1.RabbitMQ Gambaran KeseluruhanArnab

Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi Jun 23, 2023 am 09:04 AM

Dalam tahun-tahun kebelakangan ini, dengan peningkatan data besar dan komuniti sumber terbuka yang aktif, semakin banyak perusahaan telah mula mencari sistem pemprosesan data interaktif berprestasi tinggi untuk memenuhi keperluan data yang semakin meningkat. Dalam gelombang peningkatan teknologi ini, go-zero dan Kafka+Avro sedang diberi perhatian dan diterima pakai oleh semakin banyak perusahaan. go-zero ialah rangka kerja mikroperkhidmatan yang dibangunkan berdasarkan bahasa Golang Ia mempunyai ciri-ciri prestasi tinggi, kemudahan penggunaan, pengembangan mudah dan penyelenggaraan yang mudah. ​​Ia direka untuk membantu perusahaan membina sistem aplikasi perkhidmatan mikro yang cekap. pertumbuhannya yang pesat

Dari kemasukan kepada kemahiran: Menguasai rangka kerja go-zero Dari kemasukan kepada kemahiran: Menguasai rangka kerja go-zero Jun 23, 2023 am 11:37 AM

Go-zero ialah rangka kerja bahasa Go yang sangat baik yang menyediakan set lengkap penyelesaian, termasuk RPC, caching, tugas berjadual dan fungsi lain. Sebenarnya, sangat mudah untuk membina perkhidmatan berprestasi tinggi menggunakan go-zero, malah anda boleh pergi dari pemula kepada mahir dalam beberapa jam. Artikel ini bertujuan untuk memperkenalkan proses membina perkhidmatan berprestasi tinggi menggunakan rangka kerja go-zero dan membantu pembaca memahami dengan cepat konsep teras rangka kerja tersebut. 1. Pemasangan dan konfigurasi Sebelum mula menggunakan go-zero, kita perlu memasangnya dan mengkonfigurasi beberapa persekitaran yang diperlukan. 1

Gunakan go-zero untuk melaksanakan penghalaan dinamik perkhidmatan mikro Gunakan go-zero untuk melaksanakan penghalaan dinamik perkhidmatan mikro Jun 22, 2023 am 10:33 AM

Dengan populariti teknologi pengkomputeran awan dan kontena, seni bina perkhidmatan mikro telah menjadi penyelesaian arus perdana dalam pembangunan perisian moden. Teknologi penghalaan dinamik adalah bahagian penting dalam seni bina perkhidmatan mikro. Artikel ini akan memperkenalkan cara menggunakan rangka kerja go-zero untuk melaksanakan penghalaan dinamik perkhidmatan mikro. 1. Apakah penghalaan dinamik? Dalam seni bina perkhidmatan mikro, bilangan dan jenis perkhidmatan mungkin sangat besar. Penghalaan statik tradisional tidak sesuai untuk seni bina perkhidmatan mikro kerana bilangan perkhidmatan dan status masa jalan berubah secara dinamik.

See all articles