@manhnguyenv

Welcome to my blog!

StackOverflow và kiến trúc của những trang chịu tải lớn

January 26, 2018 15:31

StackOverflow - Kiến trúc của những trang chịu tải lớn

https://www.dev-metal.com/architecture-stackoverflow/

Các lần tái cấu trúc của trang StackOverflow qua đó ta thấy được phần nào kiến trúc giúp cho trang này có thể chịu được lượng tải lên đến hàng trăm triệu visit một tháng như vậy.

3 nguyên lý chính trong kiến trúc của StackOverflow

  • Performance is a feature – hiệu năng là một tính năng chính
  • Cache all the thing – cache mọi thứ có thể vì đây là một trang hỏi đáp nên số lượng đọc rất lớn, hơn ghi rất nhiều
  • Reinvention is OK – bằng việc cải tiến lại nhiều công nghệ cốt lõi để đảm bảo performance hệ thống các nhà sáng lập đã tạo ra rất nhiều library có performance cực cao như StackExchange.Redis, Dapper, Jil

Với những nguyên lý như vậy StackOverflow đã trải qua 2 lần tái cấu trúc với rất nhiều công nghệ được áp dụng nhằm cải tiến hiệu năng sản phẩm như:



Which tools and technologies are used to build the Stack Exchange Network?

Stack Overflow uses a WISC stack:

Software Development Tools

External Bits

Code used in Stack Overflow that is not included as part of the development tools:

Miscellaneous

Content

Hardware

  • 11 Dell R630 IIS web servers (9 shared for all production like SO, two for Meta and development):
    • 2x Intel Xeon Processor E5-2690 v3 @ 2.6 GHz 12 Core with 24 threads
    • 64 GB RAM
    • Windows Server 2012 R2
    • Two drives
      • 2 Intel 320 300GB SSD (RAID 1)
    • 2x 10Gb network team
  • Three Dell R720xd database servers (two in New York City, one in Denver, using SQL AlwaysOn Clustering) (Global "Sites" DB & Stack Overflow dedicated):
    • 2x Intel Xeon Processor E5-2680 @ 2.7 GHz
    • 384 GB RAM
    • 21 drives
      • Mirrored Pair for OS
      • 2 Intel P3700 2TB PCIe NVMe RAID1 for databases
      • 24 Intel 710 200GB SSD RAID10 for databases
    • SQL Server 2014 SP1
    • 2x 10Gb network team
  • Three Dell R730 database servers (two in New York City, one in Denver, using SQL AlwaysOn Clustering) (All other sites, Careers, Area 51, etc.):
    • 2x Intel Xeon Processor X5680 @ 3.33 GHz
    • 768 GB RAM
    • 28 drives
      • Mirrored Pair for OS
      • 2 Intel P3700 2TB PCIe NVMe RAID0 for databases
      • 24 1.2TB 10K RAID10 for large databases
    • SQL Server 2014 SP1
    • 2x 10Gb network team
  • Two Dell R620 HAProxy servers (direct):
    • 2x Intel Xeon Processor E5-2650 @ 2.0 GHz
    • 64 GB RAM
    • CentOS 7
    • 2x 10Gb network team (internal)
    • 2x 10Gb network team (external)
  • Two Dell R620 HAProxy servers (CloudFlare):
    • 2x Intel Xeon Processor E5-2637v2 @ 3.5 GHz
    • 192 GB RAM
    • CentOS 7
    • 2x 10Gb network team (internal)
    • 2x 10Gb network team (external)
  • Two Dell R630 Railgun servers (CloudFlare):
    • 2x Intel Xeon Processor E5-2699v3 @ 3.5 GHz
    • 192 GB RAM
    • CentOS 7
    • 2x 10Gb network team (internal)
    • 2x 10Gb network team (external)
  • 2 Dell R630 Redis servers:
    • 2x Intel Xeon Processor E5-2687Wv3 @ 3.1 GHz
    • 128 GB RAM
    • CentOS 7
    • 2x 10Gb network team
  • Three Dell R630 Service servers for tag engine/search:
    • 2x Intel Xeon Processor E5-2643v3 @ 3.4 GHz
    • 64 GB RAM
  • One Dell R620 Backup server running NetBackup (most backups):
    • 2x Intel Xeon Processor E52620 @ 2.0 GHz
    • 16 GB RAM
    • 14 drives
      • Mirrored Pair for OS
      • 12 4TB 10K RPM RAID10 for backups (DAS)
    • 2x 10Gb network team
  • One Dell R730xd SMB3 Backup server (SQL backups):
    • 2x Intel Xeon Processor E5-2623v3 @ 3.0 GHz
    • 16 GB RAM
    • 30 drives
      • Mirrored Pair for OS
      • 16 6TB 7.2K RPM RAID10 for backups (Internal)
      • 12 4TB 10K RPM RAID10 for backups (DAS)
    • 2x 10Gb network team
  • Four Dell FC630s VMWare ESX(in Two FX2s Chassis):
    • 2x Intel Xeon Processor E5-2698 v2 @ 2.30 GHz
    • 768 GB RAM
    • 16x 10Gb network team (8x 10Gb per FX2s)
  • 2 Cisco ASR1001-X routers
  • 2 ASR1001 Routers
  • 2 Fortinet 800C Firewalls
  • 2 Cisco Nexus 5596 Cores in an active/active redundant configuration

