Thứ Sáu, tháng 5 03, 2024

Hành Trình Tìm Kiếm Sự Phấn Khích Trên Máy Chủ TGHMFAM

Trong một thế giới hoàn mỹ FAM nơi mà mọi người luôn sống vui vẻ và hạnh phúc, có một chàng trai tên là Duy. Một người yêu thích trò chơi trực tuyến và luôn tìm kiếm những trải nghiệm mới mẻ và thú vị.

Một ngày, Duy nghe đồn về một máy chủ trò chơi mới mang tên TGHMFAM. Mọi người đều nói rằng nếu bạn không chơi tại máy chủ này, thì thật đáng tiếc. Duy, với tính tò mò của mình, quyết định khám phá máy chủ này.

Khi bước chân vào thế giới của TGHMFAM, Duy bất ngờ trước sự dễ chơi và dễ trúng thưởng của máy chủ này. Khuyến mãi knb lên tới 1000% khiến Duy không thể tin vào may mắn của mình. Duy nhanh chóng tham gia vào các nhiệm vụ, và với tick cực, đơn giản và tiết kiệm thời gian, Duy hoàn thành chúng nhanh như một cơn gió.

Điều khiến Duy bất ngờ hơn cả là máy chủ TGHMFAM ổn định chất lượng mượt mà và có kinh nghiệm lâu năm. Duy không những trải nghiệm những trận đấu đầy kịch tính mà còn có cơ hội giao lưu và học hỏi từ những game thủ giàu kinh nghiệm.

Hệ thống tiện ích đầy đủ từ a đến z của máy chủ cung cấp cho Duy mọi thứ mà anh cần để thỏa mãn đam mê chơi game của mình. Không chỉ vậy, Duy cũng phát hiện ra rằng, mặc dù không cần nạp thẻ, anh vẫn có thể sống vui và sống khỏe nhờ vào cách chơi mới cực kỳ hấp dẫn của máy chủ TGHMFAM.

Duy phải đối mặt với sự nghi ngờ và lo lắng của bản thân, liệu anh có thể donate để trở lên mạnh mẽ được không? hay mãi mãi chỉ là một clone không sát thương hay danh tiếng. Nhưng với niềm tin vào bản thân và sự hỗ trợ từ bạn bè, Duy đã vượt qua được mọi rào cản và quyết định trở thành một trong những game thủ hàng đầu trên máy chủ TGHMFAM.

Tuy nhiên, thử thách thực sự không chỉ là ở ngoài game mà còn là ở bên trong. Trong hành trình của mình, Duy đã phải đối mặt với nhiều thách thức và hiểm nguy. Có những trận đấu cực kỳ căng thẳng Duy gần như thất bại, Duy và đồng đội của mình đã phải vượt qua một loạt các thử thách khó khăn, từ việc đối phó với kẻ địch FULL MAX đến việc vượt qua sự truy sát liên tục trong game. Nhưng bằng sự thông minh và sự cộng tác cùng sự nỗ lực không ngừng, Duy đã vượt qua mọi thử thách và trở thành một trong những game thủ xuất sắc nhất trên máy chủ TGHMFAM.

Trong một trận đấu quan trọng, máy chủ bất ngờ gặp sự cố kỹ thuật, khiến cho Duy và những người chơi khác cảm thấy bối rối. Với sự yêu mến máy chủ và khao khát chiến thắng, Duy và những người bạn đã chờ một lúc và lại tiếp tục chơi.

Cuối cùng, Duy nhận ra rằng hành trình tìm kiếm sự phấn khích trên máy chủ TGHMFAM không chỉ là về việc giành chiến thắng, mà còn là về việc trải nghiệm những khoảnh khắc thú vị và gặp gỡ những người bạn mới. Duy nhận ra rằng, thế giới ảo cũng có thể mang lại niềm vui và ý nghĩa đích thực nếu bạn biết cách tận hưởng và trải nghiệm.

