后端服务开发(2) | 学习笔记

简介: 快速学习 后端服务开发(2)

开发者学堂课程【基于STM32的端到端物联网全栈开发后端服务开发(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/574/detail/7948


后端服务开发(2)


目录:

一、后端项目例程

二、数据库的设计

三、使用 Navicat 建表

四、后端项目例程、结构

五、创建 Java

六、服务器可订阅的消息

七、后端服务器应用开发


一、后端项目例程

目标如下:

image.png

(通过 Navicat 建立数据库表)
[1]
接收来自阿里云 loT 平台推送的节点设备上报消息

[2]写入数据库(更新数据记录)
[3]
接收前端服务器的数据库查询操作,并返回对应信息

[4]接收前端服务器命令,转发给阿里云 loT 平台

完成如下图:

image.png

二、数据库的设计

和前端服务器的交互 API 定义

GET/api/v1/device/clearAlarm(设备报警状态取消)
GET/apiv1/device/listDeviceName(
查询所有设备名)
GET/api/v1/device/queryAlarmHistoryLogs(
查询一段报警数据)
GET/api/v1/device/queryDeviceProp(
获取设备属性)
GET/api/v1/device/queryDevicePropHistoryLogs(
查询一段时间温湿度数据)
GET/apilv1/device/setDeviceProperty(
修改设备报警阀值)

三个表格:

device_infoid
id
device_name
current_temperature

current_humidity

temp_threshold

alarm_status

last_alarm_date

last_online_date

connect_status

gmt_update

alarm_history_log
id
device_name

alarm_temperatur

etemp_threshold

gmt_create
device_prop_history_log

id
device_name
current_temperature

current_humidity

gmt_creat

 

三、使用 Navicat 建表

1、使用 Navicat 建立 MySQL 数据库,复制建表语句到 Navicat,并执行

2、分别建立三个表

device_prop_history_log记录设备温湿度值历史数据


四、后端项目例程、结构

项目结构:Java 文件

common:主要存放应用中常量,异常,工具类等基础类

dao:数据操作层,主要存放 Dao

service:主要存放业务处理类(service)
web:
提供 HTTP 接口供前端调用,同时也是工程启动入口 DeviceAdminApplication.java
其他辅助文件

1配置文件 @application.properties

2Mapper 文件

3Maven 工程配置文件 @pom.xml

4、数据库测试文件 @device-admin.sql

Maven 工程配置
打包方式:jar父工程:spring-boot-starter-parentSpring boot 的父依赖,当前项目就是 Spring boots 项目

依赖关系:

aliyun-java-sdk-core:阿里云 java 底层 SDK
aliyun-java-sdk-iot
:用户服务器调用云端 openAPI,以实现产品管理、设备管理、Topic 管理等功能(主要是下行操作)
iot-client-message;
用户服务器通过 HTTP/2通道,接收物联网平台推送过来的设备消息(主要是上行操作)

路径:src/main/resource/application.properties
对阿里云 IoT 平台访问的配置阿里云 loT 平台的账号信息
阿里云 IoT 平台访问区域信息
阿里云 loT 平台上要访问的产品信息

 

五、创建 Java

创建 Java 类和所建数据表结构一一对应

三个类 Vs.三个表

AlarmHistoryLog

Devicelnfo DevicePropHistoryLog
抽象出表结构和可操作的方法 Mapper 文件的使用:Mapper

接口 Vs.Mapper.xml 映射

1使用默认已经封装好的方法

2、手动映射:mapper.xml SQL 语句和 mappr.java 中的方法对应起来


六、服务器端订阅消息

服务端可直接订阅产品消息
登录阿里云 loT 平台/控制台设置
阿里云 loT 平台通过 HTTP/2通道进行消息流转
选择推送的消息类型

设备上报消息:所有具有发布权限的 topic

设备状态变化通知:上线、下线

设备生命周期变更:设备创建、删除等

HTTP/2 SDK
1
、提供身份验证、topic 订阅、消息发送、消息接收等能力

2、适用于平台和服务器间大量数据流转

登录阿里云 IoT 平台1控制台设置
选择推送的消息类型

1、设备上报消息:所有具有发布权限的 topic
2
、设备状态变化通知:上线、下线

3、设备生命周期变更:设备创建、删除等


七、后端服务器应用开发

创建 DeviceMessageRegister 类,实现 InitializingBean 接口;spring 初始化 bean 的时候,会自动调用afterPropertiesSet 方法
建立和阿里云 loT 平台的连接
基于用户的阿里云 AccessKey 进行身份认证
订阅主题
监听,通过 SDK 消息回调获得数据 messageIDtopicpayoadgenerateTimeqos

根据不同主题,操作数据库

连接前的身份认证

accessKey 即账号的 AccessKey ID
accessSecret
AccessKey ID 对应的 AccessKey Secret选择安全设置查看账号 ID
regionld
为所在物联网平台服务地域

服务器关心的 topic
设备状态上报

getDeviceStatusTopic()
/as/mqt/status/{pk}#

(
高级)设备属性上报

getDevicePropertyPostTopic()
/sys/{pk}/{dn}/thing/event/propety/post

(高级)设备事件上报
getDeviceEventPostTopic()
/sys/{k}{n)}thing/eventS(Is event. denifr)/post