Sources:

  1. Stack Overflow's New York Data Center (Server Fault Blog)
  2. Designing for Scalability of Management and Fault Tolerance (Server Fault Blog)
  3. What Was Stack Overflow Built With?
  4. Stack Overflow Server Glamour Shots
  5. Technology and SEO profile for stackoverflow.com
  6. Stack Overflow and DVCS
  7. Stack Overflow Network Configuration

Stackoverflow.com

January 2, 2018 19:18

Stackoverflow.com


ASP.NET & ASP.NET MVC with jQuery, Bootstrap
http://aspnetawesome.com
https://prodinner.codeplex.com/
https://www.danylkoweb.com/Blog/where-can-i-find-sample-aspnet-mvc-projects-HL
https://www.danylkoweb.com/Blog/top-10-websites-written-using-aspnet-mvc-JK

http://demo.aspnetawesome.com/GridCrudDemo
http://demo.aspnetawesome.com/CrudInLookup

Stackoverflow.com
http://highscalability.com/blog/2014/7/21/stackoverflow-update-560m-pageviews-a-month-25-servers-and-i.html
+ ElasticSearch
+ Redis
+ MS SQL Server
+ Dapper
+ SSD
+ Nginx & SSL
+ TeamCity
+ HAProxy
+ OpServer
https://github.com/opserver/Opserver

https://www.dev-metal.com/architecture-stackoverflow/
This excellent YouTube comment by Joseph Lust sums it up perfectly:
* Use static methods everywhere instead of OOP
* Write the least code possible
* Keep entire site compilation under 10s
* Cache every single object, it’s faster
* Design to scale Up before Out
* Use 368GB memory for your servers/db’s
* Don’t write tests, have your users find defects
* Don’t reinvent square wheels

https://meta.stackexchange.com/questions/10369/which-tools-and-technologies-are-used-to-build-the-stack-exchange-network

Data Access Layer
https://github.com/nreco/data

Menu with Claims
https://www.danylkoweb.com/Blog/enhancing-the-menu-system-with-claims-JV

Real-time
http://www.codemag.com/article/1210051
https://www.danylkoweb.com/Blog/how-to-create-a-real-time-twitter-stream-with-signalr-FB

SOLID
http://www.codemag.com/Article/1001061

inurl: https://code.tutsplus.com/tutorials/solid
https://code.tutsplus.com/courses/agile-design-patterns
https://code.tutsplus.com/series/the-solid-principles--cms-634
https://code.tutsplus.com/series/the-solid-principles--cms-634

CSS
https://code.tutsplus.com/tutorials/how-to-build-a-kick-butt-css3-mega-drop-down-menu--net-15129
https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048

Ajax
https://webdesign.tutsplus.com/tutorials/a-beginners-guide-to-ajax-with-jquery--cms-25126

