加机器、切流量真的那么low吗

标签: 架构 切流量 加机器 可用性 容灾 | 发表时间:2015-04-07 15:20 | 作者:bluedavy
出处:http://hellojava.info

每当说到应对活动高峰流量的策略时,加机器这招总是会被认为很low,而同样,在另外一个场景中,当系统出现问题,通过切流量来快速恢复时,也会被认为很low,但这两个大招真的很low吗?

第一个点:加机器
首先说说加机器这回事,通常系统最早都是由一台应用机器再加一台或两台数据库机器组成,访问量高的情况下,自然最希望的就是靠加机器来解决。

简单分开看看,应用机器直接从一台变成两个,在技术上会有一些问题是要解掉的:
1. 应用的状态问题
例如最常见的会有用户的登录信息,也许还会有一些其他的状态信息,而如果不解决这些状态数据的问题,就会导致用户访问两台机器时不一致的现象;
2. 一台到两台组集群的问题
这里也将涉及到一堆的问题,例如负载均衡、健康检查等。

如果是数据库加机器呢,就更加复杂了,在技术上通常要解决分库分表的问题,如果不做分库,那么即使加数据库机器也分摊不了压力,分库通常是物理上的拆分,而如果是同一张表的压力,那么通常还需要做分表。

而随着应用机器数的增长,到数据库的连接池很容易成为瓶颈,这个时候通常会碰到有钱买机器,但不能加机器的致命现象,因此也是必须去解决掉的。

仅仅从上面这个最简单的过程就可以看到,系统要纯粹做到靠加机器就能支撑流量其实并不容易,是需要相当多的技术支撑的,就更不用说,当系统复杂到演变为下面的场景时:
当系统演变为由几百、几千个应用组成的时候,要做一次活动,请问到底要加多少机器,每个应用又加多少台呢;
加的机器一个机房都装不下的时候,那该怎么办呢;

很多时候架构演变要解决的主要问题就是怎么让系统能做到仅靠加机器就能支撑增长的流量,规模问题随着规模的数量级的变化,遇到的挑战会更加的大,从而也会导致系统的架构更加复杂。

这里还没有说加的机器实在太多了,成本该怎么控制住的问题,所以要做到加机器其实真心不low,一个极强的架构师,需要能根据人力的投入、规模增长的预期来权衡在一个架构版本中需要支撑到的规模级别,合理设计架构,从而确保在一个周期内可以仅靠加机器就解决,并同时又确保了在下一个周期到来前已经做好了各方面的技术积累和准备。

第二个点:切流量
有些人看到阿里这边碰到系统出问题的时候切流量这招,会觉得很low,但事实上我们简单来看下,切流量通常指的是把一个机房的流量切到另外一个机房,初级的版本是切流量到同城的另一个机房,这里要解决掉一些技术问题才能做到:
1. 数据库等的地址切换,当做流量切换时,通常是一个机房内出了不确定的故障,因此通常数据库也需要做好主备的切换,除了数据库外,可能还会有其他的一些指定的地址,这个时候都应该做到在不需要重启应用的情况下完成地址切换,这说实话如果在一开始系统简单的时候没有管理好这些地址类型的信息的话,等到系统复杂了再来做这个还是挺花时间的;
2. DNS disable vip,这里就是一个很容易被说到的点,DNS是没有健康检查的,因此当要拿掉一个机房的vip时,就必须等待dns生效,但其实这个是有一招可以来解掉的。

如果是异地的机房的流量切换,就更加复杂了,由于异地的情况下网络的延时会是一个大型分布式应用没法接受的,这个时候通常会启用异地多点写,而要做到这一点就已经非常不容易了,只有在做到这一点的情况下,才有得说异地机房切流量这一说,而在做到的情况下,怎么保障异地机房切流量时的数据的正确性是非常关键的点,感兴趣的可以看下我在 这片文章里讲的关于异地多活的技术点。

所以和加机器一样,我们可以看到切流量这招的背后也是需要有强大的技术支持的,我自己是认为切流量是提升系统可用性的极为有效的大招,在多个机房且可以快速切流量(要做到快其实也非常的难)的情况下,单个机房内无论出现任何故障,都可以仅仅靠切流量来应对,这对提升系统的可用时间是非常有帮助的。

欢迎大家讨论这里面讲的一些点,:)

=============================
欢迎关注微信公众号:hellojavacases
题目来源:http://www.bhmpics.com/wallpapers/low_battery_logo-1680×1050.jpg

关于此微信号:
分享Java问题排查的Case、Java业界的动态和新技术、Java的一些小知识点Test,以及和大家一起讨论一些Java问题或场景,这里只有Java细节的分享,没有大道理、大架构和大框架。

公众号上发布的消息都存放在http://hellojava.info上。

相关 [机器 流量 low] 推荐:

加机器、切流量真的那么low吗

