dot Redis 8 来了——而且是开源的

了解更多

如何使用 Spring Boot 和 Redis 创建一个健康生活方式应用程序

让你的身体摆脱坏习惯并不容易。 无论是饮食不良、在健身房偷懒,还是完全无视它,很大程度上都归结于心态。 个人发展是一种趋势,它激励我们许多人摆脱坏习惯,并将自己转变为更好的人。 

但要启动重大改变,首先要衡量你的进步,以确定你所采取的两个步骤是让你更接近还是更远离你的目标。 如果没有任何形式的衡量,旅程可能会变得漫无目的。 

ABettaMe 有助于让你保持正确的方向,这是一款健康的生活方式应用程序,可让你衡量不同的变量,以了解你在实现目标方面取得了多大的进展。 通过此应用程序,你可以尝试不同的饮食和锻炼方式,以了解它们对你的健康有何影响。 

Redis 被用于简化组件之间的数据传输,并创建一个对用户命令高度响应的应用程序。 让我们看看这个应用程序是如何组合在一起的。 

但在我们继续深入之前,我们想指出,你可以在 Redis Launchpad 上发现各种像 ABettaMe 这样的创新应用程序。 

所以请务必在阅读完这篇文章后查看它们!

https://www.youtube.com/embed/8rIUB4B2_gE
  1. 你将构建什么?
  2. 你需要什么?
  3. 架构
  4. 开始使用
  5. 应用程序如何工作

1. 你将构建什么?

你将构建一个应用程序,通过允许用户以精细的细节衡量进度,来帮助用户做出重要的生活方式改变。 下面我们将向你展示如何通过逐步引导你完成实施过程的每个阶段以及你需要的组件,将此应用程序变为现实。 

准备好开始了吗?

好的,让我们直接开始。 

2. 你需要什么?

此项目由五个不同的组件组成。 在每个部分中,我们将重点介绍构建应用程序所需的所有不同技术和工具。 

ABettaMe 仪表板

  • Typescript: 用作 Javascript 语言的超集,它具有单个开源编译器。
  • React: 用作构建用户界面的 Javascript 库。 

ABettaMe 网关

  • Javascript: 基于文本的编程语言,在客户端和服务器端都使用
  • Spring Cloud Gateway: 为你提供一个库,用于在 Spring WebFlux 之上构建 API 网关。 

ABettaMe 实验

  • Javascript: 基于文本的编程语言,在客户端和服务器端都使用。
  • Spring Boot: 用作基于 Java 的开源框架来创建微服务。 
  • RedisJSON: 用于从 Redis 键存储、更新和提取 JSON 值。
  • Redis Pub/Sub: 用于事件消息传递,并且可以在通道上向任意数量的订阅者提供消息。

ABettaMe 推荐

  • C#: 用作通用、多范式编程语言。 
  • .NET 5: 用作一个统一的平台,用于使用单个基本库创建任何类型的 .Net 应用程序。 
  • RedisJSON: 用于从 Redis 键存储、更新和提取 JSON 值。
  • Redis Pub/Sub: 用于事件消息传递,并且可以在通道上向任意数量的订阅者提供消息。

ABettaMe 合约

Google Protocol Buffers: 用作 Google 的语言中立、平台中立的可扩展机制,用于序列化结构化数据。

3. 架构

  • 前端首先通知后端任何新指标,这些指标都保存在 RedisJSON 存储中。 
  • 新指标发布在 Redis Pub/Sub 模块中。 
  • 推荐微服务分析数据并执行显着性检验。 
  • 然后,用户可以确定这些更改是否对其所需指标产生影响。 

4. 开始使用

步骤 1:克隆存储库 

git clone: https://github.com/redis-developer/abetta-ux

步骤 2. 检查服务

打开 docker-compose 文件,该文件指定构建此应用程序所需的各种服务

version: '3.8'
services:
  abetta-xp:
    container_name: abetta-xp
    image: abettame/abetta-xp:local
  abetta-gateway:
    container_name: abetta-gateway
    image: abettame/abetta-gateway:local
    ports:
      - 8080:8080
  abetta-rec:
    container_name: abetta-rec
    image: abettame/abetta-rec:local
  abetta-portal:
    container_name: abetta-portal
    image: abettame/abetta-portal:local
    ports:
      - 3000:3000

步骤 3:启动 docker

使用以下命令启动 docker

docker-compose up -d
docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
abetta-gateway      "sh -c 'java -Dserve…"   abetta-gateway      running             0.0.0.0:8080->8080/tcp
abetta-portal       "docker-entrypoint.s…"   abetta-portal       running             0.0.0.0:3000->3000/tcp
abetta-rec          "/bin/sh -c 'ASPNETC…"   abetta-rec          running
abetta-xp           "sh -c 'java -Dserve…"   abetta-xp           running
ajeetraina@Ajeets-MacBook-Pro abetta-ux %

