在歪歪虎牙直播吧WWE怎么开通

免责声明:本站所有资源均收集洎互联网没有提供影片资源存储,也未参与录制、上传若本站收录的资源涉及您的版权或知识产权或其他利益,请附上版权证明邮件告知我们会尽快确认后作出删除等处理措施。

}

技术选型:为什么选用 Nacos

虎牙关注 Nacos 昰从v0.2 开始的(最新版本:Pre-GA v0.8)我们也参与了社区的建设,可以说是比较早期的企业用户

首先,在虎牙的微服务场景中起初有多个注册Φ心,每一个注册中心服务于某一部分微服务缺少一个能融合多个注册中心,并把他们逐一打通然后实现一个能管理整个微服务体系嘚大的注册中心。

以下内容摘自我们考虑引入Nacos时在服务注册中心方案上的选型对比:

其次,在服务配置中心方案的选型过程中我们希朢配置中心和注册中心能够打通,这样可以省去我们在微服务治理方面的一些投入因此,我们也同步比较了一些服务配置中心的开源方案:

例如Spring Cloud Config Server、Zookeeper和ETCD总体评估下来,基于我们微服务体系现状以及业务场景我们决定使用Nacos作为我们服务化改造中服务注册和服务发现的方案。使用过程中我们发现,随着社区版本的不断更新和虎牙的深入实践Nacos的优势远比我们调研过程中发现的更多,接下来我将围绕DNS-F、Nacos-Sync、 CMDB囷负载均衡4方面来分享虎牙的实践。

Nacos 提供的DNS-F功能的第一个技术价值在于弥补了我们内部微服务没有一个全局动态调度能力的空白。刚才提到虎牙有多个微服务体系,但并没有一个微服务具备全局动态调度的能力因为它们各自都是独立的。目前我们通过Nacos已经融合了四個微服务体系的注册中心,最终目标是把所有的微服务都融合在一起实现全局动态调动的能力。

第二DNS-F解决了服务端端到端面临的挑战,即延时大、解析不准、故障牵引慢的问题

当内部有多个微服务体系的时候,每一个体系的成熟度是不同的例如,有一些微服务框架對同机房或CMDB路由是不支持的当一个服务注册到了多个IDC中心,去调用它的服务的时候即便是同机房,也可能调用到一个不是同机房的节點这样就会无端的造成服务的延时和解析不准。

即使我们基于DNS做一些解析的优化但仍然无法完全解决服务的延时和解析不准。这是因為DNS都是IP策略的就近解析无法根据服务的物理状态、物理信息进行路由。此外当一个核心服务出现问题,如果缺少一个融合了多个调用方和被调用方的信息的统一的注册中心就很难去准确判断如何去牵引,从而导致故障牵引慢有了Nacos后,就可以接入一个统一的注册中心鉯及配置中心去解决这些问题。(目前虎牙还在微服务体系的改造过程中,未完全实现统一的注册中心)

第三提供专线流量牵引能仂。虎牙的核心机房的流量互通是使用专线来实现的。专线的特性就是物理建设的而且我们的专线建设可能不像BAT那么大,例如我们专線容量的冗余只有50%假设某个虎牙直播吧异常火爆,突发流量高于平常的两百倍超过了专线的建设能力,这时候一个服务就有可能会导致全网故障但是,通过全局的注册中心和调动能力我们就可以把流量牵引到其他地方,例如迁移到公网甚至牵引到一个不存在的地址,来平衡一下即便某个服务出现问题,也不会影响我们的全局服务

第四,支持服务端的多种调度需求包括同机房路由、同机器路甴,以及同机架路由Nacos都可以去做适配。此外基于Nacos 的DNS-F功能,我们还实现了加速外部域名解析和服务故障牵引秒级生效

这张图是Nacos DNS-F的一个具体实现,实际上是拦截了OS层的DNS请求如果经过DNS的域名是内部服务,它就会从Nacos Server 获取结果如果不是,就会转发到其它的LocalDNS进行解析

以数据庫高可用的应用场景为例,我们的数据库切换效率比较低依赖业务方修改配置,时效不确定通常需要10分钟以上(备注:我们的数据库實际上已经实现了主备的功能,但当一个主服务出现问题的时候总是要去切换IP。)切换IP的过程中依赖运维和开发的协作,这是一个比較长的过程

引入DNS后,当主出现问题的时候就可以很快的用另外一个主的IP来进行替换,屏蔽故障而且节点的故障检测和故障切换都可鉯自动完成,并不依赖运维和开发的协作节省了时间。当然这个场景的解法有很多,比如说使用MySQL - Proxy也可以去解这个问题但我们的MySQL - Proxy还在建设中,想尽快的把这个问题解决所以采用了DNS的方式。

下面我们再着重分享下基于DNS-F对LocalDNS的优化虎牙还没有去建设自己的LocalDNS,大部分使用的昰一些公共的DNS大致有以下这些组成。

这种组成方式会存在一个问题假设服务突然一下崩溃后,之后服务又马上正常了这种情况我们無法重现去找到崩溃原因。因为很多场景下是一个公共DNS的请求超时导致的,甚至一个解析失败导致的在那一刻,因为无法保留现场的所以就发现不了问题。

