负载均衡与服务器架构

浅析MMORPG服务器架构 浅析MMORPG服务器架构 2009-03-01           随着计算网络的发展,异军突起的网络游戏成为中国网络产业中的先锋。角色扮演游戏(MMORPG)一直是网络游戏中的主流类型,其主要原因在于它拥有丰富的交互体验,特别是玩家之间的互动、角色扮演的特性在MMORPG游戏中最能得到丰富的表现。 MMORPG本身的游戏设计方面的特性决定了MMORPG 服务器的设计和实现的难度大、对 阅读详情

2.5 WebServer、负载均衡、服务器架构

Nginx 与负载均衡

  • 反向代理

    1. 将用户请求转发给内部服务器,保护内网拓扑结构

                      / static file              /cache hit─>Redis/NoSQL
                     /                          /
                    /       /Gunicorn + Django-1─>cache miss─>MySQL/PgSQL
      client─>NginX─>HaProxy─Gunicorn + Django-2
                            \Gunicorn + Django-3
      
    2. 可以解析用户请求,代理静态文件

  • NginX负载均衡

    • 轮询:

      upstream backserver { 
        server 192.168.0.14; 
      	server 192.168.0.15; 
      } 
      
    
     
    
    - 权重: weight
    
     ```
     upstream backserver { 
     	server 192.168.0.14 weight=10; 
     	server 192.168.0.15 weight=10; 
     } 
     ```
    
     
    
    - IP哈希: ip_hash
    
     ```
     upstream backserver { 
     	ip_hash; 
     	server 192.168.0.14:88; 
     	server 192.168.0.15:80; 
     } 
     ```
    
    - fair
    
     ```
     upstream backserver { 
     	server server1; 
     	server server2; 
     	fair; 
     } 
     ```
    
    - url_hash
    
     ```
     upstream backserver { 
     	server squid1:3128; 
     	server squid2:3128; 
     	hash $request_uri; 
     	hash_method crc32; 
     } 
     ```
    
     
    
    - 最小连接数: least_conn
    
    
  • 其他负载均衡

    • F5: 硬件负载均衡设备, 性能最好, 价格昂贵(30-50一个,买一对)
    • LVS: 工作在 2层 到 4层 的专业负载均衡软件, 只有 3 种负载均衡方式, 配置简单,中国人(章文嵩)开发
      • 七层网络模型:ISO标准
      • 四层网络模型:TCP工业实现
  • HAProxy: 工作在 4层 到 7层 的专业负载均衡软件, 支持的负载均衡算法丰富

    • 性能比较: F5 > LVS > HAProxy > Nginx
  • LVS 的优势

    • 常规负载均衡

      进出都要经过负载均衡服务器. 响应报文较大, 面对大量请求时负载均衡节点本身可能会成为瓶颈

      发送请求: User -> LoadBalancer -> Server
      接收响应: User <- LoadBalancer <- Server
      
    • LVS DR 模式

      LoadBalancer 与 Server 同在一个网段, 共享同一个公网 IP, 响应报文可以由 Server 直达 User

      发送请求: User -> LoadBalancer -> Server
      接收响应: User <───────────────── Server
      
  • 可以不使用 Nginx, 直接用 gunicorn 吗?

    • 测试可以,正式不可以。
  • Nginx 相对于 Gunicorn 来说更安全

    • Nginx 可以用作负载均衡.
  • 处理静态文件相关配置

    location /statics/ {
        root   /project/bbs/;
        expires 30d;
        access_log off;
    }
    
    location /medias/ {
        root   /project/bbs/;
        expires 30d;
        access_log off;
    }
    
  • 面试题:

    • Nginx如何做负载均衡?
