斗鱼已公开的运维技术和架构分析
By 12月01日 2016
引言
最新一个比较全面的斗鱼运维架构分享是在 GITC 2016 北京站的运维专场,以下架构分享文档。 用户在斗鱼看直播时,斗鱼在看什么
从用户电脑浏览器访问一个网站的过程(还有结合一些公开资料)分析斗鱼网站使用的相关运维技术信息和架构方案。
客户端层 1. 浏览器包含 Cookie、浏览器缓存协商(Last-Modified、Expires、Etag)、组件分离、前端优化、运维检测工具等内容。
上述可以通过浏览器开发者工具进行具体查看。
2. DNS 域名包含浏览器 DNS 缓存、DNS 缓存、自建 DNS 服务器、商业 DNS 产品、智能 DNS 等内容
用户使用浏览器访问一个网站,是输入网站域名进行访问的。
下面我们来看看斗鱼网站的相关域名信息,它的主域名是 douyu.com。
我们使用阿里的 whois 查询服务来查下, 具体信息去以下链接查看 https://whois.aliyun.com/whois/domain/douyu.com
从上面查询到的信息我们可以看到 douyu.com 域名注册商是 GoDaddy。 然后还有一个重要的信息,配置的权威 DNS 服务器为:
DNS1:NS3.DNSV4.COM
DNS2:NS4.DNSV4.COM
配置的权威 DNS 服务器是自建还是使用的第三方 DNS 服务?
我们同样可以使用 whois 查询服务查询一下 dnsv4.com 域名的相关信息,如下: https://whois.aliyun.com/whois/domain/dnsv4.com
从里面的信息,我们可以看到,dnsv4.com 的域名是属于中国最大的第三方域名服务商 DNSPod。
扩展:如果作为第三方并不有域名的管理权限,我想知道斗鱼网站的子域名有哪些?如何获取? 之前我写过一篇文章子域名查找,使用 wydomain 可以查找到。
3. App 客户端包含 HTTP-DNS、打点日志、加密传输、移动推送、各类 SDK(监控 SDK、推流 SDK)等内容
扩展:网站排名参考 Alexa douyu.com 排名信息,国内排名前 50(写此篇文章时)。
外部层 1. 第三方 CDN包含 GSLB、反向代理缓存、分布式存储、流量调度、配置管理、用户端(各类 API 如:带宽监控、预缓存、缓存刷新)等内容。
斗鱼使用 CDN 提供商有哪些?这个在之前,我有写一篇文章分析了。斗鱼使用的 CDN 服务商分析
“主线路”, cdn: “ws” 网宿
“备用线路2”, cdn: “ws2” 网宿线路 2
“备用线路3”, cdn: “dl” 帝联?
“备用线路5”, cdn: “tct” 腾讯云
2. 云计算包含公有云服务、混合云、运维外包服务、APM(应用性能管理)、第三方安全解决方案(防 DDOS、WAF) 等相关内容。
斗鱼在云计算方面暂未查到相关公开资料。
网络层 1. 互联层包含多机房互联(VPN、专线)、异地灾备–>异地多活–>按 SET 部署等内容。
2. 核心层包含防火墙、路由器、IPSec VPN、链路负载均衡和高可用 (CCNP 级别)等内容。
3. 汇聚层包含三层交换、动态路由(OSPF)、静态路由、EC(端口汇聚)、MSTP+VRRP (CCNP级别)等内容。
4. 接入层包含二层交换 (VTP、SPF、Trunk、端口安全)(CCNA 级别)等内容。
网络层这块一般有专门的网络工程师负责,Linux 运维工程师一般不太涉及深入这方面。
斗鱼在网络层方面暂未查到相关公开资料。
接入层 1. 负载均衡高可用 四层负载均衡包含开源:LVS(IP 负载均衡)+ Keepalived、HAProxy 商业:F5、Netscaler 等内容。
七层负载均衡包含反向代理:HAProxy、Nginx、Apache(根据 HTTP 协议支持的属性进行 L7 分发)、A/B Test Gateway、WAF 等内容。
2. 反向代理缓存包含 ATS、Squid、Varnish、Nginx(缓存分级、预缓存、缓存刷新)等内容。
斗鱼在接入层方面使用了 CDN、LVS、Nginx、Tomcat、PHP-FPM。
应用服务层 1. Web 服务层包含 HTTP 协议、Web服务器(Apache、Nginx/OpenResty、Tomcat、Resin、Jboss)安全设置、性能优化等内容。
HTTP 协议方面
斗鱼为了保证直播用户的数据安全和隐私安全,全站由 HTTP 协议升级到了 HTTPS。
(这个信息是从我比较关注一个微信公众号:MacTalk 看到的)
包含运行环境(PHP Python Java C C++)、性能优化、缓存(OPCache、LocalCache)、Session 存储、代码部署等内容。
3. 业务层 3.1 业务实现包含 API 网关、302 调度、业务模块化(电商网站例子:用户、商品、购物车、结算中心、价格等服务)、微服务等内容。
3.2 SOA 层包含 SOA 框架(Java Dubbo)、协议(RPC、RESTful)、服务注册、服务发现、框架安全等内容。
斗鱼直播平台后端 RPC 架构浅析
4. 分布式层 消息队列包含 ActiveMQ(成熟)、RabbitMQ(成熟、案例多)、RocketMQ(业务应用)、Kafka(日志传输)、ZeroMQ(快)等内容。
基础服务层 1. 业务决策包含灰度发布、服务降级、异地灾备、数据分析平台、智能扩容决策树(需要各层支持)等内容。
2. 运维相关包含项目管理(Redmine、Jira、知识库、Bugzilla、CodeReview)、工单系统、运维操作平台、监控平台等内容。
3. 应用相关包含持续集成、日志收集平台(ELKStack)、自动化部署平台、Job 管理(调度)平台、安全扫描平台等内容。
ELK 相关