设备生命周期上报

监听,设置消息接收接口
建立连接时, 需要提供消息接收接口,用于处理未设置回调的消息
根据不同主题,通过 service 层,

操作数据库

client.setMessageListener(topic.xxxxx(),new MessageCallback()

Web 层(接口→子类,实现抽象方法)→service 层(mapper 下面的方法)→dao

SQL 语句如下:afterPropertiesSet()
>deviceInforService.xx
>devicePropHistoryLogService.xxx
>alarmHistoryLogService.xxx
DeviceInforServielmpl.java
>devicelnforMapper.xxx
DevicePropHistoryLogServicelmpl.java

>devicePropHistoryLogMapper.xxx
AlarmHistoryLogServicelmpl.java
>alarmHistoryLogMapper.xxx

调用云端 openAPI,可进行产品管理、设备管理、topic 管理、数据流转规则设置、消息通信等
通过向服务端地址发送 HTTP(S)GET/POST 请求,按照 API 接口说明封装,进行 API 调用

API 功能列表,及调用方式 SDK 下载:aliyun-java-sdk-iot/
在项目中由 maven 负责依赖 jar 包的自动下载 SDK 的使用
初始化 SDK 客户端
封装 request
调用 getAcsResponse 发出 request 并收取 response
响应前端请求,查询数据库:web 层->
service 层->dao

相关文章
|
10天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
18 0
|
24天前
|
负载均衡 测试技术 持续交付
高效后端开发实践:构建可扩展的微服务架构
在当今快速发展的互联网时代,后端开发扮演着至关重要的角色。本文将重点探讨如何构建可扩展的微服务架构,以及在后端开发中提高效率的一些实践方法。通过合理的架构设计和技术选型,我们可以更好地应对日益复杂的业务需求,实现高效可靠的后端系统。
|
24天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
40 3
|
26天前
|
监控 Kubernetes 持续交付
构建高效可扩展的微服务架构:后端开发实践指南
在数字化转型的浪潮中,企业对软件系统的要求日益提高,追求快速响应市场变化、持续交付价值成为核心竞争力。微服务架构以其灵活性、模块化和独立部署的特点,成为解决复杂系统问题的有效途径。本文将深入探讨如何构建一个高效且可扩展的微服务架构,涵盖关键设计原则、技术选型及实践案例,为后端开发者提供一条清晰的指导路线,帮助其在不断变化的技术环境中保持竞争力。
127 3
|
19天前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新范式
在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和容错性成为企业技术战略的关键组成部分。本文深入探讨了微服务的核心概念,包括其设计原则、技术栈选择以及与容器化和编排技术的融合。通过实际案例分析,展示了如何利用微服务架构提升系统性能,实现快速迭代部署,并通过服务的解耦来提高整体系统的可靠性。
|
24天前
|
机器学习/深度学习 人工智能 搜索推荐
未来人工智能在后端开发中的应用前景
随着人工智能技术的不断发展,后端开发领域也迎来了新的机遇与挑战。本文探讨了人工智能在后端开发中的应用前景,分析了其对传统开发模式的影响和未来发展趋势。
|
25天前
|
监控 数据管理 API
构建高效微服务架构:后端开发的新趋势
在现代软件开发领域,随着业务需求的不断复杂化以及敏捷迭代的加速,传统的单体应用架构逐渐暴露出其局限性。微服务架构作为一种新的解决方案,以其高度模块化、独立部署和可扩展性,正成为后端开发领域的新趋势。本文将探讨微服务架构的核心概念,分析其优势与面临的挑战,并提供实施高效微服务的策略和最佳实践,帮助读者理解如何利用这一架构模式提升系统的可靠性、灵活性和可维护性。
135 5
|
27天前
|
运维 Cloud Native 云计算
未来趋势:云原生技术在后端开发中的应用
随着云计算技术的快速发展,云原生技术作为一种新兴的软件架构理念,在后端开发领域日益受到关注。本文将探讨云原生技术的基本概念、优势以及在后端开发中的应用,展望未来云原生技术对于软件开发的影响和发展趋势。
|
28天前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
4天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。