Hiện nay có tin Duy đang rao bán tài khoản nếu được giá, hãy liên hệ với Duy nếu bạn có nhu cầu, tài khoản in-game của anh ấy là Tachi!

Bài viết không thể hiện quan điểm của người viết mà chỉ là chút thư giãn sau những giờ làm việc vất vả! những thông tin được cung cấp hoàn toàn chính xác nhưng có thể thay đổi trong tương lai.

TGHMFAM, lấy lại niềm tyn, nâng tầm private.

Thứ Hai, tháng 4 22, 2024

Sống lay lắt nhưng không dám về quê ở tuổi 40

 

Ở phố tốn kém đủ đường, tôi muốn về quê để con có một tuổi thơ trọn vẹn, nhưng lại chẳng biết kiếm việc gì để làm và mưu sinh?

"Tôi đang thuê trọ ở phố huyện Đức Hòa, tỉnh Long An. Thú thật, sống ở đây, việc học hành của con tôi không tốt bằng ở quê. Cơ sở vật chất của trường không thật sự tốt, giáo viên cũng không có đủ, nên hiện tại chủ nhiệm lớp con tôi đang là một thầy giáo 64 tuổi (dạy hợp đồng).

Trong khi đó, con tôi đang học chương trình giáo dục đổi mới nên việc dạy và học càng gặp rất nhiều vấn đề. Trái ngược, ở quê tôi, cả xã mỗi khối chỉ có hai lớp, mỗi lớp chỉ có sĩ số khoảng 30 học sinh, nên giáo viên cũng đỡ mệt mỏi, căng thẳng hơn.

Về đi lại, nếu ở quê, con tôi có thể tự đi xe đạp đến trường mỗi ngày do đường ít xe cộ. Như vậy, con tôi vừa có điều kiện để vận động, vừa tự lập được chuyện giờ giấc thay vì phụ thuộc vào bố mẹ, tốt cho con sau này.

Còn ở nơi phố huyện đang trọ hiện nay, tôi không dám để con tự ý chạy xe ra đường lớn, bởi quá nhiều xe cộ, đặc biệt là container, vô cùng nguy hiểm. Vậy là, không còn cách nào khác, tôi phải thuê xe đưa rước con mỗi ngày và cho con tiền ăn trưa gần trường (do trường chưa có bán trú) để không phải đi lại, tốn kém cũng gần hai triệu đồng một tháng.

Nhưng để con về quê học tập thì con tôi cũng không chịu. Mà về quê, bản thân tôi cũng thực sự không biết làm gì để kiếm sống? Tôi năm nay cũng 40 tuổi rồi, nếu giờ nghỉ việc trên này thì về quê không có việc, còn nếu muốn quay lại huyện cũng rất khó xin việc vì không nơi nào muốn tuyển nhân viên lớn tuổi.

 Thú thật, tôi thấy rất thương con khi tuổi thơ bị nhiều thiệt thòi: không có sân chơi, không biết tập văn nghệ thiếu nhi dịp trung thu vui cỡ nào, không biết lễ khai giảng ra sao (trường chỉ cho mỗi lớp 10 bạn đại diện dự khai giảng)... Nhưng nếu tôi cùng con về quê bây giờ thì không biết xoay sở cuộc sống thế nào? Thế nên, tôi cứ tự động viên mình rằng 'ráng đi làm vài năm nữa, để dư được chút ít tiền bạc rồi cả nhà về quê'".

 Thú thật, tôi thấy rất thương con khi tuổi thơ bị nhiều thiệt thòi: không có sân chơi, không biết tập văn nghệ thiếu nhi dịp trung thu vui cỡ nào, không biết lễ khai giảng ra sao (trường chỉ cho mỗi lớp 10 bạn đại diện dự khai giảng)... Nhưng nếu tôi cùng con về quê bây giờ thì không biết xoay sở cuộc sống thế nào? Thế nên, tôi cứ tự động viên mình rằng 'ráng đi làm vài năm nữa, để dư được chút ít tiền bạc rồi cả nhà về quê'".