## 服务器架构
  1. 架构研究的 5 个方面

    • 高性能:请求再多,也能服务
    • 高可用:情况再糟,也能服务
    • 可伸缩:请求多了能服务,请求少了也能节省下来资源
    • 可扩展:能不断的加新的服务
    • 安全性:完成以上能力的前提是,不出安全问题
  2. 简单、实用的服务器架构图

    • 分层结构: 功能模块解耦合
    • 每层多台机器: 有效避免单点故障
    • 每层均可扩容: 能通过简单的方式提升服务器的性能、可用性、扛并发能力
                   User Request    cli_ip(12.23.34.45) -> ip_hash: 3
                 |    |    |    |
                 V    V    V    V
                 www.example.com                ---> 第一层云服务负载均衡
                 
               Nginx         Nginx							---> 云 
            115.2.3.11     115.2.3.12           
           /    |     \   /     |    \
          /     |       X       |     \
         V      V     V   V     V      V
    AppServer  AppServer  AppServer  AppServer  ---> Gunicorn + Django
    10.0.0.1   10.0.0.2   10.0.0.3   10.0.0.4   ---> AppServer 绑定内网 IP
    weight:10  weight:20  weight:20  weight:20  ---> 权重
        |         |          |           |
        V         V          V           V
    +------------------------------------------+
    |           缓存层   主机 <--> 从机          |
    +------------------------------------------+
        |         |          |           |
        V         V          V           V
    +------------------------------------------+
    |           数据库  主机 <--> 从机           |
    +------------------------------------------+
    

服务器架构的发展

  • 早期服务器, 所有服务在一台机器

    [外链图片转存失败(img-2uD2dXPo-1566997409769)(./img/arch-1.jpg)]

  • 服务拆分, 应用、数据、文件等服务分开部署

    [外链图片转存失败(img-R2UBBZjs-1566997409770)(./img/arch-2.jpg)]

  • 利用缓存提升性能

    [外链图片转存失败(img-EZMFQXpX-1566997409771)(./img/arch-3.jpg)]

  • 应用服务器分布式部署, 提升网站并发量和吞吐量

    [外链图片转存失败(img-qhqAimF1-1566997409772)(./img/arch-4.jpg)]

  • 通过读写分离读写分离提升数据库性能和数据可靠性

    [外链图片转存失败(img-T8RLwfz5-1566997409773)(./img/arch-5.jpg)]

  • 使用反向代理、CDN、云存储等技术提升静态资源访问速度, 并能有效提升不同地域的访问体验

    [外链图片转存失败(img-1i3S2DlV-1566997409774)(./img/arch-6.jpg)]

  • 通过分布式数据库和分布式文件系统满足数据和文件海量存储需求, 并进一步提升数据可靠性

    [外链图片转存失败(img-W3AoAxnY-1566997409775)(./img/arch-7.jpg)]

  • 增加搜索引擎 和 NoSQL

    [外链图片转存失败(img-dZ33MaZR-1566997409776)(./img/arch-8.jpg)]

  • 增加消息队列服务器, 让请求处理异步化

    [外链图片转存失败(img-edHfdWHX-1566997409777)(./img/arch-9.jpg)]

  • 拆分应用服务器与内部服务

    [外链图片转存失败(img-VINsSSK2-1566997409778)(./img/arch-10.jpg)]

  • 微服务
    • flask restful

