# 《分布式IM系统》大后端平台-好友服务-第02节:好友微服务整合Dubbo的流程设计与实现

作者:冰河
星球: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/17JMS4EiU (opens new window)

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

  • 本节难度:★★☆☆☆
  • 本节重点:好友微服务整合Dubbo对外提供获取好友基本信息的接口,对接用户微服务的基本信息,掌握SpringCloud Alibaba技术栈中Dubbo整合Nacos的实现方案和编码技巧,并能够将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/17JMS4EiU (opens new window)

大家好,我是冰河~~

好友微服务作为整个分布式IM即时通讯系统中,最核心的服务之一,在分布式IM即时通讯系统内部同样也不是孤立的,它不仅需要调用用户微服务的接口获取用户的基本信息,也需要提供Dubbo接口供其他服务调用。

# 一、前言

在前面的文章中,我们已经对好友微服务的主要功能进行了设计和实现,好友服务同样不是孤立存在的,需要与大后端平台的其他微服务进行交互,因此,对于好友微服务来说,也需要整合Dubbo,通过Dubbo对外提供接口供其他微服务调用,同时,通过Dubbo调用用户微服务的接口,获取用户的基本信息。

# 二、本节诉求

对好友微服务整合Dubbo的流程进行设计和实现,通过Dubbo调用用户微服务来获取用户的基本信息,并通过Dubbo对外提供服务,掌握SpringCloud Alibaba技术栈中Dubbo整合Nacos的实现方案和编码技巧,并能够将其灵活应用到自身实际项目中。

# 三、调用流程

好友微服务整合Dubbo后,既作为服务提供者将自身服务注册到Nacos注册中心,又作为服务消费者订阅Nacos中的服务,整体流程如图2-1所示。


可以看到,好友微服务在整个大后端平台中,既作为服务提供者将服务注册到Nacos注册中心,供其他服务订阅。也会作为服务消费者订阅用户微服务注册到Nacos注册中心的接口,调用用户微服务的接口获取用户的基本信息。

# 四、编码实现

好友微服务整合Dubbo的具体编码实现步骤如下所示。

# 4.1 引入Dubbo依赖

在bh-im-platform-friend-domain工程下的pom.xml文件中将引用bh-im-platform-common工程的配置更新为引用bh-im-platform-dubbo工程,如下所示。

<dependency>
    <groupId>io.binghe.im</groupId>
    <artifactId>bh-im-platform-dubbo</artifactId>
    <version>${project.version}</version>
</dependency>
1
2
3
4
5

# 4.2 服务提供者

好友微服务作为Dubbo的服务提供者,对外提供服务,此时主要对外提供的功能包括:判断两个用户是否互为好友,根据用户id获取好友id列表等。因此,需要新增FriendDubboService接口作为好友微服务对外提供的Dubbo接口。

源码详见:bh-im-platform-dubbo工程下的io.binghe.im.platform.dubbo.friend.FriendDubboService。

# 查看完整文章

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