Thứ Bảy, tháng 4 20, 2024

Game cày quốc treo máy kiếm tiền Thế Giới Hoàn mỸ FAM

Chào các bạn, S155 mỗi tuần có thể farm trong Quốc Chiến 2 lần 85000 quân tư thông bảo,

Có thể đổi ra được 170 Quân Ấn Chi Thụ.

Do có members đặt hàng một số lượng không nhỏ và nhờ ad thu mua nên ai trong S155 có dư QACT thì bán lại ad nhé.

Ad thu mua 5000 VNĐ = 1 QACT.

Nghĩa là mỗi tuần mọi người có thể farm trực tiếp được 170 * 5000 = 850.000 VNĐ, quá ngon phải không nào!

Chưa kể QACT còn có thể farm bằng nhiều hình thức khác nữa, cơ hội kiếm tiền đã đến nếu có hàng hãy liên lạc với ad qua các kênh liên lạc từ máy chủ nhé!

Link chi tiết tại forum máy chủ:

https://gamefam.org/forum/index.php?topic=616.0

Thứ Sáu, tháng 4 12, 2024

File RAR này đã tấn công streamer Độ Mixi

 

Qua file sample được Độ Mixi chia sẻ, chúng ta đã có thể biết được mã độc này đã vượt mặt các cơ chế bảo mật của antivirus như thế nào.

Mới đây, vụ việc streamer Độ Mixi (Phùng Thanh Độ) bị hack kênh YouTube đã thu hút được sự quan tâm lớn của cộng đồng công nghệ và game thủ trong nước. Sau 2 ngày tạm ngừng stream, vào ngày 3/4, kênh YouTube của Mixigaming đã được phục hồi trở lại nguyên trạng, và streamer này đã "on air" vào tối cùng ngày.

Trong buổi stream mới nhất, Độ Mixi đã chia sẻ cách thức mà hacker đã liên lạc và đánh lừa streamer này chạy mã độc trên máy tính cá nhân. Chúng tôi đã thu thập được file sample và đã tiến hành phân tích sơ bộ về cách thức mã độc này vượt mặt các trình diệt virus, cũng như danh sách những mã độc mà PC của streamer này đã nhiễm.

Trước khi đọc tiếp, chúng tôi khuyến khích bạn đọc tham khảo bài viết "Mật khẩu mạnh, bật bảo mật 2 lớp, tại sao những YouTuber "top đầu" như Độ Mixi vẫn bị hack?". Dù được hoàn thành trước thời điểm Độ Mixi xác nhận về cách thức tấn công, tuy nhiên bài viết này đã dự đoán chính xác kịch bản được hacker tạo ra, bao gồm giả dạng email chào mời hợp tác, gửi mã độc dưới dạng một file nén, cũng như cách thức để vượt mặt các phần mềm diệt virus.

File mã độc được gửi tới Độ Mixi được giả dạng là một tựa game mang tên "Black Myth Wukong" (hiện tại tựa game này vẫn chưa chính thức ra mắt, vì vậy tất cả các đường link tải về đều là giả mạo). "Tựa game" này được chia sẻ qua dịch vụ lưu trữ trực tuyến Google Drive và Dropbox.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 1.

Độ Mixi chia sẻ đoạn email "chào mời hợp tác" nhằm đánh lừa streamer này khởi chạy mã độc

Đầu tiên, hãy cùng đến với file được hacker gửi tới Độ Mixi. File này có tên "Black Myth Wukong.rar", là dạng file nén của WinRAR với dung lượng 886.5MB. File này không yêu cầu mật khẩu để giải nén.

 

"Black Myth Wukong.rar" bao gồm 2 file nhỏ bên trong: "Black Myth Wukong Demo.rar" và "ReadMe.txt". Trong đó, Black Myth Wukong Demo.rar đã bị mã hóa (đặt mật khẩu), và Readme.txt chứa mật khẩu để giải mã. Mật khẩu của file RAR cũng được chia sẻ với Độ Mixi thông qua email trao đổi công việc.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 2.

