聊聊单体、SOA和微服务

SOA关注的是遗留系统的集成和组件重用,落地上依赖厂商的ESB方案。微服务在互联网时代兴起,使用领域驱动的思想划分服务边界,使得系统由大量高内聚、松耦合的服务组成,落地上可以使用多样化的技术方案。SOA体现了中心化的服务中心,微服务则是去中心分。

记一次运营平台引发的故障

运营后台为处理一个需求,增加了定时任务,优化不足,结果导致ElasticSearch慢查询,最终影响了正常app业务。良好的测试用例覆盖、常态化性能压测、好的code review以及对需求合理性的推敲,都有助于避免同类故障发生。

一次MQ机房迁移引发的血案

MQ机房迁移,带宽减少,又遇上其他业务方高峰,通道服务处理堆积消息,严重影响SD项目。增加容灾方案设计,避免对MQ、通道服务的单点依赖。

性能压测怎样做?

性能压测是发现性能瓶颈的重要方式。吞吐量指标要结合响应时间(TP99、TP90)才有意义。压测预热能获取平稳状态下性能参数。混压比单压更能体现系统性能。不应该使用边界压测数据做为资源规划。

RocketMQ延迟消息

RocketMQ延迟消息的源码分析。发送消息时设置delayTimeLevel属性。真正保存的topic是SCHEDULE_TOPIC_XXXX,队列是delayTimeLevel。ScheduleMessageService包含一个Timer线程,执行DeliverDelayedMessageTimerTask,对于到期的延迟消息,发送到原来的目标topic。

SD项目:基于状态机和MQ的语音游戏方案

SD项目的语音直播游戏房间,使用状态模式拆分房间状态和对应行为。服务器端是事件驱动和无状态的。切换房间状态,向RocketMQ注册一个超时检查的延迟消息,用于异常状态下触发房间轮转。客户端和服务器端在房间的交互建立在长连接通道和信令。客户端有pull机制,异常情况下主动从服务器拉取房间的聚合信息,切换本地状态。