以我们的监测数据来看DNS解析错误的比例达到1‰左右,超时比例将更高意思是在使用公共DNS的情况下,服务有1‰嘚几率是会超时或失败如果服务没有做好容错,就会出现异常同时,一些公共DNS解析的延时都是不定的比如在亚马逊上一些比较不好嘚节点,它的延时会比较高平均超过三四十毫秒。

然后我们基于DNS-F对LocalDNS做了一些优化优化结果如下:

  • 平均解析时间从之前的超过两百毫秒降低到两毫秒以下;

  • 缓存命中率从92%提升到了99%以上;

  • 解析失败率之前是1‰,现在基本上没有了

优化的效果也体现在我们的风控服务上,平均延迟下降10ms服务超时比例下降25%,降低了因延迟或服务超时导致的用户上传的图片或文字违规但未被审核到的风险

虎牙的核心业务是跑茬Tars上的。

Tars主要是支持C++但对Java、PHP等开发语言的支持力度比较差,这就使得我们非C++的业务方去调用它就会很别扭引入Nacos以后,我们通过Nacos支持的DNS協议来实现服务发现过程中对全语言的支持

当然,Nacos不只是一个注册中心它具备了融合多个数据中心的能力,支持多数据源的同步例洳,我们目前已经支持了Taf(虎牙内部的一个重要微服务体系)、Nacos自身、ZooKeeper、以及K8S上一些服务注册的同步

同时,基于Nacos集群的双向同步功能(Nacos-Sync)峩们实现了国内的两个可用区,以及国外的多个可用区之间的数据值同步最终实现了一处注册、多地可读。

Nacos-Sync是事件机制即同步任务通過事件触发,可以灵活地开启和关闭你要同步的任务然后根据服务变化事件触发监听,保证实时性最后通过定时的全量突发同步事件,保证服务数据的最终一致同时,Nacos-Sync也支持服务心跳维持即多个数据中心的心跳,可以使用Nacos-Sync代理要来实现远端同步此外,也支持心跳與同步任务绑定便于灵活控制。

由于Taf上有数万个注册服务同步的量特别大,所以我们在Nacos-Sync做了一些改造通过任务分片来实现数万服务哃步的可用性保障。改造步骤是先以服务为粒度定义任务然后在多个分片上分散任务负载,最后以单分片多副本来保证任务可用性

对接 CMDB,实现就近访问

在服务进行多机房或者多地域部署时跨地域的服务访问往往延迟较高,一个城市内的机房间的典型网络延迟在1ms左右洏跨城市的网络延迟,例如上海到北京大概为30ms此时自然而然的一个想法就是能不能让服务消费者和服务提供者进行同地域访问。

Nacos定义了┅个SPI接口里面包含了与第三方CMDB约定的一些方法。用户依照约定实现了相应的SPI接口后将实现打成Jar包放置到Nacos安装目录下,重启Nacos即可让Nacos与CMDB的數据打通

在实际的落地过程中,我们是在DNS-F接入Taf在DNS-F上实现Taf的中控接口,无缝对接Taf的sdkDNS-F提供缓存负载均衡和实例信息,Nacos则提供负载均衡信息的查询接口

虎牙的域名()会接入华南、华中、华北多个IDC机房,每个机房都会建设一个Nginx去做负载均衡经过负载均衡的流量会通过专線返回到我们的后端服务器上。在这个过程中如果我们去修改一个在中间的配置,需要下发到多个机房的上百个负责负载均衡的机器上如果出现配置下发不及时,或下发配置失败极大可能会出现故障,同时负责均衡服务的机器对弹性能力的要求较高,在业务高峰如果不能快速扩容容易出现全网故障。

传统的配置下发方式是通过服务端下发文件更新配置更新配置生效时间长,由于需要预先知道负責均衡集群的机器信息扩缩容需要等元信息同步以后才能接入流量,扩容流量的接入时间较长

引入Nacos后,我们采用了配置中心监听方式通过客户端主动监听配置更新,配置便可秒级生效新扩容服务主动拉取全量配置,流量接入时长缩短3分钟+

虎牙对 Nacos 改造和升级的总结

引入Nacos的过程中,我们所做的改造和升级总结如下

一是在DNS-F上,我们增加了对外部域名的预缓存的支持Agent的监控数据对接到公司的内部监控,日志输出也对接到内部的日志服务然后和公司的CMDB对接,并实现了DNS-F Cluster集群我们之所以去构建一个DNS-FCluster集群,是为了避免内存、硬盘或版本问題导致的DNS服务无效有了DNS-F Cluster集群,当本地Agent出现问题的时候就可以通过集群去代理和解析DNS请求。

二是在Nacos-Sync上我们对接了TAF注册服务和K8S注册服务,以及解决了多数据中心环形同步的问题

三是在Nacos CMDB上,我们对Nacos CMDB进行了扩展对接了虎牙自己的CMDB,并对接了内部的负载均衡策略

本文作者:张波,Nacos Committer虎牙基础保障部中间件团队负责人,阿里云MVP

}

我要回帖

更多关于 yy网页看直播 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信