Nội dung của file Black Myth Wukong.rar

Sau khi giải nén, chúng ta sẽ có được một loạt các folder và file được bố cục như một bộ cài game thật. Tuy nhiên đây chỉ cách mà hacker đánh lừa thị giác của người dùng, bởi những folder và file này hoàn toàn không liên quan đến bất kỳ tựa game nào hay thậm chí là mã độc. Chúng chỉ có tác dụng "làm cảnh" một cách đúng nghĩa.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 3.

File "Black Myth Wukong 64-bit.exe" với dung lượng 692.1MB

Thay vào đó, mọi sự chú ý được đổ dồn vào file "Black Myth Wukong 64-bit.exe". Đây là một file .exe, có dung lượng 692.1MB và hash md5 05eb129bc331d556a3330bdb262cb132.

Như đã phân tích ở bài viết trước, việc file .exe này có dung lượng lớn đến như vậy là cách để mã độc vượt mặt các phần mềm diệt virus. "Sở dĩ làm điều này là bởi theo thiết lập mặc định, một số phần mềm diệt virus sẽ không quét các tệp tin dung lượng quá lớn để tránh làm ảnh hưởng tới hiệu năng của PC. Một số dịch vụ quét virus trực tuyến như VirusTotal cũng chỉ cho phép tải lên tệp tin với kích thước tối đa là 650MB, vậy nên mức 700-750MB có thể được coi là "con số lý tưởng" đối với những dạng tấn công này.", trích dẫn từ bài viết.

 

Cách thức mà hacker tăng kích thước file cũng đã được đề cập trong bài viết trước. Bên cạnh một phần rất nhỏ những đoạn mã độc, hacker đã chèn thêm một loạt những đoạn mã dư thừa ở đoạn cuối của file exe.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 4.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 5.

Bên cạnh những đoạn mã độc, hacker đã chèn hàng loạt những đoạn mã trống nhằm tăng dung lượng file

Chúng tôi đã tiến hành chỉnh sửa lại file .exe gốc, xóa các đoạn mã dư thừa. Hậu "làm thon gọn", Black Myth Wukong 64-bit.exe đã giảm dung lượng từ 692.1MB còn 6.9MB.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 6.

Sau khi chỉnh sửa, file exe giảm dung lượng từ 692.1 MB xuống chỉ còn 6.9MB

Đến đây, chúng tôi có thể dễ dàng upload file này lên công cụ VirusTotal để xác thực. Trong số 72 phần mềm quét virus trên VirusTotal, có 29 phần mềm nhận dạng là mã độc. Tiếc rằng, phần mềm diệt virus Bkav, được quảng cáo tích hợp hàng loạt công nghệ AI tiên tiến, lại không thể nhận diện được mã độc này. Xem báo cáo của VirusTotal với mẫu file chúng tôi đã chỉnh sửa tại đây.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 7.

File "Black Myth Wukong 64-bit.exe" sau chỉnh sửa đã được tải lên VirusTotal và nhận dạng bởi 29/72 trình diệt virus

Thế nhưng, câu chuyện chưa dừng lại ở đó. Tiếp tục sử dụng công vụ VirusTotal Graph, chúng ta sẽ có một cái nhìn chi tiết hơn về cách mà mã độc này hoạt động. 

Có thể coi VirusTotal Graph là một dạng "bản đồ tư duy" (mindmap) nhưng dành cho mã độc. Khi người dùng tải một file lên công cụ này, VirusTotal sẽ phân tích xem file đó sẽ làm gì trên hệ thống máy tính, ví dụ như tạo ra những file nhỏ nào, kết nối với máy chủ ở đâu... Trên VirusTotal Graph, những đối tượng bị có vòng tròn đỏ xung quanh được đánh giá là mã độc.

