首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

游击队到正规军:马蜂窝旅游网的IM系统架构演进之路

以一个典型的用户咨询场景为例,当用户打开 App 或者网页,会通过连接层建立长连接,之后在咨询入口发起咨询,会携带着消息线索初始化消息链路,建立一条可复用、可检索消息线;发送消息,通过消息服务将消息存储到...离线消息推送、历史消息漫游、联系人、文件上传与存储、消息内容风控检测等; 4)数据服务:通过采集用户咨询的来源入口、是否咨询下单、是否有客服接待、用户咨询以及客服回复的时间信息等,定义数据指标,通过数据分析进行离线数据运算...需要消息转发,PHP 业务调用 Dispatcher 服务的发消息接口,Dispatcher 服务通过共享的 Dispatcher Table 数据检索出接收者所在的 ChannelManager...上面提到过,连接信息都是存储在 DispatcherTable 模块中,因此 DispatcherTable 模块要能根据用户信息快速检索连接信息。...要做到这一点有两种方案: 一种是客服通过轮询获取用户的状态,但这样当用户在线状态没有变化时,会发起很多无效的请求; 另外一种是用户上线,给客服推送上线通知,这样会造成消息扩散,每一个咨询过的客服都需要扩散通知

95420

错误代码

500 - 服务器在处理您的请求发生错误原因:我们的服务器出现问题。解决方案:稍等片刻后重试您的请求,如果问题仍然存在,请联系我们。检查状态页面。...解决方案: 错误消息应该会指导您找出具体的错误。查看您正在调用的具体API方法的文档,并确保您发送了有效和完整的参数。您可能还需要检查请求数据的编码、格式或大小。...错误消息应该会指导您哪个参数是无效或缺失的,以及期望的值或格式是什么。检查您正在调用的具体API方法的API参考文档,并确保您发送了有效和完整的参数。...错误消息应该会给您一个关于您的使用率和允许使用量的概念。您还可以您的账户仪表板查看您的API使用统计信息。...,并尽快回复您。

11310
您找到你想要的搜索结果了吗?
是的
没有找到

常见状态码

1007 被限制调用 该方法被限制调用,详细的描述信息会说明 401 1008 调用频率超限 调用频率超限,详细的描述信息会说明,广播消息未开通也会返回此状态码。...25101 消息撤回,参数错误。 29106 未关注此公众号。 29201 无效的公众号。(由会话类型和 Id 所标识的公众号会话是无效的)。...对于 iOS 平台,如果一直连接不上,应该是您没有设置好 ATS。ATS 默认只使用 HTTPS 协议,当 HTTP 协议被禁止 SDK 会一直 30004 错误。...建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。 30008 导航 HTTP 返回数据格式错误。建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。...建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。 31004 Token 无效。Token 无效一般有以下两种原因。

2.2K30

单元测试用例

如果以函数为例,则在将输入参数传递给函数,请检查函数是否应返回期望值。该测试的主要目的是检查单元是否按照设计工作,并更合理地处理错误和异常,并对各种正向、反向的情况进行兼容。...这构成了时间字段的一组条件 各种时间格式,例如12/24小格式,AM / PM 检查有效时间 检查无效时间 检查周末和工作假期的影响 邮政编码验证: 这构成了邮政编码字段的一组条件 测试部分邮政编码输入并检查邮政编码格式...密码不可见 访问测试-多个级别 更改密码 错误消息不应泄露任何系统信息 检查是否正确部署了SSL 检查是否应用了锁定规则 检查密码是否以明码或加密方式保存 使用有效的UserId和无效的UserId验证应用程序...检查是否探索了所有可用产品的选项 检查所有升级和降级路径及选项 验证升级和降级已应用于计费,网络,自助等 停止/断开连接/终止行为 设备故障行为 检查计算金额的舍入 确保使用的测试帐户的完整范围,类型/...使用所有浏览器进行测试 通过启用和禁用Java脚本进行测试 电邮: 本节包含一组可用于验证电子邮件功能的检查 验证在发送电子邮件是否提供确认消息 验证电子邮件中提供的链接是否正常运行 确认回复地址正确

2.3K30

IBM WebSphere MQ检索邮件

