0

我正在尝试了解 gRPC 并利用其在流客户端和服务器端功能中的优势,并将其性能与 REST 进行比较。

在我的 POC 中,我在应用程序中创建了请求观看电影并获得推荐的应用程序。

应用程序在接收到请求后,会获取按类型分类的电影列表,然后将其与用户偏好进行匹配,最后将其传递给推荐引擎以向用户推荐电影响应。

将为该解决方案构建总共四个微服务。微服务之间的所有交互。

请求流:Movie Finder -> Movie Store -> User Preferences -> Recommender

        pipeline(
            movieStoreClient.getMovies({genre}),
            new Transform({
                objectMode: true,
                transform({movie}, encoding, callback) {
                    callback(null, {userId, movie});
                }
            }),
            userPreferencesClient.getShortlistedMovies(),
            recommenderClient.getRecommendedMovie((err, recommenderResponse) => {
                if (err) {
                    console.error(err);
                    return next(err)
                }
                return res.send(recommenderResponse);
            }),
            (err) => {
                if (err) {
                    next({message: err.message})
                }
            }
        );

由于流式传输和轻量级有效负载,我假设 gRPC 将击败 Rest API。但事实并非如此,REST API 在 600 毫秒内返回,而 gRPC 在 4 秒内返回。

我正在考虑使用 makeGenericClientConstructor 来防止序列化\反序列化请求和响应,以减少消息数据对话时间,但不幸的是我需要对数据进行操作以添加用户信息,所以我必须反序列化它。

我错过了什么?

如果有人有时间看,这是我的 POC。 https://github.com/amit034/grpc-node-poc

4

0 回答 0