Và, phân tích cho thấy một kết cục không mấy khả quan cho streamer Độ Mixi.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 8.

Phân tích mã độc thông qua công cụ VirusTotal Graph

Đầu tiên về kết nối Internet, khi được khởi chạy, mã độc này sẽ tạo kết nối tới một số máy chủ tại Mỹ. Trong đó, có một số máy chủ đã nằm trong danh sách đen của các dịch vụ an ninh mạng. Đương nhiên, việc những dữ liệu nào của Độ Mixi được gửi tới các máy chủ đó sẽ cần thời gian phân tích sâu hơn.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 9.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 10.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 11.

Mã độc kết nối với hàng loạt địa chỉ IP nguy hiểm

Điều mà chúng tôi muốn nhấn mạnh hơn là về những file đã được sản sinh ra trong quá trình mã độc này được kích hoạt. Như đã nói ở trên, cách thức hiển thị của VirusTotal Graph là những đối tượng bị có vòng tròn đỏ xung quanh được đánh giá là mã độc. nếu nhìn theo hình ảnh dưới đây, có thể thấy rằng không có một mã độc nào cả.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 12.

Các file được tạo ra trong quá trình mã độc được khởi chạy

Bởi thực tế, toàn bộ các file bên trong đều là những thư viện .dll "chuẩn chỉ" và được xác thực. Tuy nhiên, chúng tôi đã nhận ra sự xuất hiện của bz2, một thư viện Python với nhiệm vụ giải nén file (tương tự như WinRAR trên Windows).

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 13.

Thư viện bz2 với nhiệm vụ giải nén

Và song song với đó, là một file zip mang tên "base_library.zip" với dung lượng 1.27MB.

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 14.

File zip mang tên "base_library.zip" với dung lượng 1.27MB

Giải nén file zip, và đây là những gì chúng ta có được. Thật không thể tin nổi!

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 15.

Hàng loạt mã độc được "ẩn náu" bên trong file zip này

File RAR này đã tấn công streamer Độ Mixi: Không chỉ 1, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau- Ảnh 16.

Một trong số vô vàn mã độc đã tấn công PC của Độ Mixi

Như vậy, nếu chỉ đếm "sơ sơ" bằng tay, Độ Mixi đã nhiễm ít nhất 20 loại mã độc khác nhau. Sau đây là liệt kê các file và loại mã độc được nhận dạng bởi các phần mềm antivirus khác nhau:

cstealer.exe: Trojan:Win64/CrealStealer.AMJ!MTB (Microsoft)

foodmethods.exe: UDS:Trojan-PSW.Multi.Stealer (Kaspersky)

gen.exe: W64.AIDetectMalware (Bkav)

payload.exe: UDS:Trojan.Win32.Generic (Kaspersky)

Free-Robux-fur-drinosch.exe: Trojan:Win32/Sabsik.FL.B!ml (Microsoft)

TwitchShop Ad Bot 1.0.6.exe: Backdoor.PHP.yj (Jiangmin)

base.exe: TrojanDownloader.Pyfatget.e (Jiangmin)

fn.exe: HEUR:Trojan-Banker.Win32.Clipbanker.b (Kaspersky)

creal.exe: Trojan:Win32/Phonzy.A!ml (Microsoft)

zobato2.scr: HEUR:Trojan-PSW.Python.Luna.gen (Kaspersky)

mitmweb.exe: Malware.AI.273182600 (Malwarebytes)

main.exe: Program:Win32/Wacapew.C!ml (Microsoft)

NitroDumpz-Updater.exe: Trojan:Win32/Wacatac.B!ml (Microsoft)

test rml.exe: W32.Common.4F5989E5 (Bkav)

Raft-Hard-Survie.exe: Win32.Trojan-Stealer.LunaGrabber.EYQP0B (GDATA)

text.exe: Python:KeyLogger-BO [Trj] (AVG)

PyInstaller.exe: Malware.AI.1280676777 (Malwarebytes)