- - HelloJava微信公众账号网站
每当说到应对活动高峰流量的策略时,加机器这招总是会被认为很low,而同样,在另外一个场景中,当系统出现问题,通过切流量来快速恢复时,也会被认为很low,但这两个大招真的很low吗. 首先说说加机器这回事,通常系统最早都是由一台应用机器再加一台或两台数据库机器组成,访问量高的情况下,自然最希望的就是靠加机器来解决.

怎样处理iOS 5与iOS 6的 low-memory

- - CSDN博客移动开发推荐文章
移动设备终端的内存极为有限,应用程序必须做好low-memory处理工作,才能避免程序因内存使用过大而崩溃. low-memory 处理思路. 通常一个应用程序会包含多个view controllers,当从view跳转到另一个view时,之前的view只是不可见状态,并不会立即被清理掉,而是保存在内存中,以便下一次的快速显现.

低階格式化工具【HDD Low Level Format Tool】讓壞軌的硬碟有機會起死回生

- 洋白菜 - 就是教不落
免費壓縮軟體【Hamster Free ZIP Archiver】支援ZIP壓縮及解壓多種常用格式. 小紅傘惡意程式移除工具【Avira AntiVir Removal Tool】免費免安裝. 網路工具【NotiPage】自動檢查網站頁面更新並提醒. 免費虛擬光碟【MagicDisk】支援掛載酒精MDF光碟映像檔及其它10種以上常用映像檔格式.

百度用户体验部总监演讲被喊下台,是接地气还是真的太low?

- - 博客园_新闻
腾讯科技讯,7 月 2 日,今天正在北京国家会议中心举行的国际体验设计大会出现了尴尬的一幕:百度用户体验部总监刘超在舞台做演讲时,因一现场观众大喊“你太 low 了,下去吧”,而导致演讲直播被迫中断几分钟. 此事已经在知乎、微博、朋友圈等引发讨论. 腾讯科技在刘超的演讲视频中看到,刘超的演讲以互联网+时代设计进阶之路为主题,这个时长接近 18 分钟的演讲内容分为三个部分:对国内互联网用户体验发展阶段的回顾和总结、设计相关职位介绍(以职位竞猜互动的方式)、对百度用户体验部的介绍.

年薪150万的总监,一次演讲被开除,难道只是因为 PPT 太丑太 Low 吗?

- - 神刀安全网
就在上周末,互联网圈都被「2016 国际体验设计大会」(IXDC)上的一则演讲刷屏了. 讽刺的是,这次不是因为“精彩”,而是因为“太 Low”、“太丢人”. 那么这次事件的男主为何许人呢. 刘超,1979年7月4日出生,天津人,毕业于清华大学美术学院工业设计系. 2003年,任诺基亚中国图形UI设计主管.

机器学习之恶意流量检测的特征工程

- - FreeBuf互联网安全新媒体平台
传统的机器学习除了使用Tfidf-ngram的方式外还有其他做特征工程方式,还可以通过定义不同维度的特征来做特征工程,这种特征工程方式需要安全工程师对每一种攻击有良好特征提取能力. 这种方法举个例子来说可以这样理解,我的输入是姚明,此时我在特征工程阶段需要将姚明转化为身高2.2米、体重400斤等等数值特征,再经过标准化等转化为机器可以识别的量纲单位进行学习预测.

[信息图]报告称“机器人”已把持61%的网络流量 人类仅占38.5%

- - cnBeta.COM业界资讯
如果你正在观看这篇新闻,那么你肯定不会是唯一的访问者——除了人类,还有很大一部分是"机器人"(bots). 根据最近由Incapsula发布的一份报告,61.5%的网络流量,竟然是由"机器人"产生的. 相对的,在今年,人类访问只造就了38.5%的网络流量;而在去年,这一数字是49%. 在这些自动化软件工具中,有许多是恶意的——盗取数据、或者在评论部分发布诈骗性质的广告帖.

流量生意

- flypen - 张磊的blog
前些日子网上盛传某联盟的按月分成数据,其中番茄花园、雨木林风的分成都高达百万. 有人惊呼:原来做盗版软件这么赚钱. 也有人质疑:他们怎么可能赚这么多钱. 他们确实很赚钱,简单说,这就是流量生意. 为什么几乎每个巨头都有一个“网站联盟”. 为什么Google当年愿意付费推广Firefox. 为什么,推广Firefox、自己做Chrome的同时,把微软当作对手的Google还特意提供“优化的Internet Explorer”.

linux 查看流量

- - 开源软件 - ITeye博客
在Linux下怎么看网络流量. 在Windows下,我们可以很方便的通过360来查看网络流量,知道哪个进程占用的网络带宽比较多. 那在Linux下怎么看流量呢,对于Web服务器来说这是很重要的. 下面这边博客很仔细的介绍了Linux下看流量的方法:. Linux 各种查看网卡流量的方法  http://jasonyong.blog.51cto.com/47753/174197.

nginx 流量复制

- - 开源软件 - ITeye博客
# 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP. #设置 $url ==原url. #新接口地址改变的,需要转换url. #新接口地址改变的,需要转换url. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.