下一代微服务!微博Service Mesh高可用架构实战

澳门一号游戏官网多少

首先,为大家介绍下微博服务化面临的挑战。

微博的形态比较特殊,除去常态午/晚高峰流量较高外,突发热点事件的杀伤力更大。

热点事件来袭时,流量极短时间内呈现爆炸式增长,并且往往事件爆发没有任何征兆。 这对于微博服务化及稳定性均带来了极大挑战。

如果其中某一个环节掉链子,不能及时感知并作出应对,极有可能会导致雪崩式宕机,导致全站挂掉。

那么怎么解决这种问题呢首先会想到自动扩缩容/降级建设,但是我们决策依赖是什么呢又如何满足系统可观测性要求,以及如何评价系统可用性及冗余度呢究其本质,系统的服务治理建设非常重要,它会直接影响到服务可用性。

但是微博技术栈的多样性又导致了在微服务化和服务治理方面困难重重。

从技术层面看,微博的典型服务调用大致如上图,业务体系会调用平台体系的多个接口,例如通过平台接口获取微博内容。

平台体系主要是Java技术栈,本来微服务相关解决方案也多,再加上服务化时间较早,平台微服务体系建设相对比较完善,同时也产出了一些优秀开源框架,比如Motan微服务框架。

业务方的语言栈:多样化,基本涵盖了所有主流语言,其中PHP相关系统流量占比较大。 调用链路:通常情况下业务方和平台使用RestFulAPI进行交互。

一次请求调用要经过4,7层的层层调度,服务稳定性还时常遭受网络抖动及DNS不稳定的困扰,在中间层的消耗是不容忽视的。 另外,业务部门的语言种类繁多,间接导致了各部门微服务体系建设参差不齐。

峰值流量应对需要所有部门所有业务模块的通力协助和联动,考验的是整站实力,我们需要所有模块都能具备高水平的服务治理能力。

因此我们迫切需要解决跨语言微服务化问题。 上图是微博平台内部的微服务体系支撑图,平台实现以Motan框架为核心的微服务治理体系。

此外,还有自研的Vintage注册中心及OpenDCP智能弹性调度平台以及Graphite实时监控平台,可以看出平台微服务架构有完善的DevOps支撑。 业界的大趋势是云原生,微服务作为云原生重要的一环,是我们必须要突破的。 为了解决跨语言服务治理的问题,我简单介绍一下我们尝试过哪些解决方案。

这里有个大背景,Motan由于是微博内部使用已久,经历过重大考验并且开源的优秀框架,它积累了很多优秀的服务治理经验,所以我们服务化改造要充分考虑Motan的存在。 我们尝试将Motan适配Yar这种PHP的RPC协议,PHP可以与Server端的Java进行通讯,但PHP并不能进行服务发现。

于是我们在PHP旁边加一个Daemon程序,也考虑过使用Nginx,来做服务发现。 当然问题也是显而易见的,这样改造会导致业务侵入变高,成本变大,扩展性也较差,何况并没有解决PHP做Server端的服务治理问题。

我们也尝试过GRPC,当然跨语言调用能解决,但是这里遇到几个问题,一个是如何进行服务治理,另外一个是PB序列化问题。 由于微博场景的内容结构体非常大,效率并不比Json高,业务变更导致PB文件的变更让升级维护成本变得难以接受,另外序列化数据遇到问题调试也变的困难。

此外,技术栈的多样性也会引发一系列的问题。 即使我们解决了PHP到Java的调用问题。 但是相同的治理功能,不同的语言不可能再实现一遍。

Motan框架积累下来的服务治理经验是我们需要传承和发扬的,那如何均衡这些问题及解决方案呢。

?
澳门一号游戏官网多少 @ 2019 TONGWEI 版权所有  蜀ICP备05002048号  总部地址:四川省成都市高新区天府大道中段588号澳门一号游戏官网多少国际中心 电话:025-85188899  技术支持:澳门一号游戏官网多少传媒