Rumah  >  Artikel  >  hujung hadapan web  >  penyelesaian microservice nodejs

penyelesaian microservice nodejs

PHPz
PHPzasal
2023-05-14 12:06:401153semak imbas

Dengan pembangunan Internet, semakin banyak institusi dan perusahaan telah mula memberi perhatian kepada seni bina perkhidmatan mikro ini boleh membantu perusahaan mengatur dan mengurus sistem dengan lebih baik dan meningkatkan kebolehpercayaan dan skalabiliti aplikasi , cara memilih teknologi dan alatan yang sesuai adalah penting. Sebagai bahasa back-end IO tak segerak berprestasi tinggi, Nodejs boleh melaksanakan penyelesaian perkhidmatan mikro dengan mudah.

Artikel ini akan memperkenalkan penyelesaian perkhidmatan mikro berdasarkan Nodejs, termasuk seni bina perkhidmatan mikro dan kelebihannya, idea reka bentuk komponen, pendaftaran dan penemuan perkhidmatan berasaskan Nodejs, permohonan perkhidmatan berasaskan RPC dan pelaksanaan perkhidmatan mikro pada platform Excelize.

Seni bina perkhidmatan mikro dan kelebihannya
Seni bina perkhidmatan mikro ialah kaedah membahagikan aplikasi kepada komponen yang lebih kecil yang dipanggil perkhidmatan mikro. Setiap perkhidmatan mikro berjalan dalam prosesnya sendiri, berkomunikasi dengan perkhidmatan mikro lain dan menyediakan fungsi perniagaan melalui interaksi API. Seni bina perkhidmatan mikro membolehkan perusahaan membahagikan aplikasi dengan lebih baik dan meningkatkan kebolehpercayaan dan kebolehskalaan aplikasi. Berbanding dengan aplikasi monolitik, kelebihan seni bina perkhidmatan mikro terletak pada aspek berikut:

  1. Boleh digunakan secara bebas: Setiap perkhidmatan mikro adalah bebas, tidak mempunyai kebergantungan dan boleh digunakan dan dikemas kini secara bebas , hampir tiada risiko semasa proses penggunaan, dan ia tidak akan menjejaskan operasi perkhidmatan mikro lain.
  2. Mudah untuk dikembangkan: Seni bina perkhidmatan mikro boleh mencapai pengembangan mendatar dengan lebih baik dan boleh menambah contoh perkhidmatan baharu dengan fungsi yang sama. Oleh kerana setiap perkhidmatan berjalan secara bebas, perkhidmatan boleh ditingkatkan mengikut keperluan.
  3. Gandingan perniagaan yang lebih baik: Seni bina perkhidmatan mikro boleh membantu mengurangkan gandingan antara komponen sistem, memisahkan logik perniagaan kepada komponen yang lebih kecil dan menjadikan sistem lebih fleksibel.
  4. Toleransi kesalahan yang lebih baik: Memandangkan setiap komponen seni bina perkhidmatan mikro adalah bebas, apabila kegagalan berlaku, masalah boleh dikesan dan dibaiki dengan lebih cepat.

Dalam seni bina perkhidmatan mikro, pemikiran reka bentuk komponen juga memainkan peranan yang sangat penting.

Idea reka bentuk berasaskan komponen
Idea reka bentuk berasaskan komponen adalah untuk membahagikan aplikasi kepada komponen boleh guna semula yang lebih kecil, setiap komponen mengandungi logik dan fungsi perniagaan tertentu. Komponen boleh berkomunikasi antara satu sama lain melalui API. Idea ini boleh membantu pembangun mengatur dan mengurus sistem yang kompleks dengan lebih baik.

Dalam seni bina perkhidmatan mikro, idea pekomponenan juga telah digunakan secara meluas. Dengan membahagikannya kepada komponen yang lebih kecil, ia boleh menjadi lebih mudah untuk melaksanakan penukaran masa sifar, mengurangkan kerumitan, decouple, dsb.

Pendaftaran dan penemuan perkhidmatan berdasarkan Nodejs
Dalam seni bina perkhidmatan mikro, pendaftaran dan penemuan perkhidmatan adalah bahagian yang sangat penting. Mekanisme pendaftaran dan penemuan perkhidmatan ialah mekanisme yang memetakan nama logik kepada senarai contoh perkhidmatan yang tersedia. Setiap contoh perkhidmatan mendaftarkan maklumatnya sendiri (seperti nama hos dan nombor port) dalam pendaftaran perkhidmatan. Perkhidmatan lain boleh mencari pendaftaran untuk contoh perkhidmatan yang tersedia dan kemudian membuat panggilan perkhidmatan melalui contoh perkhidmatan itu.

Dalam Nodejs, anda boleh menggunakan beberapa perpustakaan pihak ketiga untuk melaksanakan pendaftaran perkhidmatan dan penemuan Untuk perpustakaan ini, Zookeeper, etcd dan Consul digunakan secara meluas.

Di antara perpustakaan ini, Consul mungkin yang paling popular Sebagai alat pengurusan penemuan dan konfigurasi perkhidmatan, ia menyediakan satu set API berkuasa yang boleh merealisasikan pendaftaran dan penemuan perkhidmatan dengan mudah.

Berikut ialah contoh kod menggunakan Konsul untuk pendaftaran dan penemuan perkhidmatan:

