V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DotKu
V2EX  ›  Amazon Web Services

日访问量 10 万的服务器结构应该怎么部署?

  •  
  •   DotKu ·
    dotku · 2016-07-20 01:39:13 +08:00 · 11195 次点击
    这是一个创建于 2830 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以下是我设想中的方案,求改善建议。

    1. 保留现在的服务器位置
     
    目前采用的是 West Oregon ,美国西部覆盖美国本土和中国,距离还是比较适中的。
     
    2. API 服务器 - AWS M3.Medium x 1
     
    用于数据读取操作和存储操作
     
    3. 计算服务器 - AWS M1.Small x 1
     
    用于每日的利率计算
     
    4. Web 服务器 - AWS M1.Small x 1, AWS M1.Micro x 1
     
    一台用于用户浏览量与操作,一台用于管理审核操作
     
    5. 数据库服务器 - RD t2.medium
     
    [!] 高风险: 目前数据库与应用使用同一台机子,非常容易出问题,应用服务器必须和数据库服务器分离。
    
    6. 文件服务器 - S3
     
    由于需要不少的图片存储, AWS S3 是比较好的选择方案。
    
    第 1 条附言  ·  2016-07-20 10:00:46 +08:00
    主要说需要处理计算,不仅仅只是访问量,还要涉及利率换算啥的(是一家信贷公司)
    51 条回复    2016-07-21 16:32:56 +08:00
    cevincheung
        1
    cevincheung  
       2016-07-20 01:49:24 +08:00   ❤️ 1
    其实说来说去无非还是那几招。

    CDN -> DNS Roll-Poling -> Nginx Proxy -> File & Dynamic Application -> Middleware -> Cache & Queue -> DB

    至于几台服务器什么配置那要具体项目具体分析了吧。反正一切以横向扩展看齐。
    gzelvis
        2
    gzelvis  
       2016-07-20 02:14:59 +08:00
    10w 不算高啊, 前后端分离,图片用七牛之类的 cdn 就好
    maxsec
        3
    maxsec  
       2016-07-20 02:22:45 +08:00 via iPad
    日访问十万?单机+图片服务器够了
    msg7086
        4
    msg7086  
       2016-07-20 04:27:26 +08:00
    不知道你说的访问量是什么概念。
    我这边请求量一天 2m 的用个 i3 就能顶了。
    notgod
        5
    notgod  
       2016-07-20 04:49:14 +08:00   ❤️ 1
    这个看站点类型 如果密集型的 有必要考虑扩容问题

    如果非密集计算型的这个级别 10 万 IP 100 万 PV
    你那个架构搞复杂了

    我日访问 25 万-30 万 IP 1000 万 PV 左右
    Linode 3 个 VPS 解决问题

    2 个 2G 内存 DB Master+Master 架构
    1 个 4G 跑网站 nginx php-fpm
    3 个 2G 反向代理
    达拉斯覆盖美国全境
    日本覆盖亚太区域 (因为中国流量基本没有 所以无所谓访问速度问题)
    德国覆盖欧洲全境
    3 个 2G 的反向代理 同时干了兼职 有 Redis 缓存集群 + Memcaced 集群
    万事大吉 毫无压力

    2x$10 + $20 + 3x$10 = $70/month 成本
    gzelvis
        6
    gzelvis  
       2016-07-20 05:18:31 +08:00
    @notgod 能加个好友吗?
    chaegumi
        7
    chaegumi  
       2016-07-20 05:59:53 +08:00
    @notgod
    hi ,你这种方向代理放多个国家的域名是怎么绑定的
    chaegumi
        8
    chaegumi  
       2016-07-20 06:01:17 +08:00
    @notgod

    hi ,你这种反向代理放多个国家的域名是怎么绑定的
    notgod
        9
    notgod  
       2016-07-20 07:00:04 +08:00   ❤️ 3
    @gzelvis 点我用户名 + 查看博客 qrcode 加我微信
    @chaegumi 没理解你说的是什么
    我这个类似于负载均衡的方案

    架构这样
    DNS 使用 Rage4 或 AWS 的 GEO 进行区域解析, 我现在主力是 AWS 了 网络很好

    主数据网站 使用 backed.test.com
    1.1.1.1 北美
    反向代理站 www.test.com 2.2.2.2 欧洲
    3.3.3.3 亚太

    其实提高架构的性能
    大部分问题瓶颈都在 mysql 上 这个需要极度优化好

    遵循的原则
    =================================================
    1. 查询 能合并就合并, 去降低 sql 连接数的
    2. 查询 能缓存的就缓存, 去降低 sql 请求,提高处理速度和命中率
    3. 压缩 能压缩的都压缩, 用 CPU 性能去降低传输速度
    4. 合并 能合并的资源 都合并 能降低 http 连接数 使用 nginx + ngx_pagespeed
    5. 能禁止的都禁止, maja 那类的什么 SEO 用途和各种爬虫 一天能爬你几百 G 数据
    chaegumi
        10
    chaegumi  
       2016-07-20 08:01:22 +08:00
    @notgod
    thanks
    我的意思是,我的程序现在在阿里云上,做外贸网站,整站静态化,静态图片 css 已经走 cdn 了, 但是还是需要用户填询盘表单的提交到后台程序,国外不同地区的访客肯定会有访问不了阿里云服务器的情况是吧,这个程序不想部署到多台服务器,反向代理我知道,就是想了解下你的域名 dns 如何做的,我去了解下你说的 GEO 进行区域解析。
    chaegumi
        11
    chaegumi  
       2016-07-20 08:03:40 +08:00
    我想要达到的效果就是全世界不同地区的访客都可以正常提交表单数据
    notgod
        12
    notgod  
       2016-07-20 08:18:45 +08:00
    @chaegumi
    你缺个 Cloudflare 外贸站的话 CF 可以解决 免费不要钱....
    jhaohai
        13
    jhaohai  
       2016-07-20 08:47:43 +08:00 via iPhone
    日访问才 10w ,单机能扛住的啊
    tony1016
        14
    tony1016  
       2016-07-20 09:18:47 +08:00   ❤️ 1
    10w ,按每天 8 小时算,每秒也就 3 , 4 笔业务…… tomcat 吧
    scys
        15
    scys  
       2016-07-20 09:29:25 +08:00
    10w ... 不要考虑负载问题,实现功能先
    huluhulu
        16
    huluhulu  
       2016-07-20 09:42:47 +08:00
    10w.....我都用 vultr 最便宜的那个 vps...足够
    Symars
        17
    Symars  
       2016-07-20 09:46:54 +08:00
    图片 cdn ,剩下的单机就能抗住
    llhh
        18
    llhh  
       2016-07-20 09:49:55 +08:00
    @notgod 大神没事儿可以加你微信吗?纯粹看看朋友圈……
    ericls
        19
    ericls  
       2016-07-20 09:52:59 +08:00 via iPhone
    每秒钟两个请求都不到 随便怎么都可以吧
    idblife
        20
    idblife  
       2016-07-20 09:59:05 +08:00
    首先,你要有 10w 访问量,等到你有的时候,自然就解决了。
    一搬业务, linode 最便宜 vps+cdn 就能搞定
    zhangfan
        21
    zhangfan  
       2016-07-20 10:01:50 +08:00
    @notgod 很好奇你这个是什么站
    9hills
        22
    9hills  
       2016-07-20 10:02:20 +08:00
    为什么所有的服务都是单点?最少双份互备吧
    AbrahamGreyson
        23
    AbrahamGreyson  
       2016-07-20 10:03:29 +08:00
    微服务架构哦,不错呦。
    21grams
        24
    21grams  
       2016-07-20 10:07:20 +08:00
    10W 用个笔记本都行吧。
    fredcc
        25
    fredcc  
       2016-07-20 10:11:53 +08:00
    既然都用 aws 平台了,为啥不按 aws 推荐架构做呢。 elb+多可用区 ec2+RDS ,全球区还可以用上 cloudfront 等
    st2udio
        26
    st2udio  
       2016-07-20 10:14:21 +08:00
    10W 没什么需要考虑的吧
    mytsing520
        27
    mytsing520  
       2016-07-20 10:16:54 +08:00
    @fredcc CloudFront 表示访问质量渣渣
    tinyproxy
        28
    tinyproxy  
       2016-07-20 10:50:41 +08:00 via iPhone
    @tony1016 虽说 10w 挺少,但你摊到 8 小时去有点不合适吧, 1111 流量摊到一年去也还好啊。。。
    fredcc
        29
    fredcc  
       2016-07-20 10:54:36 +08:00
    @mytsing520 目前我用下来感觉还不错啊,你是指国内访问速度么?
    tony1016
        30
    tony1016  
       2016-07-20 10:59:59 +08:00
    @tinyproxy 你这么说也对,那还是要提问者说说到底高峰期是个什么量
    jtacm
        31
    jtacm  
       2016-07-20 11:05:02 +08:00
    LZ 是说湾区中文网?
    snnn
        32
    snnn  
       2016-07-20 11:22:44 +08:00 via Android
    平均每秒 1 、 2 个请求?
    lairdnote
        33
    lairdnote  
       2016-07-20 11:22:50 +08:00
    数据库 用 aws 的 mysql , 感觉比单机好
    2225377fjs
        34
    2225377fjs  
       2016-07-20 11:37:00 +08:00
    只是看 10W 的 日访问量的话,真的是很少。利率计算这种也只能说是轻量级的运算而已。。。具体还的看业务吧,要是有各种数据库的慢查询啥的,还是要好好考虑一下怎么设计业务。。。如果大多都是一些小型的运算业务, Small 就够了。
    nine
        35
    nine  
       2016-07-20 11:40:12 +08:00   ❤️ 2
    青云 4 核 8G (高性能) + 1 核 2G postgresql (高性能) 跑 1000 万 /日,你参考下。 Rails 程序
    mytsing520
        36
    mytsing520  
       2016-07-20 11:55:58 +08:00
    @fredcc 国内的访问速度,你也知道现在 114 禁止解析 CloudFront
    chairuosen
        37
    chairuosen  
       2016-07-20 12:11:05 +08:00
    图片上七牛,不要自己存
    fredcc
        38
    fredcc  
       2016-07-20 12:22:34 +08:00
    @mytsing520 所以我说是全球区才考虑啊, cloudfront 服务在中国区也没有啊
    xhowhy
        39
    xhowhy  
       2016-07-20 13:20:51 +08:00
    国内哦?
    tinyproxy
        40
    tinyproxy  
       2016-07-20 13:36:28 +08:00 via iPhone
    @tony1016 我觉得访问量是用来衡量站点活跃度的,对于大多数开发人员来说,平均 QPS 跟 maxQPS 比较有参考意义
    realpg
        41
    realpg  
       2016-07-20 13:45:56 +08:00
    十万 IP ,这么点……
    静态资源云存储 cdn ,动态内容一个稍微正常点的节点就完成了。如果可用性要求高,就三五个负载均衡的小实例,从版本库 clone 可以动态删减

    @chaegumi
    外贸这种我都搞了几百个了

    对东南亚、美国加拿大澳洲主导:
    主服务器丢 linode 上,静态资源 cloudflare ,如果主站不会被 DDOS ,已经包治百病

    如果主要对欧洲,那么,全站 cloudflare 就行了

    程序开个 github 私有库联动部署,备份用云服务自己的,自己国内的人登管理后台顶天慢一点也不会很慢,自己人的完全可以接受
    robinshi2010
        42
    robinshi2010  
       2016-07-20 14:53:25 +08:00
    @notgod 求头像出处。
    weisdong
        43
    weisdong  
       2016-07-20 15:12:20 +08:00
    @notgod 同求
    yeshang
        44
    yeshang  
       2016-07-20 16:18:08 +08:00
    @DotKu
    @notgod 好奇你们什么站, 流量都这么大
    lightening
        45
    lightening  
       2016-07-20 16:33:24 +08:00
    数据库用 RDS ,其他一个服务器 + CDN + 图片用 S3 。
    以后需要时扩展就行了啊
    lincanbin
        46
    lincanbin  
       2016-07-20 16:35:38 +08:00
    10 万全平摊到白天,算起来一秒都没 3 个动态 requests ……
    不知道我算得对不对?
    notgod
        47
    notgod  
       2016-07-20 17:01:18 +08:00 via iPhone
    @llhh 我都不刷朋友圈了已经
    luojing
        48
    luojing  
       2016-07-20 17:16:38 +08:00 via Android
    10w 一台云主机就可以了
    llhh
        49
    llhh  
       2016-07-20 22:11:00 +08:00
    @notgod 那我论坛里默默关注了~看您博客好久了。
    hezhile
        50
    hezhile  
       2016-07-21 09:38:04 +08:00
    楼主你好,不知道你有没有研究过 aws 的 lamda 和 api gateway 。我感觉你的 api 服务器和计算服务器可能可以用它们来替换。 lamda 很便宜,而且扩展性很好。

    aws 自己推出了一个叫 chalice 的框架,“ The python serverless microframework for AWS allows you to quickly create and deploy applications that use Amazon API Gateway and AWS Lambda.”
    https://github.com/awslabs/chalice

    另外,这篇文章也可以参考:《谈谈 AWS Lambda 和 serverless architecture 》
    http://www.36dsj.com/archives/54630
    julyclyde
        51
    julyclyde  
       2016-07-21 16:32:56 +08:00
    10 万访问量 /86400 秒,平均一秒才一个请求,峰值就算加俩零也就才 100 个
    这根本不需要设计啊,随便怎么弄弄就够了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3562 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:00 · PVG 13:00 · LAX 22:00 · JFK 01:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.