接下来,打开浏览器并输入以下链接:http://localhost:8080/

5. 应用程序如何工作

让我们深入研究构建此应用程序的每个模块 。

ABettaMe 仪表板

UI 界面,用于管理现有实验或记录新实验。

使用的技术:TypeScript、React

以下 Dockerfile 用于构建 UX Docker 镜像 –

# pull official base image
FROM node:13.12.0-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install [email protected] -g --silent

# add app
COPY . ./

# start app
CMD ["npm", "start"]

ABettaMe 网关

应用程序网关,可将流量路由到适当的下游服务。

使用的技术:Java、Spring Cloud GatewayRepo 链接:abetta-gateway

FROM maven:3-jdk-11

ADD . /abetta-gateway
WORKDIR /abetta-gateway

RUN ls -l
RUN mvn clean install -DskipTests

FROM openjdk:11.0-jre-slim

VOLUME /tmp
COPY --from=0 /abetta-gateway/target/abetta-gateway*.jar app.jar

CMD [ "sh", "-c", "java -Dserver.port=$PORT -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8 -XX:+UseContainerSupport -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=heroku -jar /app.jar" ]

文件:https://github.com/ABettaMe/abetta-gateway/blob/main/build-image.sh 

build-image.sh 脚本用于构建 AbettaMe 网关。

mvn clean package
docker build -t abettame/abetta-gateway:latest .
docker push abettame/abetta-gateway:latest

ABettaMe 推荐

推荐服务,用于分析实验并执行统计显着性检验。

使用的技术:C#、.NET 5、RedisJSON、Redis Pub/Sub

Repo 链接:abetta-rec

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS buildWORKDIR /DockerSource
COPY Recommendations/bin/Release/net5.0/. .
# For local uncomment this and comment line 8# ENTRYPOINT ["dotnet", "Recommendations.dll"]CMD ASPNETCORE_URLS=http://*:$PORT dotnet Recommendations.dll

文件:https://github.com/ABettaMe/abetta-rec/blob/main/heroku-release.sh

docker build -t abetta-rec .heroku container:push -a abetta-rec webheroku container:release -a abetta-rec web

ABettaMe 合约

存储库,用于保存不同服务之间共享的所有合约。

使用的技术:Google Protocol Buffers

Repo 链接:abetta-contract

文件:https://github.com/ABettaMe/abetta-contract/blob/main/build.sh

mkdir java-out csharp-out
protoc --proto_path=. \       --java_out=./java-out \   --csharp_out=./csharp-out \       *.proto

执行实验

这是应用程序最重要的方面之一,你可以在其中测试新事物,并了解不同的变化对你的生活产生的影响。 首先,单击仪表板上的“创建新实验”图标。

然后,你需要填写有关你的实验的一些信息,包括

  • 实验名称
  • 指标:确定你将要测量的变量。 例如,如果你尝试跟踪体重减轻,那么你将选择“体重”。
  • 对照:提供有关你为实现目标而将遵循的策略的详细信息。 

处理:插入有关你将遵循哪些策略来执行你的策略的信息。

记录结果

在仪表板上,你将看到你的实验的概览。 单击“添加指标”以记录你的最新结果。 然后,你将被带到一个新页面,你需要在其中填写一些字段,包括日期、指标和值(见下文)。

监控你的进度

在屏幕的左侧,你将看到你列出的不同实验。 单击要查看的实验后,你将看到一个图表,该图表将为你提供进度的可视化表示。 

该应用程序还将列出已实现的任何里程碑,这些里程碑代表你朝着目标前进的程度(见下文)。

结论:使用 Redis 快速衡量你的进度

衡量进度是个人发展的根本方面。 它可以让你发现你是否向前走了两步、退后了两步,或者完全停滞不前。 但是,要使任何测量系统有效,它都需要快速、准确且易于访问。 

Redis 的高级数据处理能力保证了一个高度响应的应用程序,用户可以实时地与其交互,而不会出现任何延迟、冻结或延迟。 新指标保存在 RedisJSON 存储中,并通过 RedisPubSub 模块以超高效率发布,为用户提供无缝的应用程序体验。 

要了解有关此应用程序的更多信息,请务必观看此 此处的 YouTube 视频。 如果你喜欢这篇文章,请前往 Redis Launchpad,在那里你可以访问更多令人兴奋的应用程序,这些应用程序正在影响着日常生活。

我们拥有实时车辆跟踪系统,一个可以加速献血过程的应用程序,等等!

快来加入吧。 看看吧。 并在 Redis 中玩得开心。

谁构建了这个应用程序?

Antonis Anagnostou

Antonis 是一位创新的软件工程师,目前致力于 Spotify 的专业知识。 如果你想及时了解他的所有项目,请务必在此处 在 GitHub 上关注他