事件驱动+推拉结合:智慧社区服务解耦新玩法

简介: 本文介绍了智慧社区项目中“关联微服务”的设计,涵盖智慧通行、安全社区、全屋智能和增值服务四大模块。通过限界上下文划分,明确各模块职责,实现服务解耦和高效协作。文章还探讨了充血模型与贫血模型的应用,以及通过领域事件通知机制实现数据同步的方法。最终,智慧社区的增值服务通过个性化推送和定向推荐,为用户提供更加智能、便捷的生活体验。

Hi,大家好!今天我们要聊聊“关联微服务”的设计,这是在智能社区项目中常见的一个大方向。如何利用微服务让各个业务模块灵活互联、互通,帮助物业实现信息整合、数据清洗,同时能够提供丰富的增值服务。我们将主要围绕四大模块来展开:

  • 智慧通行:打破物业多品牌系统的信息孤岛;
  • 安全社区:集成视频识别、传感监控,形成预警体系;
  • 全屋智能:为业主提供更智能、便捷的生活体验;
  • 增值服务:提供多种智能服务及定向增值服务。

限界上下文下的微服务拆分

微服务拆分的核心,是根据限界上下文将领域模型划分成多个子域。这个过程确保每个子域独立、清晰,服务职责明确,为后续的业务独立拓展提供基础。

1.1 限界上下文划分

在智慧社区的项目场景中,限界上下文非常重要,它明确了微服务的边界、职责,并确保各个模块能够有独立的生命周期和自治管理。以下我们结合各个服务模块,分析如何进行限界上下文的划分:

  • 通讯录短信推送通知支付文件服务:这些是核心的基础服务模块。由于各个业务系统都需要这些基础服务,我们可以将其拆分为独立的子域模块供其他微服务调用。这样的设计让通讯、支付等不依赖某个业务,变得非常通用。
  • 人脸门禁可视对讲电梯梯控停车系统访客预约:这些属于智慧通行子域,是对社区智慧管理的支撑系统。将这一子域独立,能够让“通行”部分更加集中在智慧管理功能上,而不掺杂其他功能。
  • 视频监控周界报警高空抛物跨域追踪:这类服务属于安全社区子域。安全社区的所有服务以保障安全为主,聚焦视频图像识别、传感器数据的采集处理等安全相关功能,并提供报警预警。
  • 超级面板无线门锁烟感雾感:这是全屋智能子域,主要针对业主的家庭智能化需求。这里的服务应该集中在家居控制、环境监测等,以满足全屋智能设备对接的需要。
  • 智能充电云广播出入提醒定向投放:这一部分属于增值服务子域。增值服务可以通过matrix引擎实现智能场景裂变,支持多品牌产品融合,为业主提供个性化的增值体验。

1.2 微服务的组织形式

限界上下文的划分后,每个模块的服务依赖关系变得清晰。这种拆分带来的核心好处就是解耦合、聚焦服务的“单一职责”,使各个模块可以独立维护、扩展。比如支付服务可以完全独立实现支付功能,不会因升级影响其他模块。各个微服务之间的依赖性降低,适合高并发、高扩展需求的场景。

充血模型与贫血模型的微服务设计

在限界上下文划分清晰后,接下来我们要考虑的是如何设计微服务内部的业务逻辑层次。微服务中,业务模型一般分为充血模型贫血模型。简单来说,充血模型更适合需要领域强逻辑、复杂的业务场景,而贫血模型更注重数据传递的简洁性。

2.1 贫血模型应用

贫血模型的设计思路是将数据和业务逻辑分开。对于数据结构简单、业务逻辑轻量的微服务,比如通讯录短信文件服务等,这种模型尤其适用。

在贫血模型下,服务中的Entity只负责数据存储,不承担复杂的业务逻辑。Service层承担业务逻辑,负责调用底层的数据操作。因此,贫血模型的微服务结构会非常简洁,方便与其他服务的接口交互。

2.2 充血模型应用

充血模型则适合复杂的业务服务,例如智慧通行安全社区的某些业务模块。这些模块往往包含复杂的业务逻辑和状态维护。在充血模型中,Entity不仅包含数据,还封装业务逻辑,使得领域模型更加贴合业务逻辑。

智慧通行模块中的人脸门禁服务为例,系统不仅需要处理基本的用户验证,还需要考虑用户权限、时间段限制等。因此,这样的业务逻辑就可以直接封装在Entity中,实现权限和状态的闭环控制。

充血模型能在微服务的业务逻辑层体现更丰富的业务语义,减少Service层的业务逻辑复杂度,提高代码的可读性。

通过领域事件通知机制实现服务解耦

为了让微服务系统能高效工作,还需要让各个服务间的通信保持松耦合。我们可以利用领域事件通知机制,实现微服务间的事件推送和数据同步。领域事件是解耦微服务之间逻辑的重要手段,它能够将业务变化以事件形式广播给其他服务,极大地降低了模块间的耦合度。

3.1 事件推送

在推送事件的场景下,每个微服务只负责发布自己的事件,不需要关心哪些服务会消费这些事件。例如,当安全社区子域中的“周界报警”触发警报时,它可以通过领域事件通知视频监控跨域追踪等服务,立即同步启动相关联动机制。