try.exe: Trojan:Win64/CrealStealer.AMJ!MTB (Microsoft)

00040f10415f1c993c0d9cf46ca5e2f013cd9e9b4e935f7fffd6dc1d98333cc3.file: Trojan:Win32/Phonzy.B!ml (Microsoft)

defender.exe: Trojan-Ransom.Win32.Blocker.zmab (Kaspersky)

Đến đây, mặc dù có thể "bung" từng file để phân tích sâu hơn, nhưng có thể nói rằng số lượng mã độc đã quá lớn so với khuôn khổ bài viết. Và, có lẽ đến đây cũng đã là đủ để khẳng định rằng streamer Độ Mixi thật sự đã gặp rắc rối lớn. Do mỗi một mã độc được lập trình với một mục đích khác nhau, rất khó để có thể liệt kê đầy đủ rằng hacker đã khai thác được những gì từ máy tính của streamer này.

Sau khi bị hack kênh YouTube, Độ Mixi đã làm việc với đại diện của Google để lấy lại kênh. Đây là một điều không mấy ngạc nhiên, do Độ Mixi không phải trường hợp YouTuber lớn đầu tiên bị hack kênh để livestream tiền ảo. Google đã quá "quen" với các tình huống này và đều đã chuẩn bị sẵn các phương án dự phòng nhằm phục hồi kênh và tài khoản.

Tuy nhiên, cũng trong buổi stream hôm qua, đích thân Độ Mixi đã xác nhận hệ thống camera giám sát của anh cũng đã bị hack. Sau đó, cũng ngay trên stream, Độ Mixi mất thêm quyền kiểm soát tài khoản Steam với lượng game và kho đồ được ước tính có trị giá cả tỷ đồng. Liệu với những tình huống này, Độ Mixi có được hỗ trợ "tận tình" như YouTube?

Tính đến thời điểm bài viết, tài khoản Steam của Độ Mixi vẫn chưa được phục hồi. Và với lượng mã độc lớn như trên, rất có thể sẽ có thêm nhiều dữ liệu của streamer này bị khai thác trong tương lai.

 

Thứ Năm, tháng 4 11, 2024

GoJek::How We Manage a Million Push Notifications an Hour

 

GoJek - Một đơn vị đang hoạt động trên lĩnh vực digital logistic & transport mà các anh chị em hẳn không còn thấy lạ lẫm, hoặc thậm chí cũng đã sử dụng tới dịch vụ của họ. Hôm nay nhân dịp mình đọc được bài viết của Go Jek mô tả về hệ thống push notification của họ ở đây: How We Manage a Million Push Notifications an Hour, mình cũng thấy khá là thú vị. Và trên phương diện người làm liên quan tới công nghệ, cộng với mò mẫm tìm hiểu trên internet, thêm 1 chút lý thuyết (lý thuyết nhé) mà mình có trong quá trình học cloud, aws/google services... mình muốn chia sẻ thêm một chút về mặt giải pháp công nghệ, phương án giải quyết vấn đề trên quan điểm thu lượm và góp nhặt được.
Về lý thuyết mình đã có, thì thông thường 1 hệ thống push notification cũ (dễ sẽ được viết bằng python + mysql) có thể gặp nhiều vấn đề về performance như:
  • Latency lớn gây chậm các service yêu cầu.
  • Service quá tải vào các thời gian cao điểm dẫn tới mất push.
  • Failed rate liên quan tới network với firebase lớn do tần suất call dày đặc.
  • Quản lý token không hiệu quả, xuất hiện duplicate token và nhiều token inactive gây chậm quá trình push.
  • Thiết kế DB dạng normalized không phù hợp dẫn tới việc tất cả các request push đều cần join 3 table.
  • Sử dụng nhiều tài nguyên CPU và RAM
