Uber实时推送平台是如何打造的

Uber实时推送平台是如何打造的,第1张

NET 7 正式推出标准期限支持,支持期限为 18 个月。 其中包括许多令人兴奋的新功能,包括 Web API、gRPC、ASPNET 和 C#11 的性能升级。
本文涵盖以下主题:
NET 7 中的性能改进。
gRPC JSON 转码。
在 NET 7 中创建 gRPC 服务。
在 Postman 使用 gRPC 服务。
使用服务器反射和 Postman
添加 Swagger 规范。
除了讨论 NET 7 中 gRPC 的新特性,我们还将实现一个能够在一分钟内流式传输 500 万条记录的真实微服务。
这是一个快速回顾:
gRPC 是由 CNCF 开发的流行的开源 RPC 框架。
作为契约优先、独立于语言的框架,客户端和服务器必须就消息的内容和传递方式达成一致,契约在 proto 文件中定义,然后使用 NET7 的工具生成代码。
在单个 tcp 连接上,>gRPC协议是一个高性能。
通用的开源RPC框架,其由Google主要面向移动应用开发并基于>Gprc Java最近130 Release了
1、首先是Keepalived机制
1)客户端的Keepalives设置可以work了
2)设置Keepalives后,在整个网络连接建立完成之后,会不断的发送ping消息给服务端
3)服务端根据Keppavlied的ping消息来自动识别哪些连接是断了的
2、服务端可以设置连接的时效了
1)当设置连接的最大时间到了,该连接将会中断掉
3、增加了trace的一些传递
4、对LoadBalancers进行了一些变化

之前写的同步发送通知随着业务量的增长,已经不再适用,所以快速实现一个基本的rq队列+grpc的方式来投递通知数据并交给rq的worker去调用grpc的服务。
但是之前调用的地方太多了,所以最好还是以patch的方式去修改

原有的结构大致为图1所示

首先flask调用grpc再由grpc请求微信服务器发送消息,然后由微信响应请求后返回通知结果给grpc,grpc再返回结果给flask最终返回给客户端,所以除非等到grpc返回调用结果,否则将会一直阻塞
现在则为

这里暂时只创建一个队列去分发所有类型的通知所以message的格式需要固定
{"method":"method_name", "data":{}} ,客户端调用publish传入对应的参数即可

给标题后面加了个(1),我知道这玩意儿很快就会还要修改
可能看到这里就会有同学问了,为啥不new一个thread去执行嘞?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12690635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存