服务器计算

  • 费米预测

  • 服务器性能预估

    1. 首先需知道网站日活跃 (DAU) 数据

    2. 按每个活跃用户产生 100 个请求计算出 “每日总请求量”

      不同类型的网站请求量差异会很大, 可以自行调整一个用户产生的请求数

      每日总请求量 = DAU x 单个用户请求量
      
    3. 有了总请求量便可计算 “每日峰值流量”, 流量一般单位为 rps (requests per second)

      根据经验可知: 每天 80% 的请求会在 20% 的时间内到达

      由此可知:

                      每日总请求量 x 80%
      每日峰值流量 = ───────────────────────
                         86400 x 20%
      
    4. 一般带负载的 web 服务器吞吐量约为 300rps, 所以:

      WebServer 数量 = 每日峰值流量 / 300
      
    5. 得到 WebServer 数量以后, 再根据用户规模和请求量估算 Nginx、Cache、Database 等服务器的数量

  • 真实工作中服务器分配情况

    • 业务类型:
      1. 新闻网站:单用户产生请求:30 - 50
      2. 游戏网站:单用户请求可能:100 - 200
      3. 社区网站:单用户请求可能:50 - 100
      4. 平均可以取 100
    • 每日总请求 = DAU * 单用户每日请求
      1. DAU 20万:200000 * 100 = 20,000,000 两千万
      2. DAU 50万:5000 万
      3. DAU 100万:1亿
      4. DAU 200万:2亿
    • 峰值请求:
      1. 按经验所有请求在10小时内发生
        1. 峰值请求 = 每日总请求 / 10 / 3600
          1. 20万:20000000 / (10 * 3600) = 556
          2. 100万:556 * 5
          3. 200万:
      2. 按80%的请求在20%的时间内发生
        1. 峰值请求 = 每日总请求 * 80% / (24 * 20%)
          1. 20万DAU:926次/秒
    • 服务器预估
      1. 单 Web 服务器并发 500 rps
        1. 20万:峰值请求 / 500 = 2台
        2. 100万:556 * 5 / 500 = 6台
    • 相册服务
      1. 业务限制用户照片,或者等用户上传后自动帮用户压缩
        1. 5M = 500kB
      2. 预估每个用户多少张照片:
        1. 500张
        2. 2000张
      3. 每张照片多大 2-9
        1. 平均5M
      4. 一个用户总空间多少?
        1. 500 * 5MB = 2500MB = 2.5GB
        2. 2000 * 5MB = 10GB
      5. 每个服务器存多少张照片
        1. 10TB = 1000GB = 1000个用户
        2. 20万 200台服务器
      6. 用户20万
      7. 用户100万
      8. 用户200万
  • 面试题:

    • 你们有多少用户?
    • 多少日活?
    • 多少服务器?
    • 服务器并发有多高?
服务器架构演变 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。... 阅读详情

相关推荐

实现高可用负载均衡双主模式的服务器架构

Keepalived用于监控服务器的健康状态,并在主服务器发生故障时自动切换到备份服务器,从而实现高可用性。主服务器和备份服务器将共享虚拟IP地址,并通过Keepalived监控彼此的状态。如果主服务器发生故障,备份服务器将自动接管主服务器的角色,以确保服务的高可用性。在实际应用中,请根据自己的需求进行适当的修改和调整。与主服务器的配置类似,备份服务器的优先级(priority)设置为较低的值,以确保主服务器故障时能够接管主服务器的角色。在主服务器和备份服务器上,都需要配置LVS以实现负载均衡。

TechABC的博客 74

一致性Hash算法