https://code.tutsplus.com/tutorials/solid-part-1-the-single-responsibility-principle--net-36074
https://code.tutsplus.com/tutorials/solid-part-2-the-openclosed-principle--net-36600
https://code.tutsplus.com/tutorials/solid-part-3-liskov-substitution-interface-segregation-principles--net-36710
https://code.tutsplus.com/tutorials/solid-part-4-the-dependency-inversion-principle--net-36872

24component-bars (Menu Component)

Fully Responsive Header, Footer, Navigation, Mega Menu, Dropdown, and Sidebar. A nicely crafted package in CSS, JS, and HTML for those who love good design.

All-in-One solution.
You need menus (bars) everywhere! In Website, CMS, Admin Dashboard, Web App, and etc. Now imagine building responsive Headers, Footers, Navigations, Mega Menus, Dropdowns, and Sidebars in seconds

Fits just right in.
Compatible with all modern browsers, frameworks, and web environments. Using Pure HTML5 or a front-end framework such as Bootstrap, MDL, Foundation, or anything else? It doesn't make any difference! You're in good company.

Full documentation.
Anything that you need to know about creating bars is in the documentation that you download. Introduction on how to Get Started, Compatibility Notes, Bar Block Documentation, and etc...

Everything you need is right here.

https://myflashlabs.github.io/24component-bars/

https://myflashlabs.github.io/24component-bars/previews/env-04.html
https://myflashlabs.github.io/24component-bars/previews/env-05.html
https://myflashlabs.github.io/24component-bars/previews/env-06.html

The architecture of StackOverflow.com

July 20, 2017 17:58

Stack Overflow: The Architecture - 2016 Edition

https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 

Stack Overflow: The Architecture - 2016 Edition

https://stackoverflow.blog/2016/02/17/stack-overflow-the-architecture-2016-edition/

Stackoverflow

May 19, 2017 11:00

Dùng dữ liệu từ chính StackOverflow, hacker này đã tạo ra công cụ sửa lỗi lập trình hiệu quả cho coder

Needham cho biết sản phẩm này sẽ chủ yếu phục vụ những lập trình viên chưa có kinh nghiệm nhưng lại không có người hướng dẫn và cũng chưa biết cách search tìm giải pháp một cách hiệu quả.

Tại cuộc thi TechCrunch Discrupt Hackathon vừa diễn ra, một hacker đã xuất hiện với ý tưởng dự án CodeCorrect thu hút sự chú ý của rất nhiều coder trong khán phòng: Công cụ sửa lỗi code cho lập trình viên ngay khi họ đang viết.

Tự mình phát triển dự án, hacker Pat Needham đã “cắm” API StackOverflow vào sản phẩm để nó có thể phát hiện lỗi code thông thường một cách nhanh chóng và hiệu quả.

Needham thực chất còn là một full stack developer từng code từ khi còn học trung học và vẫn luôn mong muốn tìm ra giải pháp cho các vấn đề của chính mình.

Để cài sản phẩm này, coder cần chèn một đoạn code JavaScript vào code mã nguồn web của họ. Code này sẽ chuyển những lỗi chưa được phát hiện sang một một server web node.js. Từ đây, code báo lỗi sẽ gửi yêu cầu tới API của StackOverflow để tìm tin nhắn báo lỗi và trả về kết quả là các câu trả lời được vote nhiều nhất trên StackOverflow. Nếu các câu trả lời có thể được chuyển đổi trực tiếp sang thành hướng dẫn chi tiết những chỗ cần sửa, code ban đầu sẽ được sửa theo đó.

Mục tiêu của “trò hack” này là tiết kiệm thời gian và sức lực cho các coder – đặc biệt là những người còn non trẻ trong ngành trong việc rà soát lỗi lập trình.

Needham cho biết sản phẩm này sẽ chủ yếu phục vụ những lập trình viên chưa có kinh nghiệm nhưng lại không có người hướng dẫn và cũng chưa biết cách search tìm giải pháp một cách hiệu quả. Nhưng tất nhiên, ngay cả những coder dạn dày hơn cũng có thể sử dụng làm tiện ích cho chính mình.

Categories