const consul = require('consul')();
const serviceName = 'nodejs-service';

const registerService = (port) => {
  const details = {
    name: serviceName,
    address: 'localhost',
    port: port,
    check: {
      http: `http://localhost:${port}/health`,
      interval: '10s',
      timeout: '3s'
    }
  };

  consul.agent.service.register(details, (err) => {
    if (err) {
      throw new Error(`Failed to register: ${err}`);
    }
    console.log(`Registered with Consul`);
  });
};

const discoverService = () => {
  consul.agent.service.list((err, services) => {
    if (err) {
      throw err;
    }

    const nodes = Object.values(services[nodejs-service] || {}).map(({ Address, Port }) => ({ Address, Port }));
    console.log(`Discovered ${nodes.length} nodes`);
  });
};

module.exports = { registerService, discoverService };

Panggilan perkhidmatan berasaskan RPC
Dalam seni bina perkhidmatan mikro, RPC (Panggilan Prosedur Jauh) terikat Perkhidmatan mikro yang berbeza contoh. Dalam seni bina REST berasaskan HTTP, pelanggan memanggil perkhidmatan mikro melalui permintaan HTTP, tetapi dalam seni bina RPC, pelanggan boleh memanggil perkhidmatan dan mendapatkan respons memberitahu pelanggan apa yang berlaku.

RPC ialah mekanisme yang lebih berkuasa yang menyokong lebih banyak fungsi dan lebih banyak jenis senario aplikasi. Dalam Node.js, salah satu rangka kerja RPC yang paling popular ialah gRPC.

gRPC ialah rangka kerja panggilan prosedur jauh (RPC) sumber terbuka moden, cekap dan direka untuk menjadikan aplikasi perkhidmatan berasaskan awan lebih mudah, lebih pantas dan lebih diselaraskan. Ia menyokong berbilang bahasa pengaturcaraan, termasuk Node.js, Python, Java, Go, dsb., dan boleh menjana model, siri dan kod pengesahan secara automatik.

Berikut ialah contoh kod menggunakan rangka kerja gRPC:

var protoLoader = require('@grpc/proto-loader');
var grpc = require('grpc');
var packageDefinition = protoLoader.loadSync('hello.proto');
var greet_proto = grpc.loadPackageDefinition(packageDefinition).greet;

function getServer() {
  var server = new grpc.Server();
  server.addService(greet_proto.Greeter.service, { 
    SayHello: sayHello, 
    SayGoodbye: sayGoodbye ,
  });
  server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
  console.log("gRPC server running on port 50051");
  return server;
}
function sayHello(call, callback) {
  callback(null, { 
    message: 'Hello ' + call.request.name
  });
}
function sayGoodbye(call, callback) {
  callback(null, { 
    message: 'Goodbye ' + call.request.name
  });
}

getServer().start();

Kod di atas menunjukkan cara melaksanakan perkhidmatan gRPC ringkas dalam Nodejs.

Pelaksanaan perkhidmatan mikro platform Excelize
Excelize ialah platform aplikasi perkhidmatan mikro peringkat perusahaan sumber terbuka yang mudah untuk dikembangkan. Dibina terutamanya pada NodeJS, Excelize mencipta cara mudah untuk membina dan mengurus perkhidmatan mikro, membolehkan pembangun menumpukan pada logik perniagaan.

Excelize mempunyai ciri-ciri berikut:

  1. Platform pembinaan perkhidmatan mikro yang boleh diperluaskan

Excelize ialah platform pembinaan perkhidmatan mikro yang mudah berskala. Ia menyediakan satu set perkhidmatan asas seperti pengimbangan beban, penemuan perkhidmatan dan penggunaan automatik untuk memudahkan pembinaan dan penggunaan perkhidmatan mikro.

  1. Seni bina pemalam yang fleksibel

Seni bina pemalam Excelize sangat fleksibel, membolehkan pembangun menulis pemalam tersuai untuk memanjangkan kefungsian platform. Dengan cara ini, pembangun boleh menyesuaikan platform Excelize mengikut keperluan mereka.

  1. 自动部署

Excelize支持自动部署,通过该功能,开发者可以轻松部署微服务应用程序,将应用程序部署到生产环境所需的时间和工作量大大降低。

在Excelize中,可以非常方便地实现微服务方案。开发者可以使用ExcelizeSDK库,通过简单的代码来实现服务注册和发现、基于RPC的服务调用等功能。

下面是一个使用ExcelizeSDK实现的服务调用示例代码:

const ExcelizeSDK = require('excelize-sdk');

const client = new ExcelizeSDK.Client({
  domain: 'http://localhost:3000',
  token: 'your_token',
});

const server = client.createService('nodejs-service');

server.invoke('my_method', { param: 1234 })
  .then((response) => {
    console.log('Response: ', response);
  })
  .catch((error) => {
    console.error(error);
  });

结论
微服务架构是一种面向未来的系统架构设计思想,它可以帮助企业更好地组织和管理应用程序,提高应用程序的可靠性和可扩展性。在Nodejs中实现微服务方案非常容易,且可以使用第三方库和Excelize平台来快速构建和管理微服务应用程序。因此,Nodejs微服务方案是一种值得推荐的方案。

Atas ialah kandungan terperinci penyelesaian microservice nodejs. 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