Ngoài ra hệ thống cũ này chưa track được tỷ lệ thành công của mỗi lần push, cũng như truy vết hành động push từ các service nội bộ khác. Đơn giản với mỗi request nhận được, Push API sẽ gọi list token của user từ Token store và gửi yêu cầu push lên Firebase API
Trên lý thuyết, mình cần giải quyết các nút thắt bởi DB (database) và API.
Về cơ bản, database sẽ lưu 2 loại dữ liệu chính:
  • Push token (FCM token) của user: Update ít, đọc theo list nhiều, nhiều data bên lề như thông tin thiết bị, thông tin hệ điều hành cần lưu cùng.
  • Push log chứa log và kết quả push: Insert + update rất nhiều, đọc ít.
Phần Push API sẽ chủ yếu nghe traffic request push từ các service nội bộ. Để quá trình này diễn ra nhanh chóng và không bắt các service khác phải chờ thì flow như sau:
  • Nhận yêu cầu push từ service nội bộ
  • Tạo job với unique job-id
  • Push job vào Job Queue
  • Trả lại job-id cho service để trace về sau
Bằng việc đơn giản hóa phần việc của Push API và thiết kế lại DB mình sẽ giải quyết được 3 vấn đề: latency của API, các vấn đề liên quan tới quản lý tokenperformance của việc tìm token cho từng request.

Thiết kế job worker

Các bạn đọc bài viết của Go Jek mình đề cập ở trên thì sẽ thấy phần thiết kế job worker của họ khá sơ sài khi chỉ nhắc tới việc xử lý mỗi yêu cầu push bằng 1 job. Với cách implement truyền thống 1 job dạng:
  • Insert Push log vào DB
  • Filter token của user từ DB
  • Build push request dựa vào list token
  • Call Firebase API
  • Update kết quả push vào DB
thì 1 job push sẽ mất trung bình 300~400ms để xử lý. Hệ thống sẽ cần scale số lượng worker lên tương đối lớn để đạt hiệu suất sử lý song song lớn.
Tuy nhiên trong hệ thống này các bạn sẽ thấy 2 điểm bottleneck ảnh hưởng tới performance của hệ thống như sau:
  • Insert log và update kết quả làm tăng load database
  • Call API tới bên thứ 3 (ở đây là Firebase API) có giới hạn và độ trễ lớn do network
Để giải quyết được 2 vấn đề này, kỹ thuật batch processing nội bộ trong từng instance Job worker sẽ là tối ưu. Tức là gộp chung 1 loạt những request giống nhau vào 1 lần call DB, API thông qua batch.
Cũng đơn giản thôi, những bài toán xử lý dữ liệu lớn, có sự đồng bộ nhất định giữa các bản ghi... thì sử dụng batch luôn sẽ được nghĩ tới đâu tiên. Thế nhưng có mạnh thì sẽ có yếu thôi. Batch processing là một kỹ thuật khó và xử lý được nó đòi hỏi các bạn phải tính toán thật cẩn thận về các vấn đề liên quan tới error, retry, report. Batch là đồng bộ nên thay vì khi phát sinh sự cố trên mỗi push riêng lẻ, thì phương án này sẽ có sự ảnh hưởng hàng loạt tới vài trăm tiến trình khác trong cùng batch... nếu như việc retry không được xử lý cẩn thận.
Firebase API cũng hỗ trợ batch request lên tới 500 message/call thì việc tận dụng batch đã giảm đi rất nhiều thời gian chờ API call (do giảm số lượng request) cũng như tài nguyên của database (do giảm số query đơn lẻ). Điều này có thể đáp ứng trên 1000 push/s, tức là 3,6 triệu push / giờ chỉ với 1 worker và tiêu thụ lượng tài nguyên rất khiêm tốn.
-from: gojekengineering blog

Hành Trình Tìm Kiếm Sự Phấn Khích Trên Máy Chủ TGHMFAM

Trong một thế giới hoàn mỹ FAM nơi mà mọi người luôn sống vui vẻ và hạnh phúc, có một chàng trai tên là Duy. Một người yêu thích trò chơi tr...