【热点】探探的微服务架构

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介:
    最近在很多场合都听到探探这样一款App:云栖大会、微服务案例分享、脱口秀大会等等,老司机们一定知道我在说啥,作为国内版的Tinder,它在系统设计上还是借鉴了许多老大哥的想法。
    探探的功能可以简单概述为四个部分:用户配置文件管理、个性化推荐匹配、配对服务和实时消息服务。简单地说个人配置文件就是每个用户的介绍,主要存储的是用户照片或视频,毕竟人类是视觉动物,尤其是对于第一印象,照片的上限是9张;推荐服务根据筛选条件(性别,年龄,距离,爱好等)从活跃用户中推荐匹配者;配对服务即双方都有意向,对方将进入自己的匹配用户名单,即服务端的通讯录列表,男性的匹配成功率在0.1%,即每一千次右划能配对成功一次,当然这也看头像和区域哈(当然女性玩家会高出几百倍);最后是实时通讯服务,即点到点即时聊天,不能添加第三方更不能组群^.^

1

    好了,先说第一项功能,探探的客群还是以大陆地区为主,即便如此,图片和小视频的存储量也是相当惊人的,如何确定这些对象在服务端的存储方式,究竟是用文件还是块存储呢?相对于文件存储,块存储的优势在于以下三点:
  1. 易编辑:块存储的表结构可以方便用户提取任意数据块进行编辑;
  2. Transaction保证:变更需要commit并确认操作成功;
  3. 索引功能:可以提升搜索效率。
  4. 便于做访问控制

    平心而论,照片一般作为一个整体文件被添加或替换,所以前两个特点的应用场景并不多,而且在实际操作中,很少有用户会给照片添加各种元数据(拍摄时间,地点,圈头像等等),甚至连照片名字都是一串数字,常规搜索都词不达意,更别说特征搜索了。因此看起来唯一有用的功能只剩访问控制了。我们再来看看文件存储的优势:
  5. 便宜
  6. 访问迅速:不需要遍历表把所有数据块拼起来,一般只需要建立用户--图片--存储位置的单表就可以了。
    2
  7. 可通过CDN进一步提升访问速度,CDN可以很好地缓存多媒体文件。
    3
    下面进入我们的正题,首先我们该如何对用户的配置文件进行微服务拆分?主要考虑有以下几点。

用户访问配置文件(记录用户的基本信息,昵称、地区、爱好等等)需要提供秘钥(为提高安全级别可以将密码替换成令牌),如果我们直接将配置文件与用户对接,那势必别的服务都需要与配置文件建立连接以获取验证信息。但很多情况是不必要的,例如即时通讯跟用户的配置文件毫无关系。基于此我们需要建立一个应用网关服务,专门用来核实用户身份。
配置文件是否要和用户的照片库关联,目前看来似乎只有进入用户账号才能看到该用户的照片,但是从长远来看,不排除会将所有照片进行AI分析,以开发更多客群服务,所以这部分在实际操作中,探探还是将其拆分了。

    因此配置文件拆分后的微服务就如下图所示。

4

    配对服务的业务逻辑是,如果你喜欢我,我也喜欢你,双方就加入到各自的通讯录里,不然你就再也不会浏览到该用户。用户的配置文件跟配对服务没有关系,配对数据库只记录任意通过验证的两个ID之间的双向选择关系,一旦双向选择了,就配对成功,当然如果一方取消配对也会实时地删除双方通讯录。因此可以简单理解为下面的微服务架构。

5

    关于即时聊天服务,小编已经在微信的微服务中介绍过了,这里需要注意的是HTTP是客户端到服务端的单向通信服务,作为即时通讯来说,不可能让用户每次登陆才能查看到未读消息,因此这里需要建立XMPP通讯协议来使服务端可以主动发消息给客户。

6

    综上所述:探探的微服务从前至后包括了:网关服务、配置文件、图片库、配对服务、全网配对数据库(由于数据量的关系,这部分很可能对数据进行了切片,将不同地域的用户放在不同地区的数据库里)、会话服务、会话数据库、消息数据库。
    各位观众如果有想了解的互联网公司的架构,可私信小编,我们可以一起探讨一下。
