DANH MỤC TÀI LIỆU
Tất tần tật những gì cần biết về Kiến trúc Website
T t t n t t nh ng gì c n bi t v Ki n trúc Websiteấ ầ ế ế
Mô hình ki n trúc website:ế
Đây là hình nh miêu t lu ng x lý c a m t website hi n nay. Cũng khá ả ồ
d nh n th y các thành ph n c a nó bao g m: ầ ủ
DNS
Load Balancer
Web Application Servers
Database
Catching Service
Job Queue and Servers
Full-text Search Service
Services
Data firehose and Data warehouse
Cloud storage
CDN
Và mình s đi vào chi ti t t ng b ph n đ giúp các b n có cái nhìn chi ti t ế ừ ế
h n v mô hình này nhé.ơ ề
DNS
DNS đ c vi t t t b i Domain Name Server, là m t h th ng cho ượ ế ắ
phép thi t l p t ng ng gi a đ a ch tên mi n và IP trên Internet. ế ậ ươ
Đây là x ng s ng c a World Wide Web – m t không gian thông tin ươ ố
toàn c u mà m i ng i có th truy c p, đ c, vi t thông qua các thi t ườ ậ ọ ế ế
b k t n i v i Internet. DNS chuy n đ i t tên mi n (vd:ị ế google.com)
sang đ a ch IP t ng ng c a tên mi n đó (cd: 123.456.789), vi c ị ỉ ươ
này giúp cho máy tính c a b n có th k t n i đ n server thích h p. ể ế ế
H th ng tên mi n cũng gi ng nh danh b đi n tho i c a internet ư ạ ủ
v y, giúp m i ng i d dàng ghi nh , tra c u h n vì tên mi n là ườ ễ ơ
đo n ch có nghĩa thay vì ph i tìm đ n m t server nào đó qua dãy s ế ộ
vô nghĩa.
Load Balancer
Load Balancer(Cân B ng T i) là vi c phân b đ ng đ u l u l ng ố ồ ư ượ
truy c p gi a hai hay nhi u các máy ch có cùng ch c năng trong ậ ữ
cùng m t h th ng. B ng cách đó, s giúp cho h th ng gi m thi u ộ ệ ố ệ ố
t i đa tình tr ng m t máy ch b quá t i và ng ng ho t đ ng. Ho c ủ ị ư
khi m t máy ch g p s c , Cân B ng T i s ch đ o phân ph i ự ố
công vi c c a máy ch đó cho các máy ch còn l i, đ y th i gian ệ ủ
uptime c a h th ng lên cao nh t và c i thi n năng su t ho t đ ng ệ ố ạ ộ
t ng th .ổ ể
Gi i thi u v Horizontal Scaling và Vertical Scaling: ệ ề
Đây là hai cách cân b ng t i th ng đ c s d ng. Trong khi Horizontal ườ ượ ử ụ
Scaling nghĩa là ph i thêm máy móc cho ngu n l c, thì Vertical Scaling là ồ ự
ph i nâng c p ngu n l c hi n t i (nâng c p v RAM, CPU, …). ồ ự ệ ạ
Đ hi u rõ h n v hai cách này, mình xin đ a ra ví d : trong khi phát tri n ể ể ơ ư
web, b n ít nhi u cũng s g p ph i v n đ v vi c server th nh tho ng b ặ ả ả ị
crash, m ng server không n đ nh, d li u ngo i tuy n. Đ a ra l a ch n ữ ệ ế ư
Horizontal Scaling s giúp m i vi c đ n gi n h n do n u b n có nhi u ệ ơ ơ ế
server, khi m t server g p v n đ thì b n v n còn các server khác giúp cho ặ ấ ề ạ ẫ
web c a b n v n ch y. M t u đi m n a là nhi u server có th giúp b n ộ ư
chia nh công vi c cho ph n backend c a web – database, web server, ỏ ệ
service,… b ng cách cho m i th ch y trên m t server riêng. Khi các ứ ạ
request đ c chuy n đ n, chúng s đ c phân ph i đ u t i các server d n ượ ế ẽ ượ
đ n vi c không có m t server nào b quá t i. Còn vi c l a ch n Vertical ế ệ ự
Scaling là không kh thi vì kh năng nâng c p máy tính cũng có gi i h n ớ ạ
vi c đ server ph i x lý quá nhi u vi c d n đ n quá t i.ệ ể ệ ẫ ế
Web Application Servers
Đây đ n gi n là n i x lý công vi c logic, nghĩa là x lý request t ơ ơ ử
phía user và tr l i code HTML cho trình duy t. Đ làm đ c vi c ả ạ ượ
này thì Web server ph i đ c k t n i v i c s h t ng nh ượ ế ơ ạ ầ ư
database, caching layers, job queues, data queues, services, … và nên
dùng load balancer đ x lý khi l ng request t user l n. B n có thể ử ượ
dùng ngôn ng nh Node.js, Ruby, PHP, Scala, Java, C# .NETữ ư
MVC framework cho ngôn ng đó: Express, Ruby on Rails, Play,
Laravel đ xây d ng web app servers.ể ự
Database Servers
H u h t các ng d ng web hi n t i đ u s d ng m t hay nhi u ế ử ụ
database đ l u tr d li u. Database cung c p nhi u cách đ đ nh ể ư
nghĩa c u trúc d li u, thêm m i d li u, tìm d li u, s a hay xóa d ữ ệ ữ ệ ữ ệ
li u đã có, tính toán d li u, … Trong m t s tr ng h p, web app ữ ệ ườ
server s nh n d li u t job servers thay vì l y tr c ti p trong ữ ệ ế
database. SQL NoSQL là ngôn ng truy v n mang tính c u trúc, ữ ấ
dùng đ truy v n, thao tác v i Database.ể ấ
Caching Service
Caching service cung c p kho d li u key/value đ n gi n đ l u tr ơ ể ư
và tra c u thông tin trong th i gian g n. Các ng d ng th ng t n ườ ậ
d ng caching service đ l u tr k t qu c a các x lý ph c t p đ ể ư ế
có th l y l i k t qu t b nh đ m mà không ph i th c hi n x lýể ấ ế ả ừ
l n n a. Cache có th dùng đ l u k t qu truy v n database, ể ư ế
services, HTML t url, … Ví d nh Google hay l u k t qu search ụ ư ư ế
c a nh ng t thông th ng thay vì query l i m i l n, Facebook l u ườ ọ ầ ư
l i ph n l n nh ng bài vi t b n th y khi đăng nh p. Hi n t i có 2 h ế ạ ệ ạ
th ng l u tr ph bi n là Redis và Memcache. ư ổ ế
Job Queues and Servers
Ph n l n các ng d ng web có m t s ho t đ ng b t đ ng b không ứ ụ ộ ấ ồ ộ
tr c ti p liên quan v i k t qu tr v t request t user. Ví d nh ế ế ề ừ ư
Google c n ph i tìm trên toàn b d li u trên Internet đ tr v k t ộ ữ ả ề ế
qu tìm ki m cho ng i dùng. Vi c này không x y ra m i khi b n ế ườ ả ỗ ạ
tìm ki m th gì đó mà nó s đ c di n ra b t đ ng b trong m t ế ẽ ượ
kho ng th i gian.ả ờ
Job Queues là m t danh sách các job đang c n đ c x lý m t cách ượ ử
b t đ ng b . Ph n l n các job s đ c ho t đ ng theo th i gian đã ẽ ư
đ c lên k ho ch t tr c ho c job s đ c ch y theo ho t đ ng ượ ế ướ ẽ ượ
c a ng i dùng. Và Job Server là m t server riêng n i job s đ c ườ ơ ẽ ượ
ch y.
Full-text Search Service
Full-text search là cách t nhiên nh t đ tìm ki m thông tin, h t nh ấ ể ế ư
Google, ta ch c n gõ t khóa và nh n enter th là có k t qu tr v . ỉ ầ ế ế
Full-text search t n d ng inverted index đ nhanh chóng tìm ki m vănậ ụ ế
b ng có t khóa c n tìm. Inverted index là k thu t thay vì index theo ỹ ậ
t ng đ n v row(document) gi ng nh mysql thì chúng ta s bi n ơ ư ẽ ế
thành index theo đ n v term. C th h n, Inverted index là m t c u ơ ể ơ
trúc d li u, nh m m c đích map gi a term và các document ch a ữ ệ
term đó.
B c nh ch ra cách 3 tiêu đ đ c bi n đ i thành inverted indexứ ả ượ ế
Ngoài cách full-text search tr c ti p t database, thì cũng có th có m t ế ừ
search service riêng đ ph c v cho vi c l u tr inverted index và cung c p ệ ư
query interface. Hi n t i có m t s platform ph bi n đ c s d ng cho ệ ạ ổ ế ượ
vi c này là Elasticsearch, Sphinx hay là Apache Solr.
Services
Có m t s service s đ c chia nh ra đ ch y nh m t ng d ng riêng, ượ ư ộ ứ
Web app và các Service khác có th t ng tác đ n chúng. Ví d :ể ươ ế
Account service dùng đ l u tr d li u c a t t c các user qua các ể ư
site.
Content service dùng đ l u tr l ng d li u l n v video, nh, file ể ư ữ ượ
audio. Nó cũng cung c p giao di n đ t i n i dung và xem l ch s t i. ể ả ử ả
Payment service cung c p giáo di n đ tr phí qua th tín d ng. ể ả
Data
Ngày nay, các công ty t n t i hay phá s n d a trên vi c h khai thác ồ ạ
d li u nh th nào. Khi các app đ t đ n tr ng thái ho t đ ng n ữ ệ ư ế ế
đ nh, nó s d ng quy trình x lý d li u đ ch c ch n r ng d li u ữ ệ ữ ệ
thông tin tài liệu
Bài viết tổng hợp những kiến thức cơ bản về kiến trúc website
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×