# 《分布式IM系统》大后端平台-群组服务-第01节:群组微服务常规功能的设计和实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/17QjHYpCt (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★☆☆☆
  • 本节重点:思考分布式IM即时通讯系统关于群组业务的流程,结合群组微服务梳理群组与群成员相关的功能点,设计和实现群组微服务的常规功能,掌握在DDD领域架构模式下,后端常规功能的设计和实现,并能够将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/17QjHYpCt (opens new window)

大家好,我是冰河~~

在分布式IM即时通讯系统中,关于群组微服务的功能比较简单,大部分也都是一些常规的CRUD操作。但是,对于群组微服务的常规功能来说,重点是思考这些功能背后的设计逻辑和实现意义。

# 一、前言

在前面的文章中,我们逐步实现了用户微服务和好友微服务的主要功能,此时用户微服务和好友微服务的功能比较完善了。对于群组微服务来说,在功能需求和设计上,我们也简化复杂的流程设计,保留最核心的业务能力。此时,我们需要做的,同样是梳理清楚群组微服务要提供的功能,并重点思考实现这些功能背后的设计逻辑。

# 二、本节诉求

对群组微服务的常规功能进行设计和实现,掌握常规功能的接口设计,掌握后端常规功能的设计和实现,并能够将其灵活应用到自身实际项目中。

# 三、功能梳理

对于分布式IM即时通讯系统中大后端平台的群组微服务来说,我们简化了繁琐的业务流程,保留最核心的业务和功能。此时,我们需要梳理出群组微服务到底应该存在哪些功能,才能满足分布式IM即时通讯系统对群组功能的需求。

对于群组微服务来说,基本都是一些最核心、最常规的功能。例如,创建群、修改群信息、解散群、查询群列表、查询群详情、邀请进群、查询群成员、退出群、踢人出群等功能,整体如图1-1所示。


每个功能点的说明如下所示。

  • 创建群:用户可以在群组微服务中创建群,此时创建群的用户就是群主。
  • 修改群信息:群主可以修改群信息,比如群头像、群名称、群备注、群公告等。
  • 解散群:群主可以解散自己创建的群组。
  • 查询群列表:用户可以在群组微服务中查询群列表。
  • 查询群详情:用户可以在群组微服务中查询群详情。
  • 邀请进群:用户可以邀请自己的好友加入群组。
  • 查询群成员:用户可以在群组中查看群成员。
  • 退出群:用户可以主动退出某个群组。
  • 踢人出群:群主可以将某个用户踢出群组。

# 四、接口设计

通过对功能的梳理,我们可以大体梳理出群组微服务需要提供的接口如下所示。

接口名称 请求方式 接口链接 备注说明
创建群 POST http://{ip:port}/group/create
修改群信息 PUT http://{ip:port}/group/modify
解散群 DELETE http://{ip:port}/group/delete/{groupId}
查询群列表 GET http://{ip:port}/group/list
查询群详情 GET http://{ip:port}/group/find/{groupId}
邀请进群 POST http://{ip:port}/group/invite
查询群成员 GET http://{ip:port}/group/members/{groupId}
退出群 DELETE http://{ip:port}/group/quit/{groupId}
踢人出群 DELETE http://{ip:port}/group/kick/{groupId}

每个接口的数据交互格式如下所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码