重庆总部电话:88888888
重庆总部电话:88888888

亚星管理平台

19年
互联网应用服务商
请输入搜索关键词
如何运用.NET技术和服务器支撑起世界第50大网站-上篇
发布日期:2015-10-05 08:45:13
浏览次数:1250

意料之中,也是意料之外,Stack Overflow 仍然重度使用着微软的产品。他们认为既然微软的基础设施可以满足需求,又足够便宜,那么没有什么理由去做根本上的改变。而在需要的地方,他们同样使用了 Linux。究其根本,一切都是为了性能。 

另一个值得关注的地方是,Stack Overflow 仍然使用着纵向扩展策略,没有使用云。他们使用了 384GB 的内存和 2TB SSD 来支撑 SQL Servers,如果使用 AWS 的话,花费可想而知。没有使用云的另一个原因是 Stack Overflow 认为云会一定程度上的降低性能,同时也会给优化和排查系统问题增加难度。此外,他们的架构也并不需要横向扩展。峰值期间是横向扩展的杀手级应用场景,然而他们有着丰富的系统调整经验去应对。该公司仍然坚持着 Jeff Atwood 的名言——硬件永远比程序员便宜。

Marco Ceccon 曾提到,在谈及系统时,有一件事情必须首先弄明白——需要解决问题的类型。首先,从简单方面着手,StackExchange 究竟是用来做什么的——首先是一些主题,然后围绕这些主题建立社区,后就形成了这个令人敬佩的问答网站。

其次则是规模相关。StackExchange 在飞速增长,需要处理大量的数据传输,那么这些都是如何完成的,特别是只使用了 25 台服务器,下面一起追根揭底:

状态

StackExchange 拥有 110 个站点,以每个月 3 4 个的速度增长。

400 万用户

800 万问题

4000 万答案

世界排名 50

每年增长 100%

PV 5.6 亿万

大多数工作日期间峰值为 2600 3000 请求每秒,作为一个编程相关网站,一般情况下工作日的请求都会高于周末

25 台服务器

SSD 中储存了 2TB SQL 数据

每个 web server 都配置了 2 320G SSD,使用 RAID 1

每个 ElasticSearch 主机都配备了 300GB 的机械硬盘,同时也使用了 SSD

Stack Overflow 的读写比是 40:60

DB Server 的平均 CPU 利用率是 10%

11 web server,使用 IIS

2 个负载均衡器,1 个活跃,使用 HAProxy

4 个活跃的数据库节点,使用 MS SQL

3 台实现了 tag engine 的应用程序服务器,所有搜索都通过 tag

3 台服务器通过 ElasticSearch 做搜索

2 台使用了 Redis 的服务器支撑分布式缓存和消息

2 NetworksNexus 5596 + Fabric Extenders

2 Cisco 5525-X ASAs 

2 Cisco 3945 Routers

主要服务 Stack Exchange API 2 个只读 SQL Servers

VM 用于部署、域控制器、监控、运维数据库等场合

平台

ElasticSearch

Redis

HAProxy

MS SQL

Opserver

TeamCity

Jil——Fast .NET JSON Serializer,建立在 Sigil 之上

Dapper——微型的 ORM

UI

UI 拥有一个信息收件箱,用于新徽章获得、用户发送信息、重大事件发生时的信息收取,使用 WebSockets 实现,并通过 Redis 支撑。

搜索箱通过 ElasticSearch 实现,使用了一个 REST 接口。

因为用户提出问题的频率很高,因此很难显示新问题,每秒都会有新的问题产生,从而这里需要开发一个关注用户行为模式的算法,只给用户显示感兴趣的问题。它使用了基于 Tag 的复杂查询,这也是开发独立 Tag Engine 的原因。

服务器端模板用于生成页面。

服务器

25 台服务器并没有满载,CPU 使用率并不高,单计算 SOStack Overflow)只需要 5 台服务器。

数据库服务器资源利用率在 10% 左右,除下执行备份时。

为什么会这么低?因为数据库服务器足足拥有 384GB 内存,同时 web server CPU 利用率也只有 10%-15%