IBM WebSphere MQ检索邮件检索邮件要检索邮件,请执行以下操作:按照“创建连接对象”中的说明创建连接对象。在这种情况下,请创建%Net.MQRecv的实例。...%GetStream()-给定初始化的文件字符流,此方法队列中检索消息,并将其放入与该流关联的文件中。请注意,必须设置流的Filename属性才能对其进行初始化。不支持二进制流。...请参阅“获取错误代码”。请记住,当队列为空,IBM WebSphere MQ返回2033。检索消息后,调用Connection对象的%Close()方法以释放动态链接库的句柄。...示例1:ReceiveString()下面的类方法mqtest队列检索消息。...%ReplyQMgrName()(通过引用)更新上次读取的消息回复队列管理器名称。%ReplyQName()(通过引用)更新上次读取的消息回复队列名称。

1.7K20

怎样让 API 快速且轻松地提取所有数据

如果你的部署过程涉及重新启动服务器的操作(很难想象完全不需要重启的情况),那么在执行这一操作需要考虑长时间运行的连接。...挑战:如何返回错误 如果你正在流式传输一个响应,你会从一个 HTTP 200 代码开始……但是如果中途发生错误,可能是在通过数据库分页发生错误会怎样?...相反,你需要向正在生成的流写入某种错误。 如果你正在提供一个巨大的 JSON 文档,你至少可以让该 JSON 变得无效,这应该能向你的客户端表明出现了某种问题。 像 CSV 这样的格式处理起来更难。...挑战:可恢复的下载 如果用户通过你的 API 进行分页,他们可以免费获得可恢复性:如果出现问题,他们可以他们获取的最后一页重新开始。 但恢复单个流就要困难得多。...如果用户由于任何原因断开连接,他们可以传递他们成功检索到的最后一个 ID 来从上次中断的地方开始: GET /stream-everything?

1.9K30

MYSQL ERROR CODE 错误编号的意义

无效的主机名 1043:无效连接 1044:当前用户没有访问数据库的权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在...1051:数据表不存在 1054:字段不存在 1065:无效的SQL语句,SQL语句为空 1081:不能建立Socket连接 1114:数据表已满,不能容纳任何记录 1116:打开的数据表太多...) 消息二进制日志读取数据,获得来自主服务器的致命错误%d: ’%s’。...”,否则,如果发生未预料的服务器mysqld重启,间出现问题。...错误:1430 SQLSTATE: HY000 (ER_QUERY_ON_FOREIGN_DATA_SOURCE) 消息:处理作用在外部数据源上的查询出现问题

2.6K20

实战记录—PHP使用curl出错输出错误信息

} curl_close($ch);//关闭curl 同理,像正则,Json,数据库这些出错基本都会有提供有帮助的错误信息 CURL状态码列表 状态码 状态原因 解释 0 正常访问 1 错误的协议...7 无法连接到主机 无法连接到主机。 8 远程服务器不可用 FTP 非正常的服务器应答。cURL 无法解析服务器发送的数据。 9 访问资源错误 FTP 访问被拒绝。...11 FTP密码错误 FTP 非正常的PASS 回复。cURL 无法解析发送到PASS 请求的应答。 13 结果错误 FTP 非正常的的PASV 应答,cURL 无法解析发送到PASV 请求的应答。...21 命令成功完成 FTP quote 错误。quote 命令服务器返回错误。 22 返回正常 HTTP 找不到网页。找不到所请求的URL 或返回另一个HTTP 400或以上错误。...55 无法发送网络数据 发送网络数据失败。 56 衰竭接收网络数据 在接收网络数据失败。 57 58 本地客户端证书 本地证书有问题。 59 无法使用密码 无法使用指定的SSL 密码。

5.9K50

【架构师修炼之路】Redis 哨兵机制 ( Sentinel )