领域事件的核心是每个微服务发布的事件能够自动化通知到需要接收的其他微服务。这样,推送通知服务只需监听事件,并将通知发送给指定用户,无需与其他微服务的代码紧密耦合。

3.2 数据同步的拉取机制

在有些场景下,事件推送可能无法满足数据实时一致性的需求。这时可以采用拉取机制,即各服务通过定时任务,主动从相关服务中拉取数据。这种方法适用于对数据实时性要求相对宽松的场景,比如全屋智能模块可以定期从增值服务模块拉取最新的用户场景偏好数据。

例如,全屋智能中的“超级面板”需要实时掌握用户的智能控制需求和定制场景,来更新面板的推荐项。这样即便事件推送发生延迟,面板也能保证在下一个时间周期内更新到最新状态。

智慧社区的增值服务:跨品牌服务互联

在实现了基础微服务的通信与解耦后,智慧社区可以引入增值服务,通过服务的关联进一步丰富社区应用场景。例如,智能充电云广播出入提醒等服务可以依据不同的用户需求,自动化推送与定向推荐。

增值服务的核心是“个性化”,我们可以基于matrix引擎进行用户画像和场景化管理,为不同用户推送特定内容。比如,定向投放功能可以针对住户的历史操作习惯,投放他们可能感兴趣的活动或社区团购服务。

END

关联微服务的设计,通过限界上下文的明确划分和业务模型的设计,使得微服务模块的职责清晰、独立。在此基础上,通过事件通知机制将服务解耦合,并通过推拉结合的方式保持数据同步,实现各个子域模块之间的高效、松耦合协作。智慧社区项目中的“智慧通行”“安全社区”“全屋智能”和“增值服务”都能够在这种设计下有效运作,为物业及住户提供便捷、智能的生活体验。

让我们期待未来,智慧社区的微服务架构可以为人们带来更多的便利和惊喜!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号软件求生,获取更多技术干货!

相关文章
|
3月前
|
存储 编解码 算法
带货直播这么流畅,原来是这套技术系统在支撑!
大家好,我是小米。今天聊聊社区直播带货的流程。主播通过RTMPS协议将加密直播流发送至POP内的代理服务器,再由代理服务器转发至数据中心的网关服务器,经端口转换后,使用一致性哈希算法分配至编码服务器进行转码和输出,最终通过DASH协议实现流畅直播及持久化存储,确保高效稳定的直播体验。这一流程背后有复杂的技术支撑,希望能帮大家更好地理解直播背后的机制。
48 2
|
存储 监控 数据管理
「微服务架构」编曲与编舞——让系统协同工作的不同模式
「微服务架构」编曲与编舞——让系统协同工作的不同模式
|
缓存 API 微服务
语音直播系统,常见的软件架构模式及优缺点
语音直播系统,常见的软件架构模式及优缺点
|
存储 消息中间件 缓存
直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践
本文将主要从高可用、弹性扩缩容、用户管理、消息分发、客户端优化等角度,分享直播间海量聊天消息的架构设计技术难点的实践经验。
1088 0
直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践
|
XML JSON 自然语言处理
「BBFE前端团队」以生产消费模式设计国际化方案
「BBFE前端团队」以生产消费模式设计国际化方案
231 0
|
开发者 微服务
语音直播源码开发,实现微服务架构的优势分析
语音直播源码开发,实现微服务架构的优势分析
|
数据库
一对一直播平台开发,选择恰当的架构模式很重要
一对一直播平台开发,选择恰当的架构模式很重要
|
存储 消息中间件 缓存
电商互动消息如何进行架构演进?
2020年双11,第一次改变节奏,从光棍节变成双节棍,从一个峰变成了两个峰,在新的挑战下,如何做好技术保障,做好技术支撑,所有技术人都进入了一个新的学习过程。新的形势下,显著特点是时间跨度长、活动周期长以及用户互动玩法更多。 从单用户CC分享到群内分享,以及直播间互动消息等,作为电商的消息IM承接着整个互动的场地,用户在整个“互动消息”场景下,可以进行实时分享、聊天、客服沟通、商家优惠、商家优惠活动和红包以及商品秒杀等。
电商互动消息如何进行架构演进?
直播软件开发如何做到特色鲜明,注意哪些问题?
直播软件开发在互联网飞速发展的今天已经不陌生了,已经成为当下最受欢迎的社交方式之一,在直播类APP无处不在的今天,想要进军这一行业崭露头角,一起先来了解一下如何做到特色鲜明,需要主要哪些问题。
直播软件开发如何做到特色鲜明,注意哪些问题?
【直播回顾】阿里高级开发工程师紫思:闲鱼多业务隔离框架SWAK
SWAK框架是闲鱼开发的一套主要用于解决平台型应用中的多业务耦合问题的技术框架。大多应用的代码都是增量式开发,然而随着业务数量的增加,不同类型的业务代码逐渐交织耦合、难以拆解,严重降低开发效率和团队协作效率。
2575 0
【直播回顾】阿里高级开发工程师紫思:闲鱼多业务隔离框架SWAK