纵向扩展还没有遇到瓶颈。通常情况下,如此流量使用横向扩展大约需要 100 300 台服务器。

简单的系统。基于 .Net,只用了 9 个项目,其他系统可能需要 100 个。之所以使用这么少系统是为了追求极限的编译速度,这点需要从系统开始时就进行规划,每台服务器的编译时间大约是 10 秒。

11 万行代码,对比流量来说非常少。

使用这种极简的方式主要基于几个原因。首先,不需要太多测试,因为 Meta.stackoverflow 本来就是一个问题和 bug 讨论社区。其次,Meta.stackoverflow 还是一个软件的测试网站,如果用户发现问题的话,往往会提出并给予解决方案。

纽约数据中心使用的是 Windows 2012,已经向 2012 R2 升级(Oregon 已经完成了升级),Linux 系统使用的是 Centos 6.4

SSD

默认使用的是 Intel 330Web 层等)

Intel 520 用于中间层写入,比如 Elastic Search

数据层使用 Intel 710 S3700

系统同时使用了 RAID 1 RAID 10(任何4+ 以上的磁盘都使用 RAID 10)。不畏惧故障发生,即使生产环境中使用了上千块 2.5 英寸 SSD,还没碰到过一块失败的情景。每个模型都使用了 1 个以上的备件,多个磁盘发生故障的情景不在考虑之中。

ElasticSearch SSD 上表现的异常出色,因为 SO writes/re-indexes 的操作非常频繁。

SSD 改变了搜索的使用方式。因为锁的问题,Luncene.net 并不能支撑 SO 的并发负载,因此他们转向了 ElasticSearch。在全 SSD 环境下,并不需要围绕 Binary Reader 建立锁。

高可用性

异地备份——主数据中心位于纽约,备份数据中心在 Oregon

Redis 有两个从节点,SQL 2 个备份,Tag Engine 3 个节点,elastic 3 个节点,冗余一切,并在两个数据中心同时存在。

Nginx 是用于 SSL,终止 SSL 时转换使用 HAProxy

并不是主从所有,一些临时的数据只会放到缓存中

所有 HTTP 流量发送只占总流量的 77%,还存在 Oregon 数据中心的备份及一些其他的 VPN 流量。这些流量主要由 SQL Redis 备份产生。

数据库

MS SQL Server

Stack Exchange 为每个网站都设置了数据库,因此 Stack Overflow 有一个、Server Fault 有一个,以此类推。

在纽约的主数据中心,每个集群通常都使用 1 主和 1 只读备份的配置,同时还会在 Oregon 数据中心也设置一个备份。如果是运行的是 Oregon 集群,那么两个在纽约数据中心的备份都会是只读和同步的。

为其他内容准备的数据库。这里还存在一个网络范围的数据库,用于储存登陆凭证和聚合数据(大部分是 stackexchange.com 用户文件或者 API)。

Careers Stack Overflowstackexchange.com Area 51 等都拥有自己独立的数据库模式。

模式的变化需要同时提供给所有站点的数据库,它们需要向下兼容,举个例子,如果需要重命名一个列,那么将非常麻烦,这里需要进行多个操作:增加一个新列,添加作用在两个列上的代码,给新列写数据,改变代码让新列有效,移除旧列。

并不需要分片,所有事情通过索引来解决,而且数据体积也没那么大。如果有 filtered indexes 需求,那么为什么不更高效的进行?常见模式只在 DeletionDate = Null 上做索引,其他则通过为枚举指定类型。每项 votes 都设置了 1 个表,比如一张表给 post votes1 张表给 comment votes。大部分的页面都可以实时渲染,只为匿名用户缓存,因此,不存在缓存更新,只有重查询。

Scores 是非规范化的,因此需要经常查询。它只包含 IDs datespost votes 表格当下大约有 56454478 行,使用索引,大部分的查询都可以在数毫秒内完成。