相关文章
|
2月前
|
缓存 监控 API
【微服务战场上的神秘守门人】:揭秘API网关的超能力 —— 探索微服务架构中的终极守护者与它的神奇魔法!
【8月更文挑战第7天】随着微服务架构的流行,企业应用被拆分为围绕特定业务功能构建的小型服务。API网关作为微服务间的通信管理核心,对请求进行路由、认证、限流等处理,简化客户端集成并提升用户体验。以电商应用为例,通过Kong部署API网关,配置产品目录等服务的API及JWT认证插件,确保安全高效的数据交互。这种方式不仅增强了系统的可维护性和扩展性,还提供了额外的安全保障。
46 2
|
2月前
|
消息中间件 存储 监控
"微服务的神经中枢:深度解析DCM系统架构,打造智能配置管理的黄金时代!"
【8月更文挑战第21天】分布式配置管理(DCM)系统是微服务架构的核心,集中管理配置以确保一致性与灵活性。需满足集中管理、实时更新、高可用及安全性需求。架构包括配置存储、服务器、客户端代理、消息队列及监控组件。工作流程涵盖配置写入、变更通知、获取更新、本地缓存及配置生效。技术选型考虑etcd、Consul等存储方案,及RabbitMQ、Kafka等消息队列。安全性方面实施加密传输、访问控制及审计日志记录。高效可靠的DCM系统对于构建健壮微服务架构至关重要。
25 0
|
5月前
|
敏捷开发 Cloud Native 云计算
微服务与单体架构:争议与未来趋势
随着企业应用程序的不断发展,以及云原生领域的快速发展,架构也在不断地发展和演变。传统的单体架构在开发和部署方面有诸多问题,微服务架构在解决这些问题方面表现出色,已经成为了现代化企业架构的主流,而且微服务和单体架构已成为现代技术领域的焦点议题。但是,微服务架构也存在一些争议,同时也面临着一些未来趋势,以及单体架构的应用,作为开发者,个人觉得这两种架构各有千秋,各有利弊,但是最近技术圈关于这两种架构的关注度引发了不少热烈的探讨和争议。接下来分享一下我对这个问题的看法,以及讨论一下哪种架构更符合未来云的发展趋势。
166 2
微服务与单体架构:争议与未来趋势
|
11月前
|
安全 Cloud Native 应用服务中间件
如何降低微服务复杂度丨云栖大会微服务主题分享实录
如何降低微服务复杂度丨云栖大会微服务主题分享实录
201 2
|
Kubernetes 安全 Java
支撑 “千万设备日活” 的创米数联 7 年微服务架构演进之路
支撑 “千万设备日活” 的创米数联 7 年微服务架构演进之路
|
Kubernetes Dubbo 前端开发
在低容错业务场景下落地微服务的实践经验
“健康体检是一个低容错的场景,用户到医院体检,由于 IT 原因导致无法完成预约的项目,会对用户体验造成极大的影响。” ——禾连健康 CTO 邓志豪
在低容错业务场景下落地微服务的实践经验
|
缓存 运维 前端开发
亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构
亿级流量电商详情页系统的完整大型架构。同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动设计进行微服务建模、Spring Cloud、基于DevOps的持续交付流水线与自动化测试套件、基于Docker的自动化部署。此外,还包含了大型电商详情页系统架构中的多种复杂架构设计的详细介绍。
497 0
|
缓存 监控 负载均衡
一张图看懂微服务架构路线
一张图看懂微服务架构路线
1309 0
一张图看懂微服务架构路线
|
存储 缓存 安全
日10亿级处理,基于云的微服务架构(3)
日10亿级处理,基于云的微服务架构(3)
151 0
日10亿级处理,基于云的微服务架构(3)
|
消息中间件 监控 关系型数据库
日10亿级处理,基于云的微服务架构(4)
日10亿级处理,基于云的微服务架构(4)
156 0
日10亿级处理,基于云的微服务架构(4)
下一篇
无影云桌面