一、Redis集群的使用 我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形式,或者搭建Redis集群,进行数据的读写分离,类似于数据库的主从复制和读写分离。如下所示: 同样类似于数据库,当单表数据大于500W的时候需要对其进行分库分表,当数据量很大的时候(标准可能不...

wang123459的博客 333

docker-cluster-hello-balancer:如何使用负载均衡器 (HAProxy) 启动 Web 应用程序集群 (NodeJS) 的简单示例

Docker 集群 Hello with Balancer 启动集群 docker-compose scale web=2

服务器负载均衡及分类

一:什么是负载均衡 所谓负载均衡,是指当服务器请求或系统任务很多时,后端搭建有多台服务器或多个集群来处理该任务,然后由一个系统总体负责这些请求或任务的分发,这个任务分配和转发的过程就叫负载均衡; 注意:负载均衡不是绝对平均; 负载均衡器所提供的负载均衡功能,其最终目的是根据系统运行时的实际情况,决定哪台服务器、哪个集群、哪个服务或者哪个数据中心更适合处理当前请求,而不是追求各服务器之间的负载绝对平均,是一个协调; 二:负载均衡的类型 从负载均衡的模型角度来说,可以分为全局的负载均衡和服务器集群内部

weixin_43133686的博客 763

python负载均衡的简单实现方法

给大家介绍用python实现最简单的负载均衡方法,即将请求发送到未宕机的服务器上,感兴趣的朋友一起看看吧

Nangate 45nm FreePDK开源工艺库:从RTL到GDSII全流程实战

在数字IC设计中,标准单元库是连接逻辑综合与物理实现的基石,它定义了每个单元的逻辑功能、时序延迟与物理尺寸。开源EDA工具链的成熟,使得个人也能借助免费工艺套件完整跑通芯片设计流程。Nangate 45nm FreePDK作为一套经典的开源工艺库,凭借结构清晰、配套完善的特性,成为学习数字后端和时序收敛的理想训练场。从综合工具Yosys读取Liberty文件进行逻辑映射,到OpenROAD执行布局布线与时钟树综合,再到使用OpenSTA分析关键路径延迟,这套流程涵盖了数字设计最核心的环节。通过亲手操作,开发

weixin_29168393的博客 273

负载均衡配置下的不同服务器【Linux】文件同步问题

负载均衡配置下的不同服务器【Linux】文件同步问题2017年04月13日 22:04:28 守望dfdfdf 阅读数:2468 标签: linux负载均衡服务器 更多个人分类: 工作 问题编辑版权声明:本文为博主原创文章,转载请注明文章链接。 https://blog.youkuaiyun.com/xiaoanzi123/article/details/701626332017.3.24 问...

weixin_30830327的博客 526

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1026

Nginx负载均衡和根据访问路径反向代理不同服务器

修改nnginx.conf文件参数, 配置如下: http { #负载均衡的路径 upstream ilikeit.com { ip_hash; server 106.15.xx.xx:8080 weight=5; server 106.15.xx.xx:8099 weight=5; } server { listen 80; server_name localhost; l

D的博客 699

[记录一个bug]av_hwdevice_ctx_create出现Cannot allocate memory(附带库运行时路径)[已解决]

新写的程序里调用ffmpeg的av_hwdevice_ctx_create()这个函数,出现Cannot allocate memory。但是另个程序一样的代码,居然是成功的。 反复检查之后无果,就跳出去查了一下,看到一个问答: Have you tried to use ffmpg executables with the same libs that you using when you run the app? Have you tried to use ffmpg executables

熊猫Ben的博客 3586

开源浏览器插件开发实战:从零搭建多平台内容分发工具

浏览器扩展(Browser Extension)是运行在浏览器上层、通过标准Web技术增强浏览器能力的轻量级程序,其核心价值在于对页面内容的读取、操作与跨应用信息流转。在内容创作与分发场景中,创作者频繁需要在公众号、知乎、优快云、头条等平台间搬运同一篇文章,而传统SaaS分发工具往往受限于免费额度、授权托管和平台适配滞后等问题。基于Manifest V3规范,开发者可以构建一款100%开源、永久免费的浏览器插件,利用content script完成从源文章页提取标题、正文与图片,通过消息通信机制将结构化数

weixin_29882269的博客 295

负载均衡的原理和架构

1 为什么需要负载均衡? 从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决了,但不同的机器面临的业务压力不尽相同,为了使各机器均匀的分担业务处理压力,需要在集群前面增加负载均衡设备,实现业务被平均分发到各业务处理单元。 图1 负载均衡架构 2 负载均衡原理 系统的扩展可分为纵向(...

destiny的专栏 3110

【推荐100个unity插件之27】推荐5种办法实现unity人物布料系统 衣服裙子飘动 头发飘动 胸部抖动 骨骼模拟 配件摆动 尾巴摆动 —— 主要是Magica Cloth 2插件

要实现Unity中的人物布料系统并使其具备动态效果,可以探索多种技术方法。这些方法不仅可以使衣服、裙子、头发等元素自然飘动,还可以实现胸部抖动、骨骼模拟、配件摆动和尾巴摆动等细致效果。本文将深入探讨五种实现这些动态效果的技术方案,从基础的物理模拟到高级的动画控制,帮助你打造逼真的人物表现。本文主要探究Magica Cloth 2的使用,因为我想探究最好的实现方法,而不是探究最多的实现方法。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6301

常用服务器架构介绍-集群/负载均衡/分布式

服务器集群: 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。服务器负载均衡: 负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强...

校尉的博客 774

ardupilot开发 --- MavLink 篇

ardupilot开发 --- MavLink 篇

记录老板的每次pua,分享领导每天的毒鸡汤... 4251

储能电池管理系统介绍(一)

介绍储能BMS的架构以及各模块功能

manjixingkong1234的专栏 1916

全面介绍网站性能优化之数据库及服务器架构实现负载均衡等实用知识

<br />这篇关于网站性能优化主要从[负载均衡、服务器架构、数据库扩展」的角度,提出一些性能优化的建议,以供有建设中大型网站需求的网友们作为参考。<br />1、Web Server 与 DB Server 分离<br />小型网站或 B/S 项目,因同时在线人数不多,尚可让同一台物理主机,既做 Web Server,又做 DB Server。但此二者皆会占用大量的 CPU、内存、磁盘 I/O,最好让二者分别用不同的服务器主机来提供服务,以分散压力、提高负载承受能力。此外,二者若在同一网段,应尽量用内网

onetree2010的专栏 1365

基于STM32单片机智能循迹小车毕业设计

本文介绍了一种利用STM32F103C8T6单片机为控制核心,结合多种传感器以及PID算法实现循迹避障功能的智能小车。随着我国高科技水平的不断提高和工业自动化进程的不断推进,智能小车被广泛应用于各种玩具和其他产品的设计中,极大地丰富了人们的生活。本次设计利用反射式红外光电传感器探测路面黑线实现小车循迹,利用超声波测距传感器探测路径上的障碍,控制小车自动避障,整个系统具有自动循迹、自动避障、速度检测和无线遥控功能。其中,控制部分采用STM32F103C8T6单片机,STM32F103C8T6单片机是一

qq_48771816的博客 3974

服务器架构常见的三种模式

所谓分布式资源共享服务器就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型服务器形式。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络GIS中存在的数据异构、数据共享、运算复杂等问题,是地理信息系统技术的一大进步。服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。服务器架构之三:分布式服务器架构。

2301_78491061的博客 418

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

在服务器架构中,集群,负载均衡,分布式有什么区别吗

服务器集群: 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。 服务器负载均衡: 负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网...

天涯路的专栏 1411

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[转]在服务器架构中,集群,负载均衡,分布式有什么区别?

原文:https://zhidao.baidu.com/question/1639390193207715860.html服务器集群: 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。服务器负载均衡: 负载均衡 ...

degengtui4119的博客 310

Nginx09-负载均衡

早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求。随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器进行性能的水平扩展及避免单点故障出现。

李宥的博客 986

服务器架构常见的模式

所谓分布式资源共享服务器就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型服务器形式。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络GIS中存在的数据异构、数据共享、运算复杂等问题,是地理信息系统技术的一大进步。服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。服务器架构之三:分布式服务器架构。

athena1999的博客 184

Fireworks Tech Graph v1.0.5 技术解析:双 Agent 运行时 Skill、Dark Luxury 新风格与生成-校验-修复闭环

`v1.0.5` 是 Fireworks Tech Graph 从"绘图脚本集合"走向"工程化 Agent Skill"的关键里程碑:它让同一套 Skill 同时被 Codex 与 Claude Code 直接使用,新增第 8 种视觉风格 Dark Luxury,并引入了有界的"生成-校验-修复"质量闭环。本文以仓库内 [v1.0.5 发布说明](https://link.gitcode.com/

gitblog_01182的博客 706

PHP Web服务器架构方案:我的经验与见解

这样一来我们需要明确的是,一个成功的Web服务器架构不仅仅是选择一个合适的编程语言那么简单。在PHP的世界里,我们通常使用LAMP(Linux、Apache、MySQL、PHP)或LEMP(Linux、Nginx、MySQL、PHP)这样的组合来搭建基本的Web服务器架构。:在构建Web服务器架构时,安全性是我们必须考虑的重要因素。在实际应用中,我们需要根据具体的业务需求和场景来选择合适的技术和策略来搭建和优化我们的架构。随着业务的发展和数据量的增长,我们需要引入更多的技术和策略来优化我们的架构。

2401_85975385的博客 434

手游服务器架构

手游服务器架构 最近开始

缥缈的云 专栏 1万+
上一篇: 分布式部署2
下一篇: 机器学习
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值