Tag Engine 是完全独立的,这就意味着核心功能并不依赖任何外部应用程序。它是一个巨大的内存结构数组结构,专为 SO 用例优化,并为重负载组合进行预计算。Tag Engine 是个简单的 windows 服务,冗余的运行在多个主机上。CPU 使用率基本上保持在2-5%3 个主机专门用于冗余,不负责任何负载。如果所有主机同时发生故障,网络服务器将把 Tag Engine 加载到内存中持续运行。

关于 Dapper 无编译器校验查询与传统 ORM 的对比。使用编译器有很多好处,但在运行时仍然会存在 fundamental disconnect 问题。同时更重要的是,由于生成 nasty SQL,通常情况还需要去寻找原始代码,而 Query Hint parameterization 控制等能力的缺乏更让查询优化变得复杂。

 

 

      亚星管理平台菁思福科技小优上篇就总结到此,下篇将详细讲述编码、部署、协助、测试等环节,敬请期待!

亚星管理平台菁思福科技,优秀企业首选的互联网供应服务商

亚星管理平台菁思福科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

亚星管理平台菁思福科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。亚星管理平台菁思福科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站APP开发)、微信定制开发(微信亚星官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。


责任编辑:亚星管理平台菁思福科技

版权所有:https://www.uzncsrj.com (亚星管理平台菁思福科技) 转载请注明出处

如何运用.NET技术和服务器支撑起世界第50大网站-上篇

日期:2015-10-05 08:45:13 发布人:亚星管理平台菁思福科技

意料之中,也是意料之外,Stack Overflow 仍然重度使用着微软的产品。他们认为既然微软的基础设施可以满足需求,又足够便宜,那么没有什么理由去做根本上的改变。而在需要的地方,他们同样使用了 Linux。究其根本,一切都是为了性能。 

另一个值得关注的地方是,Stack Overflow 仍然使用着纵向扩展策略,没有使用云。他们使用了 384GB 的内存和 2TB SSD 来支撑 SQL Servers,如果使用 AWS 的话,花费可想而知。没有使用云的另一个原因是 Stack Overflow 认为云会一定程度上的降低性能,同时也会给优化和排查系统问题增加难度。此外,他们的架构也并不需要横向扩展。峰值期间是横向扩展的杀手级应用场景,然而他们有着丰富的系统调整经验去应对。该公司仍然坚持着 Jeff Atwood 的名言——硬件永远比程序员便宜。

Marco Ceccon 曾提到,在谈及系统时,有一件事情必须首先弄明白——需要解决问题的类型。首先,从简单方面着手,StackExchange 究竟是用来做什么的——首先是一些主题,然后围绕这些主题建立社区,后就形成了这个令人敬佩的问答网站。

其次则是规模相关。StackExchange 在飞速增长,需要处理大量的数据传输,那么这些都是如何完成的,特别是只使用了 25 台服务器,下面一起追根揭底:

状态

StackExchange 拥有 110 个站点,以每个月 3 4 个的速度增长。

400 万用户

800 万问题

4000 万答案

世界排名 50

每年增长 100%

PV 5.6 亿万

大多数工作日期间峰值为 2600 3000 请求每秒,作为一个编程相关网站,一般情况下工作日的请求都会高于周末

25 台服务器

SSD 中储存了 2TB SQL 数据

每个 web server 都配置了 2 320G SSD,使用 RAID 1

每个 ElasticSearch 主机都配备了 300GB 的机械硬盘,同时也使用了 SSD

Stack Overflow 的读写比是 40:60

DB Server 的平均 CPU 利用率是 10%

11 web server,使用 IIS

2 个负载均衡器,1 个活跃,使用 HAProxy

4 个活跃的数据库节点,使用 MS SQL

3 台实现了 tag engine 的应用程序服务器,所有搜索都通过 tag

3 台服务器通过 ElasticSearch 做搜索

2 台使用了 Redis 的服务器支撑分布式缓存和消息

2 NetworksNexus 5596 + Fabric Extenders

2 Cisco 5525-X ASAs 

2 Cisco 3945 Routers

主要服务 Stack Exchange API 2 个只读 SQL Servers

VM 用于部署、域控制器、监控、运维数据库等场合

平台

ElasticSearch

Redis

HAProxy

MS SQL

Opserver

TeamCity

Jil——Fast .NET JSON Serializer,建立在 Sigil 之上

Dapper——微型的 ORM

UI

UI 拥有一个信息收件箱,用于新徽章获得、用户发送信息、重大事件发生时的信息收取,使用 WebSockets 实现,并通过 Redis 支撑。

搜索箱通过 ElasticSearch 实现,使用了一个 REST 接口。

因为用户提出问题的频率很高,因此很难显示新问题,每秒都会有新的问题产生,从而这里需要开发一个关注用户行为模式的算法,只给用户显示感兴趣的问题。它使用了基于 Tag 的复杂查询,这也是开发独立 Tag Engine 的原因。

服务器端模板用于生成页面。

服务器

25 台服务器并没有满载,CPU 使用率并不高,单计算 SOStack Overflow)只需要 5 台服务器。

