zoukankan      html  css  js  c++  java
  • 架构设计文章读后感8

    欢迎关注个人博客喜欢二福的沧月君的个人博客 所读文章均来自www.infoq.cn

    分享全球dns秒级生效虎牙实践产生思考整体分为部分,背景介绍,方案设计对比,可用,实践落地,。
    规划,背景介绍,虎牙用到基础技术dns环节,dns解析过程关键图dns解析器定位解析追踪dns域名服务器迭代解析根域huya域名获取解析,。
    过程dns解析分布式架构会缓存出现问题挂掉会缓存进行容灾,dns协议支持面广包括手机pc编程框架dns解析器服务器会配dns解析引擎dns虎牙基础设施部分,虎牙dns应用现状,虎牙当前依赖于dns相信在座小伙伴会遇到问题,。
    依赖localdns解析延迟,记录变更生效时间无法屏蔽线路节点业务影响,权威dns全球节点数据时间可控全局生效时间超过,localdns缓存过期时间可控部分localdns遵循ttl时间缓存时间超过小时,。
    dns功能缺失无法解决服务调用面临挑战,时延解析不准支持调度策略,无法满足业务发展云厂商提供dns扩容方案dns数据库切换方案,方案设计对比,。
    问题规划dns设计,名字服务架构,规划会分方面核心做名字服务中心点满足需求,nacossync注册中心服务名字服务dns实现框架rest服务方式调用实现eurekaconsultaf框架服务调用,。
    全球负载场景虎牙音视频业务为主音视频业务节点延迟希望出现节点延迟情况立马做切换,传统dns场景满足容器物理dns需求提供机agent集群方案缓存prefect大大提高dns解析可用性加快生效时间,名字服务总体设计分部分接入需要提供api消息通知dns接入能力,核心功能需要网络数据cmdbip库数据基础提供负载能力全球数据秒级数据源全网服务状态进行监控感知范围节点能够节点屏蔽信息推送端,。
    选择nacos名字服务核心提供统一api包括名字注册变化推送负载,nacossync全球集群数据组件,dns客户端组件用于拦截dns请求实现dns名字服务,改造dns变更生效流程,。
    接下来对比看改造dns变更生效流程差异,原有dns变更生效流程dns生效时间影响,authdns,跨区域跨国数据,。
    bind数据量比较慢,localdns,ttl缓存过期后才会刷新数据,部分厂商遵循ttl时间缓存超过小时缓存时间,。
    服务器,服务器开启nscd做dns缓存,业务进程,应用dns缓存java框架dns缓存,。
    情况会影响dns变更生效流程下图dns变更生效流程,整体业务进程dns缓存关掉dns进行查询会nacos集群拉取服务节点信息后续节点变化会推送dns后续缓存获取信息,nacos集群,集群内raft协议数据级别完成,。
    nacossync,nacos推送变化nacossync跨区域跨国网络情况可能会导致推送丢失延迟加大,nacossync会拉取实例变更拉取周期监听服务数量会影响变更时效,dns,。
    nacos会变更推送dns网络情况可能会导致推送丢失延迟加大,dns会拉取实例变更拉取周期监听服务数量会影响变更时效,业务进程,应用禁用dns缓存解决,。
    核心设计nacos,nacos推送机制,客户端选择获节点拉取节点节点会维护订阅关系变化会相应实地变化推送,当前节点挂掉会节点列表节点,。
    会dns关系出现,sdk方式服务端寻找获节点,服务端节点会进行探测选择可活节点用户维护订阅关系,节点出现问题连接断开sdk发送订阅请求服务端会选择节点维护订阅关系,。
    保证整推送过程不会节点挂掉没有推送,推送效率方面udp方式效率tcp消耗,方案适合目前场景,核心组件设计nacossync,。
    选择nacossync集群数据组件是从方面进行考虑,粒度,nacossync数据服务维度做一致性处理提供保活机制满足节点维持场景,数据库binlog方式只能局限于事务粒度文件只能文件粒度服务维度,。
    可用性方面,nacossync中间件集群方式进行传统数据库文件方式基本单进程进行可用性方面可能满足要求,方式方面,nacossync服务粒度全量写入满足服务注册dns场景需要事务消耗保证,。
    环形,可获节点希望数据进行环形节点备份nacossync支持,数据库方面经典主主主件进行进行协助会问题文件方面支持,nacossync开源版本,。
    nacossync开源方案做修改适用现在场景,配置方式任务进行分拆,实际应用场景nacossync任务达单机到达瓶颈配置方式分片nacossync机器,事件合并队列控制方式控制nacos集群写入量保证稳定性,。
    下发事件一秒钟场景需要k8staf进行数据变化频率事件合并服务进行写入进程,队列控制方式控制nacos集群写入量,添加了能支持k8staf数据功能,后期会特性提交nacos开发者使用,。
    核心组件设计dns,dnscoredns开发扩展组件,nacos插件查询nacos服务信息监听nacos服务变化服务转化域名实现dns协议基础服务发现,cache插件提供域名缓存服务,。
    log插件dns解析日志上报日志服务,proxy插件代理解析域名,dns开源版本,日志组件日志传到日志服务,。
    缓存功能做增强,缓存功能可能ttl时间会过期过期时间去掉令缓存不会过期缓存进行刷新,ttl可能时间会做查询推送查询服务端dns出现问题不会影响整体服务,增强了高可用保障能力,。
    包括进程监控运营运营探测,开源版本本机部署方式做成集群化部署解决服务推送服务负载方面问题,可用,接下来团队李志鹏分享虎牙可用方面实践,。
    周健同学大家介绍项目背景方案设计大家介绍实践落地实践过程关注点可用,全球化部署方案,虎牙全球化部署方案全球部署大区,大区指定服务走专线保障稳定性,。
    部署接入点大区部署深圳无锡接入点节点数据备份保证集群挂掉切换集群,接入点情况httpdns实现客户端接入,客户端定期请求httpdnshttpdns地域寻找接入点,接入点出现故障httpdns节点摘除客户端切换接入点,。
    接下来讲集群部署方案,集群部署nacos节点负载方式暴露使用提供vip满足线路区域接入要求,nacossync做分片处理压力分散分片分片部署nacossync节点保障活可用,线演练,。
    演练场景模拟集群挂集群挂,图看到深圳流量切走无锡流量涨上去无锡流量切走关闭服务看到流量没,去恢复集群流量看切换过程服务影响,看写入影响集群挂情况没有影响,。
    集群挂写入会失败,看到图波峰波峰集群挂情况写入失败延迟加大,切换过程dns没有影响延迟保持,集群上线需要做数据校验保证集群数据实例数据,。
    可用性级别方面保障,单集群挂掉不会影响,双集群挂掉会影响域名变更影响域名解析,线演练数据校验机制,。
    运行过程保证集群数据一致性,全量校验增量校验手段去保证全量校验方式如下,大区做全量校验保证集群数据,大区做做全量校验保证大区服务数据一致性,。
    增量校验方式如下,数据源数据数据源时间戳做增量校验,api写入日志定期校验写入内容是否全部,dnf可用,。
    dns高可用做,agent状态监测包括进程存活是否解析,缓存域名做化处理保证nacos集群出现问题时不会影响域名解析,提供备用节点保证dns挂dns需要升级情况不会影响域名解析,。
    resolvconf配置检查发现配置会自动添加,限制agentcpu使用避免业务进程造成影响,实践落地,实践数据库域名改造,。
    数据库ip方式接入数据库切换需要通知业务方修改配置重启服务带来问题过程可控取决于业务响应速度生效时间超过,提升数据库切换关键点切换需要业务方参与业务无感知情况进行切换,实例变化推送应用应用切换实例,大家看,。
    图现在做改造图dmx虎牙数据库管理系统思路dmx名字服务打通,dmx会数据库实例信息服务形式注册名字服务服务域名,实际应用过程域名去访问数据库应用访问会dns去做域名解析解析是从名字服务查询实例信息实例ip返回应用,应用ip数据库实例进行连接,。
    切换dmx平台修改域名对应实例信息变更推送名字服务名字服务推送dns应用解析拿到实例ip达到切换数据库实例目的,方案落地虎牙数据库切换基本上秒钟能够完成,实践调用使用域名,虎牙部分系统调用负载没有dns需要localdns解析带来问题,。
    问题扩缩容去修改dns记录过程生效时间可能会超过故障节点会影响业务时间,问题localdns智能解析无锡机器可能会解析深圳接入点影响接入质量,问题支持定制化负载策略机房大区优先策略localdns实现不了,想要提升服务调用质量dns记录变更绕过localdnsdns记录变更推dns,。
    系统打通cmdb系统获取机器信息支持负载策略,大家看,图改造数据库域名改造思路负载管理系统系统名字服务打通负载管理系统会域名信息服务形式注册名字服务变更域名记录时负载管理系统推送名字服务名字服务推送dns达到切换目的,域名配置负载策略名字服务会cmdb获取机器机房信息打标域名实例信息,。
    dns查询名字服务时会携带clientip名字服务clientipcmdb信息过滤实例列表返回机房实例dns达到机房优先目的,带来效果,服务扩缩能够秒级完成减少故障时间,扩展dns负载策略业务需要区域接入点不能跨区域调用dns负载策略不能满足需求改造cmdb信息去做区域调度负载策略,。
    业务接入域名延迟会下降,图显示服务接入域名延迟出现下降,落地效果域名解析优化,dns部署提供缓存功能,。
    带来效果,解析延迟会下降现在,缓存命中率会上升coredns原生cachecache组件做优化效果,解析失败率是从下降,。
    总结项目落地技术价值,提供dns服务发现能力消除异构系统调用障碍,填补没有域名解析能力空白,解决说服务调用面临挑战延时解析不准支持负载策略故障牵引,。
    优化域名解析屏蔽localdns故障,落地规模dns覆盖率完成tafeureka注册中心数据,后续规划,localdns,。
    解决dns节点位置影响域名解析准确性问题,解决使用dns问题,优化网解析,精准调度,。
    解决全球dns节点生效问题,作者,周健githubidnanamikon虎牙中间件团队成员毕业中山大学负责名字配置服务虎牙dns微服务相关工作,李志鹏githubidlzp0412虎牙中间件团队成员负责dns服务注册发现服务治理servicemesh相关工作,。
  • 相关阅读:
    hihocoder 1664
    hihocoder 1654
    javascript高级程序设计学习小结3
    javascript高级程序设计小结2
    javascript高级程序设计学习小结1
    js中原型和原型链理解
    javascript对象封装的常用方式
    vue学习总结2
    vue学习小结1
    JS中一些常用的代码块
  • 原文地址:https://www.cnblogs.com/miria-486/p/11025975.html
Copyright © 2011-2022 走看看