A Flock Of Tasty Sources On How To Start Learning High Scalability
This is a guest repost by Leandro Moreira.

When we usually are interested about scalability we look for links, explanations, books, and references. This mini article links to the references I think might help you in this journey.
DISCLAIMER:
You don’t need to have N machines to build/test a cluster/high scalable system, currently you can useVagrant and up N machines easily.
THE REFERENCES:
Now that you know you can empower yourself with virtual servers, I challenge you to not only read these links but put them into practice.
- First of all, motivate yourself by watching this tutorial using nodejs + nginx + applying static caching + load balancing + testing, all this in 7 minutes.
- Add these words and their meaning to your vocabulary: scalability, failover, single point of failure (SPOF), sharding, replication and load balancing; even if you don’t understand them completely.
- In order to have a general overview and the reasons/whys about scalable systems, I strongly recommend you to read Scalable Web Architecture and Distributed Systems. This is a great introduction.
- After you get the general idea you can move on to understand how to use a load balancerand what decisions and problems you will face. And then you can try to run a haproxy and make it not a single point of failure too.
- Dare yourself to serve 3 million requests per second but for this task you’ll need togenerate 3 million requests, fine tune your web server and finally scale and test it.
- Your application is already scalable, now you need to scale your databases. They are very important part of your application, here I recommend you to read at least how MongoDB scales with sharding and replication and Cassandra with its almost linear scalability and the ease of adding nodes to the cluster.
- Since your application and database are scalable and fault tolerant, it’s good to save your servers unnecessary workload and also make the responses to the user faster. Learn that a good request is the one that never reached the “real server”.
- Let’s assume we’re deploying the whole infrastructure within a single data center, now we have another SPOF. Since all servers are in the same space, some natural disaster might happen or even the simple power outages. Good news is that Cassandra have support to multiple data center out of the box and you can see how google face this issue. If your user is on Brazil, don’t make him travel longer than he needs and remember even with the best situation we still have latency.
Good questions to test your knowledge:
- Why to scale? how people do that usually?
- How to deal with user session on memory RAM with N servers? how LB know which server is up? how LB knows which server to send the request?
- Isn’t LB another SPOF? how can we provide a failover for LB?
- Isn’t my OS limited by 64K ports? is linux capable of doing that out of the box?
- How does mongo solves failover and high scalability? how about cassandra? how cassandra does sharding when a new node come to the cluster?
- What is cache lock? What caching policies should I use?
- How can a single domain have multiple IP addresses (ex: $ host www.google.com)? What is BGP? How can we use DNS or BGP to serve geographically users?
Bonus round: sometimes simple things can achieve your goals of making even an AB test.
Please let me know any mistake, I’ll be happy to fix it.
参考:
A Flock Of Tasty Sources On How To Start Learning High Scalability的更多相关文章
- buffer overflow vulnerabilitie
Computer Systems A Programmer's Perspective Second Edition Avoiding security holes.For many years,bu ...
- 51 Free Data Science Books
51 Free Data Science Books A great collection of free data science books covering a wide range of to ...
- 4.修改更新源sources.list,提高软件下载安装速度(提供Kali 2.0 更新源)
1.切换到root用户(如果已经是root用户就直接看第二步) dnt@HackerKali:~$ su 密码: 2.用文本编辑器打开sources.list,手动添加下面的更新源 root@Hack ...
- Spark SQL 之 Data Sources
#Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...
- Chrome 开发工具之Sources
Sources面板主要用于查看web站点的资源列表及javascript代码的debug 熟悉面板 了解完面板之后,下面来试试这些功能都是如何使用的. 文件列表 展示当前页面内所引用资源的列表,和平常 ...
- Ubuntu 14.04.4官方默认更新源sources.list
Ubuntu 14.04.4官方默认更新源sources.list # deb cdrom:[Ubuntu LTS _Trusty Tahr_ - Release amd64 (20160217.1) ...
- 错误“Sources”参数中指定了多次。“Sources”参数不支持重复项。
在“Sources”参数中指定了项“”多次.“Sources”参数不支持重复项. Asp.Net关于错误“Sources”参数中指定了多次.“Sources”参数不支持重复项. “Sources”参数 ...
- Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources解决
解决方法 ruby -v rvm requirements brew install libyaml rvm pkg install openssl rvm install 2.3.1 --with- ...
- gem sources --add http://ruby.taobao.org/
gem sources gem sources gem sources --remove http://ruby.taobao.org/ gem sources --add http://ruby ...
随机推荐
- JS 原型继承的几种方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2016 - 1- 14 UI阶段学习补充 transform属性详解
UIView的transform属性 transform是view的一个重要属性,它在矩阵层面上改变view的显⽰状态,能实现view的缩放.旋转.平移等功能.transform是CGAffineTr ...
- linux下解决端口被占用的问题
以端口9877为例,先查看是否有进程占用该端口 netstat -tln | grep 9877 然后查看占用该端口的进程的进程id lsof -i :9877 最后kill 命令结束该进程: kil ...
- IOS 用keychain(钥匙串)保存用户名和密码
IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果I ...
- 数据结构 《6》----堆 ( Heap )
Practival Problems: a. Construct a Huffman code b. Compute the sum of a large set of floating point ...
- JQuery源码分析(八)
jQuery的each迭代器 jQuery的each方法从使用上就要分2种情况: $.each()函数 $(selector).each() $.each()函数和$(selector).each() ...
- 程序自启动及后台持续运行的研究(voip和GPS方式)
1,voip方式 1)首先要修改应用的plist配置,添加下面的设置: Application does not run in background: NO Requ ...
- RPi 2B USB 远程桌面
/******************************************************************** * RPi 2B USB 远程桌面 * 说明: * 用作废的 ...
- C++ QUICK REFERENCE
C++ string 用法详解 字符串分割(C++) C++ QUICK REFERENCE Matt Mahoney, mmahoney@cs.fit.edu DECLARATIONS enum ...
- web app 变革之rem
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...