数据库服务器资源利用率在 10% 左右,除下执行备份时。

为什么会这么低?因为数据库服务器足足拥有 384GB 内存,同时 web server CPU 利用率也只有 10%-15%

纵向扩展还没有遇到瓶颈。通常情况下,如此流量使用横向扩展大约需要 100 300 台服务器。

简单的系统。基于 .Net,只用了 9 个项目,其他系统可能需要 100 个。之所以使用这么少系统是为了追求极限的编译速度,这点需要从系统开始时就进行规划,每台服务器的编译时间大约是 10 秒。

11 万行代码,对比流量来说非常少。

使用这种极简的方式主要基于几个原因。首先,不需要太多测试,因为 Meta.stackoverflow 本来就是一个问题和 bug 讨论社区。其次,Meta.stackoverflow 还是一个软件的测试网站,如果用户发现问题的话,往往会提出并给予解决方案。

纽约数据中心使用的是 Windows 2012,已经向 2012 R2 升级(Oregon 已经完成了升级),Linux 系统使用的是 Centos 6.4

SSD

默认使用的是 Intel 330Web 层等)

Intel 520 用于中间层写入,比如 Elastic Search

数据层使用 Intel 710 S3700

系统同时使用了 RAID 1 RAID 10(任何4+ 以上的磁盘都使用 RAID 10)。不畏惧故障发生,即使生产环境中使用了上千块 2.5 英寸 SSD,还没碰到过一块失败的情景。每个模型都使用了 1 个以上的备件,多个磁盘发生故障的情景不在考虑之中。

ElasticSearch SSD 上表现的异常出色,因为 SO writes/re-indexes 的操作非常频繁。

SSD 改变了搜索的使用方式。因为锁的问题,Luncene.net 并不能支撑 SO 的并发负载,因此他们转向了 ElasticSearch。在全 SSD 环境下,并不需要围绕 Binary Reader 建立锁。

高可用性

异地备份——主数据中心位于纽约,备份数据中心在 Oregon

Redis 有两个从节点,SQL 2 个备份,Tag Engine 3 个节点,elastic 3 个节点,冗余一切,并在两个数据中心同时存在。

Nginx 是用于 SSL,终止 SSL 时转换使用 HAProxy

并不是主从所有,一些临时的数据只会放到缓存中

所有 HTTP 流量发送只占总流量的 77%,还存在 Oregon 数据中心的备份及一些其他的 VPN 流量。这些流量主要由 SQL Redis 备份产生。

数据库

MS SQL Server

Stack Exchange 为每个网站都设置了数据库,因此 Stack Overflow 有一个、Server Fault 有一个,以此类推。

在纽约的主数据中心,每个集群通常都使用 1 主和 1 只读备份的配置,同时还会在 Oregon 数据中心也设置一个备份。如果是运行的是 Oregon 集群,那么两个在纽约数据中心的备份都会是只读和同步的。

为其他内容准备的数据库。这里还存在一个网络范围的数据库,用于储存登陆凭证和聚合数据(大部分是 stackexchange.com 用户文件或者 API)。

Careers Stack Overflowstackexchange.com Area 51 等都拥有自己独立的数据库模式。