提醒(Notification): 当被监控的某个 Redis 服务器出现问题, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。...sentinel会以每秒一次的频率向所有与其建立了命令连接的实例(master,服务,其他sentinel)发ping命令,通过判断ping回复是有效回复,还是无效回复来判断实例时候在线(对该sentinel...sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度,如果实例在down-after-milliseconds毫秒内,返回的都是无效回复,那么sentinel...将已下线的主节点设置成新的主节点的节点,当其回复正常,复制新的主节点,变成新的主节点的节点. redis哨兵主备切换的数据丢失问题 两种丢失情况: 异步复制 因为master->slave的复制是异步的...slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求.

1K10

salesforce Integration 概览(一) 杂篇

这些具有监听器的消费者(consumer)可以在事件发布检索这些事件。 这里举一个例子进行描述。...排队和缓冲 排队和缓冲通常依赖于异步消息传递,而不是请求-响应体系结构。在异步系统中,当目标程序繁忙或连接受损消息队列提供临时存储。此外,大多数异步中间件系统提供持久存储来备份消息队列。...当回复消息到达回复线程调用相应的回调,该回调重新建立调用方的上下文并处理回复。这种方法允许多个未完成的请求共享一个回复线程。 中介和路由 中介路由是组件到组件的复杂消息“流(flow)”的规范。...这些具有监听器的消费者(consumer)可以在事件发布检索这些事件。 这里举一个例子进行描述。...当回复消息到达回复线程调用相应的回调,该回调重新建立调用方的上下文并处理回复。这种方法允许多个未完成的请求共享一个回复线程。

1K30

Uber的一键式聊天智能回复系统

消息路由到Uber的Messaging Platform 3. 将消息添加到推送通知服务 4. 向Uber的Cassandra数据库存放持久化消息 5....推送远程和本地的表层消息给Receiver 6. 收到消息后,Messaging Platform获取消息正文 为了支持智能回复,我们要能够使用机器学习模型以足够低的延迟实时评估回复。...然而,它与所有其他试图理解普通文本信息的尝试一样都有一个技术挑战:它们不仅简短,而且还包含缩写、拼写错误和口语。我们在设计机器学习系统考虑到了这一挑战。...外部看,OCC接收到最新传入的消息并返回可能的回复,但在后台还有更多事情要做。...拼写错误和缩写会增加更多排列,所以聊天消息增加了一定程度的复杂性。 创建一个需要对数百万个问题进行回复的系统将无法扩展,因此我们需要一个系统来识别每个问题背后的意图或主题,从而对有限的意图进行回复

90230

db2 terminate作用_db2 truncate table immediate

SQLSTATE 类代码 类代码 含义 要获得子代码,参阅…00 完全成功完成 表 301 警告 表 402 无数据 表 507 动态 SQL 错误 表 608 连接异常 表 709 触发操作异常 表...01004 字符串值在指定给具有较短长度的另一字符串数据类型被截断。01005 SQLDA 中的条目数不够。01007 未授予特权。0100C 过程返回了一个或多个特殊结果集。...01689 在未连接数据源的情况下完成了 SQL 编译。0168A 在数据源上找不到源过程的程序包主体,或者它无效。01H51 “MQSeries 应用程序消息传递接口”消息被截断。...10601 在处理 XQuery 函数或运算符遇到了算术错误。10602 在处理 XQuery 函数或运算符遇到了数据类型转换错误。...可以在消息正文中找到下列原因码之一: 01数值超出范围02被零除03算术溢出或下溢04日期格式无效05间格式无效06间戳记格式无效07间戳记持续时间的字符表示法无效08间间隔类型无效(必须是 1

7.5K20

Redis 6.0新特性----RESP3协议

Hello:与映射类型类似,但仅在客户端和服务器之间建立连接发送,以便用不同的信息(如服务器名称、版本等)欢迎客户端。...剩下的字符串是错误消息本身。错误代码是通用的。错误代码有助于客户机区分不同的错误条件,而不必在错误消息中进行模式匹配,这可能会改变。...假设初始零无效 .指数格式无效。...通常设置的回复不应包含多次发出的相同元素,但协议不强制执行:客户端库应尝试处理此类情况,如果元素重复,则应尽力避免返回重复数据,至少在使用某种形式的哈希返回回复是这样。...当客户机读取回复并遇到属性类型,它应该读取该属性,然后继续读取回复。属性回复应该单独累积,用户应该有办法访问这些属性。

1.5K20

讲解NoBrokersAvailableError

当你尝试连接到 Kafka 集群,它表示无法找到可用的 broker 节点。错误原因无效连接配置:检查你的连接配置是否正确,包括 Kafka 服务器地址和端口号。...当使用Apache Kafka进行数据流处理,你可能会遇到"NoBrokersAvailableError"错误。...但无论在何种情况下,通过捕获和处理"NoBrokersAvailableError"错误,我们可以确保应用程序能够在正确连接到Kafka集群正常运行,并在连接错误发生进行适当的处理。...消费者请求处理包括了检索可用消息、维护消费者偏移量(offset)以及处理消费者组协调等操作。数据复制和高可用性:Kafka通过将消息复制到多个broker来提供容错和高可用性。...结论"NoBrokersAvailableError" 错误表示无法连接到 Kafka 集群的 broker 节点。这可能是由于无效连接配置、网络连接问题或 Kafka brokers 宕机所致。

32910

使用PowerMock进行单元测试

在Spring框架中常用的两种测试框架:PowerMockRunner和SpringRunner两个单元测试,鉴于SpringRunner启动的一系列依赖和数据连接的问题,推荐使用PowerMockRunner...举个例子,你在使用Junit进行单元测试,并不想让测试数据进入数据库,怎么办?这个时候就可以使用PowerMock,拦截数据库操作,并模拟返回参数。 2. PowerMock包引入 <!...: 这构成了时间字段的一组条件 各种时间格式,例如12/24小格式,AM / PM 检查有效时间 检查无效时间 检查周末和工作假期的影响 5.4 邮政编码验证: 这构成了邮政编码字段的一组条件...密码不可见 访问测试-多个级别 更改密码 错误消息不应泄露任何系统信息 检查是否正确部署了SSL 检查是否应用了锁定规则 检查密码是否以明码或加密方式保存 使用有效的UserId和无效的UserId验证应用程序...使用所有浏览器进行测试 通过启用和禁用Java脚本进行测试 5.12 电邮: 本节包含一组可用于验证电子邮件功能的检查 验证在发送电子邮件是否提供确认消息 验证电子邮件中提供的链接是否正常运行 确认回复地址正确

3.1K30

揭秘Kubernetes网络:顶级工程师实用指南

好吧,它们可能是同一应用程序的一部分,每个容器处理不同的方面,例如 Web 服务器容器与数据库容器通信以获取数据。 但是,就像 Pod 到 Pod 的通信一样,这里也可能出现问题。...当 Pod 需要与服务通信,就像向中央集线器发送消息一样,然后该集线器将消息路由到适当的目标。这是可能的,因为服务有其唯一的 IP 地址和 DNS 名称,这使它们可以轻松地被发现和通信。...但是,Pod 到服务的通信中仍然可能出现问题。例如,服务定义、网络策略或防火墙规则配置错误可能会阻止 Pod 访问服务。...虽然无法集群外部直接访问它,但外部客户端仍可以通过代理访问该服务。 尽管有这些选项,外部到服务通信中仍然会出现问题。...你可以使用它来检查与网络相关的日志,例如连接错误、DNS 解析问题或网络超时。 例如,您可以运行 kubectl 日志以检索容器中的日志,然后搜索与网络相关的消息以识别潜在问题。

28310

MySQL关于时间设置的注意事项

下面是容易忽略的内容: TIMESTAMP保存数据方式: MySQL将TIMESTAMP值当前时区转换为UTC进行存储,并从UTC返回到当前时区进行检索。...默认情况下,每个连接的当前时区是服务器的时间。时区可以在每个连接的基础上设置。只要时区设置保持不变,就会返回所存储的相同值。如果存储一个时间戳值,然后更改时区并检索该值,则检索到的值与存储的值不同。...对于STRICT_TRANS_TABLES, MySQL将一个无效的值转换为最接近的有效值,然后插入调整后的值。如果缺少一个值,MySQL将为列数据类型插入隐式的默认值。...这包括NOW()或CURTIME()等函数显示的值,以及存储在时间戳列中的值和时间戳列检索到的值。时间戳列的值将从会话时区转换为UTC用于存储,UTC转换为会话时区用于检索。...mysql.time_zone_name;+----------+ | COUNT(*) | +----------+ | 1780 | +----------+ 3)log_timestamps 这个变量控制写入错误日志的消息以及写入文件的一般查询日志和慢速查询日志消息中的时间戳的时区

1.9K20
领券