- vừa được xem lúc

Microservice với Golang, NodeJS và gRPC (Phần 2)

0 0 103

Người đăng: Sơn Híp

Theo Viblo Asia

Tiếp tục phần 1, phần này mình sẽ tạo một con node server để connect đến core server và cũng chỉ để hiển thị hello world

Node Server

  • Cũng tương tự như phần trước, phần này mình sẽ tạo một folder proto nhưng bên trong nó phức tạp hơn chút vì phải compile proto sang js.
  • Tạo một file package.json ngang cấp với helloworld.proto

package.json

{ "name": "node-server-proto", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "proto-gen": "export PROTO_DEST=./ && protoc -I ./ --plugin=\"protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin\" --js_out=\"import_style=commonjs,binary:${PROTO_DEST}\" --grpc_out=${PROTO_DEST} ./*.proto"
// ở đây có cả option cho typescript, nếu bạn cần thì để lại comment nhé }, "author": "", "license": "ISC", "devDependencies": { "grpc-tools": "^1.10.0" }
node golang gRPC Happy New Year Tiếp tục [phần 1](https://viblo.asia/p/microservice-voi-golang-nodejs-va-grpc-phan-1-jvElamq6lkw), phần này mình sẽ tạo một con `node server` để connect đến `core server` và cũng chỉ để hiển thị `hello world` ### Node Server - Cũng tương tự như phần trước, phần này mình sẽ tạo một folder proto nhưng bên trong nó phức tạp hơn chút vì phải compile proto sang js. - Tạo một file `package.json` ngang cấp với `helloworld.proto` ​ package.json
}

để đơn giản hơn cho việc generate file complie, mình dã viết sẵn đoạn script và bạn chỉ cần chạy npm run proto-gen (sau khi npm install) là ok, và cấu trúc thư mục nó sẽ thế này

Sau khi thực hiện xong proto, thì mình sẽ tạo file app.js để thực hiện hóa việc connect tới core server và vẫn tạo thêm package.json trông nó như thế này

{ "name": "node-server", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node app.js" // đoạn này viết cho nó phức tạp thôi, chứ bạn chạy luôn node app.js cho nhanh nhé =)) }, "author": "", "license": "ISC", "devDependencies": { "grpc": "^1.24.4", "minimist": "^1.2.0", "google-protobuf": "^3.0.0" }, "dependencies": {}
}

và file app.js

var messages = require('./proto/helloworld_pb');
var services = require('./proto/helloworld_grpc_pb'); var grpc = require('grpc');
var parseArgs = require('minimist'); function main() { var argv = parseArgs(process.argv.slice(2), { string: 'target' }); var target; if (argv.target) { target = argv.target; } else { target = 'localhost:50053'; } var client = new services.GreeterClient(target, grpc.credentials.createInsecure()); var request = new messages.HelloRequest(); var user; if (argv._.length > 0) { user = argv._[0]; } else { user = 'world'; } request.setName(user); client.sayHello(request, function(err, response) { console.log('Greeting:', response.getMessage()); });
} main();

Đọc code thì cũng rất dễ hiểu phải không =)) (dòng kết qủa trên là test với go-server nhé)

Và đây là kết qủa sau khi chạy lệnh node app.js

Và đây là toàn bộ cấu trúc thư mục của mình Nếu phát triển theo hướng microservice, thì theo mình bạn nên tạo mỗi server là một github phát triển riêng (chí ít là chia theo module) để cố gắng không ảnh hưởng nhất có thể đến những thứ đã được thực hiện, và việc một line github giành riêng cho việc phát triển riêng cho proto.

Kết thúc

  • Vậy là mình đã trình bày xong việc sử dụng microservice với golang-golang, golang-nodejs (giao tiếp giua các server)
  • Và đây là source code của hai phần mình đã viết

Bình luận

Bài viết tương tự

- vừa được xem lúc

gRPC - Nó là gì và có nên sử dụng hay không?

Nhân một ngày rảnh rỗi, mình ngồi đọc lại RPC cũng như gRPC viết lại để nhớ lâu hơn. Vấn đề là gì và tại sao cần nó .

0 0 112

- vừa được xem lúc

Build gRPC client iOS đơn giản

Introduction. Trong bài viết trước, chúng ta đã cùng nhau tìm hiểu về gRPC và cách để build một gRPC server bằng node.js với các chức năng CRUD đơn giản:. https://viblo.

0 0 24

- vừa được xem lúc

Build CRUD Server đơn giản với gRPC và node.js

. gRPC là một framework RPC (remote procedure call) do Google phát triển, đã thu hút được nhiều sự quan tâm của cộng đồng software developer trong những năm vừa qua. Đặc biệt, gRPC được ứng dụng nhiều trong các hệ thống microservice bởi nhiều đặc tính vượt trội như: open source, không phụ thuộc vào

0 0 154

- vừa được xem lúc

Microservice với Golang, NodeJS và gRPC (Phần 1)

Đặt vấn đề. .

0 0 40

- vừa được xem lúc

Biến ứng dụng Laravel của bạn trở nên phức tạp hơn với gRPC

gRPC là gì . RPC.

0 0 278

- vừa được xem lúc

Biến ứng dụng Laravel của bạn trở nên phức tạp hơn với gRPC (phần 2)

Tiếp nối bài viết Biến ứng dụng Laravel của bạn trở nên phức tạp hơn với gRPC , trong bài viết trước chúng ta implement xong phía gRPC server rồi. Hôm nay tiếp tục sẽ là phía client.

0 0 91