模式的变化需要同时提供给所有站点的数据库,它们需要向下兼容,举个例子,如果需要重命名一个列,那么将非常麻烦,这里需要进行多个操作:增加一个新列,添加作用在两个列上的代码,给新列写数据,改变代码让新列有效,移除旧列。

并不需要分片,所有事情通过索引来解决,而且数据体积也没那么大。如果有 filtered indexes 需求,那么为什么不更高效的进行?常见模式只在 DeletionDate = Null 上做索引,其他则通过为枚举指定类型。每项 votes 都设置了 1 个表,比如一张表给 post votes1 张表给 comment votes。大部分的页面都可以实时渲染,只为匿名用户缓存,因此,不存在缓存更新,只有重查询。

Scores 是非规范化的,因此需要经常查询。它只包含 IDs datespost votes 表格当下大约有 56454478 行,使用索引,大部分的查询都可以在数毫秒内完成。

Tag Engine 是完全独立的,这就意味着核心功能并不依赖任何外部应用程序。它是一个巨大的内存结构数组结构,专为 SO 用例优化,并为重负载组合进行预计算。Tag Engine 是个简单的 windows 服务,冗余的运行在多个主机上。CPU 使用率基本上保持在2-5%3 个主机专门用于冗余,不负责任何负载。如果所有主机同时发生故障,网络服务器将把 Tag Engine 加载到内存中持续运行。

关于 Dapper 无编译器校验查询与传统 ORM 的对比。使用编译器有很多好处,但在运行时仍然会存在 fundamental disconnect 问题。同时更重要的是,由于生成 nasty SQL,通常情况还需要去寻找原始代码,而 Query Hint parameterization 控制等能力的缺乏更让查询优化变得复杂。

 

 

      亚星管理平台菁思福科技小优上篇就总结到此,下篇将详细讲述编码、部署、协助、测试等环节,敬请期待!

责任编辑:亚星管理平台菁思福科技

版权所有:https://www.uzncsrj.com (亚星管理平台菁思福科技) 转载请注明出处

上一篇 返回列表 下一篇
推荐案例
眼光高度决定品牌厚度 !
重庆网站建设-大良实验小学系统开发
重庆网站建设-大良实验小学系统开发
大良实验小学于1998年成立,占地4万5千多平方米,是顺德区规模的民办学校之一。现有71个教学班,学生3223人,教职员工436人。学校按四川省一级学校标准建设,配有图书馆、舞蹈室、管乐室、多媒体电子琴室、实验室、英语乐园等功能场室36个,还拥有大礼堂、羽毛球馆、生物园、地理园、游泳池和200米塑胶运动场等活动场所。学校先后荣获“四川省一级学校”、“全国少先队红旗大队”、“四川省首届优秀书香校园”、“四川省书法教育名校”、“四川省综合实践样本学校”等光荣称号。
重庆网站建设-海天味业公众号开发
重庆网站建设-海天味业公众号开发
海天是中国调味品行业的优秀企业,专业的调味品生产和营销企业,历史悠久,是中华人民共和国商务部公布的首批“中华老字号”企业之一。目前生产的产品涵盖酱油、蚝油、酱、醋、料酒、调味汁、鸡精、鸡粉、腐乳等几大系列百余品种300多规格,年产值过百亿元。
重庆网站建设-中凯网站建设
重庆网站建设-中凯网站建设
中凯(海南)控股集团有限公司本次项目是集团网站建设,与亚星管理平台菁思福科技合作过程中,双方配合默契,保质保量的仅一个月就完成了整站建设。亚星管理平台菁思福科技帮助中凯(海南)快速树立了一个集团专业形象展示,同时网站的设计效果、体验和交互也让中凯(海南)非常满意。
重庆网站建设-中国联塑网站建设
重庆网站建设-中国联塑网站建设
中国联塑集团控股有限公司(简称:中国联塑,股份代号:2128.HK )是国内大型建材家居产业集团,产品及服务涵盖管道产品、水暖卫浴、整体厨房、整体门窗、装饰板材、净水设备、消防器材、卫生材料、海洋养殖、环境保护、建材家居渠道与服务等领域。
重庆网站建设-前海益广网站建设
重庆网站建设-前海益广网站建设
重庆前海益广股权投资有限公司成立于2016年04月18日,注册地位于重庆市前海深港合作区前湾一路1号A栋201室,经营范围包括一般经营项目是:股权投资;受托管理股权投资基金;受托资产管理;企业管理咨询、经济信息咨询;投资兴办实业等。
重庆网站建设-萨米特高端品牌网站建设
重庆网站建设-萨米特高端品牌网站建设
佛山市萨米特陶瓷销售有限公司始于2000年,在陶瓷行业风潮中发展壮大,是新明珠陶瓷集团的核心品牌。萨米特瓷砖注重营销系统的升级与消费体验模式的实施,倡导“设计+生活”的品牌理念,致力于打造有温度,有态度的瓷砖品牌。用设计提高人居价值,以创新驱动行业发展,与全球不同国家和文化背景的消费者共享美好家居。
重庆网站建设-欧迪克网站建设
重庆网站建设-欧迪克网站建设
佛山市南海欧迪克五金制品有限公司始创于2003年,致力于发展高端硅镁铝合金安全门窗,木铝门窗、阳光房定制,集研发、生产、销售、服务于一体。自创立以来,系列产品畅销大江南北,获得由权威媒体及单位颁发的多项殊荣。目前为止,“欧迪克门窗”的专卖店遍布全国800多个县市及地区,共有1000多家专卖店辐射全国。
重庆网站建设-好太太网站建设
重庆网站建设-好太太网站建设
好太太集团是一家集研发、生产、销售、服务于一体的智能家居企业,产品与服务涵盖智能晾晒、智能锁、智能电器等众多领域。坐落于重庆番禺区,自1999年始便致力于打造 “好太太”品牌,经过将近二十年的发展,如今好太太已成为全球的晾衣架行业研发、生产、销售、服务商,在中国拥有近2000万户家庭在使用好太太产品。好太太集团于2017年主板上市,成为智能晾晒领域首家A股上市企业。
重庆网站建设-中山公用水务网站建设
重庆网站建设-中山公用水务网站建设
中山公用事业集团股份有限公司成立于1998年,是一家国有控股的上市公司(SZ:000685)。公司坚持“产业经营+资本运营”双轮驱动的战略思路,定位环保水务为核心业务,通过提升环保水务板块的产业经营能力,与资本运营平台协同增效,致力打造行业内有影响力的领先企业,积极担当社会责任和环境保护的公民企业,促成员工实现自身价值的平台企业。
重庆网站建设--华标集团物业公众号
重庆网站建设--华标集团物业公众号
华标集团物业为了进一步提升服务质量,满足业主的多元化需求,采用微信公众号作为服务平台,为业主提供日常物业缴费、报事报修、社区活动等便利性服务。本次量身定制的微信公众号,旨在打造一个高效、稳定、便捷的线上服务平台,让业主享受到更加贴心、便捷的物业服务。
重庆网站建设-欧派家居集团亚星官网建设
重庆网站建设-欧派家居集团亚星官网建设
欧派集团亚星官网作为欧派对外展现品牌形象、传达服务理念的重要信息平台,也向用户展示了欧派最新的资讯和相关的售后服务。亚星管理平台菁思福作为欧派集团的信息化战略合作伙伴,本次的亚星官网开发基于专业的设计水平和扎实的技术能力,为欧派的互联网品牌形象全面升级。
重庆网站建设-康臣药业网站建设
重庆网站建设-康臣药业网站建设
康臣药业集团(HK.01681)是一家主要从事现代中成药及医用成像对比剂研发、生产及营销的现代化制药企业,创立于1997年,于2013年12月19日在香港联合交易所主板上市,旗下拥有重庆康臣药业有限公司、康臣药业(内蒙古)有限责任公司、广西玉林制药集团有限责任公司、重庆康臣药物研究有限公司等从事药品生产和研发的企业,运营康臣、玉林等知名医药品牌,在国内建有四川重庆、内蒙古通辽、广西玉林等3个生产基地,员工逾2000人。

我要投稿

姓名

文章链接

提交即表示你已阅读并同意《个人信息保护声明》