Chia để trị, Xu hướng phân tán


Nếu để ý một chút, vài năm gần đây đang có xu hướng phân tán không chỉ về công nghệ. Ví dụ như các trang thương mại điện tử, tiki, shopee, lazada, họ đều có trạm phân phối riêng nằm rải rác khắp nơi, hay như điện toán đám mây cũng là một dạng phân phối dữ liệu, Blockchain hay Microservices cũng được phân phối. không có ngoại lệ.

Vậy tại sao lại có xu hướng này, hãy cùng thử tìm hiểu nhé!

Bắt đầu từ khi Pháp xâm lược nước ta. Chính sách cai trị của thực dân Pháp là chia để trị, giữa lương và giáo, trong từng dân tộc, giữa dân tộc Kinh với các dân tộc khác. Sau khởi nghĩa Giáp Dần, chúng bắt người Tày đàn áp người Dao và xuyên tạc rằng người Dao nổi dậy giết người Tày để lấy gạo, người Kinh để lấy muối. Âm mưu của địch là chia rẽ lực lượng, phá vỡ khối đoàn kết toàn dân, đoàn kết các dân tộc để chúng dễ dàng đàn áp, thống trị.

Hoặc Trung Quốc đang lợi dụng dịch COVID-19, thực hiện chính sách chia để trị để chinh phục châu Âu và có thể sớm khiến một số nước “chia tay” với EU, theo một chuyên gia cảnh báo. Báo Daily Express.

Đó là 2 ví dụ điển hình cho phương pháp mà tôi nhấn mạnh ở tiêu đề bài viết. Nhưng bạn tự hỏi xu hướng phân tán này có liên quan gì đến phương pháp chia để trị này.

Nói, nó có một cái gì đó để làm với điều đó. Cứ bình tĩnh mà đọc!

Thường thì một nhiệm vụ khó khăn trong quá trình thực hiện, hoặc một mục tiêu quá lớn, chúng ta có xu hướng chia nhỏ mọi việc để thực hiện. Xâm lược một quốc gia hoặc liên minh rất khó, chúng sẽ phải bị cắt thành nhiều mảnh để dễ xử lý hơn.

Trong cuộc sống của bạn cũng vậy, bạn có những nhiệm vụ lớn trong ngày, vì vậy bạn nên chia nhỏ chúng ra và xử lý từng nhiệm vụ một. Khá dễ hiểu phải không nào!

Còn phân bố kia, một máy tính dù mạnh đến đâu cũng chỉ đạt ngưỡng xử lý nhất định nên để xử lý cùng lúc nhiều tác vụ của máy tính thì tất nhiên chúng phải phân tán.

Trong thuật toán có một phương pháp gọi là chia để trị (Divide and Conquer). Đây là một phương pháp quan trọng trong việc thiết kế các thuật toán. Ý tưởng của phương pháp này đơn giản là chia một vấn đề lớn thành các vấn đề nhỏ hơn, và chia các vấn đề nhỏ thành các vấn đề thậm chí còn nhỏ hơn. Tiếp tục chia cho đến khi các bài toán con này không chia được nữa thì ta mới giải các bài toán nhỏ nhất này và cuối cùng tổ hợp nghiệm của tất cả các bài toán con để tìm nghiệm của bài toán ban đầu.

Ý tưởng này sẽ được chia thành 3 bước chính đó là chia nhỏ, giải các bài toán con và kết hợp các giải pháp.

Từ ý tưởng trong thuật toán như vậy mà Cloud ra đời. Đám mây phân tán đề cập đến việc phân phối các dịch vụ đám mây công cộng đến các địa điểm bên ngoài trung tâm dữ liệu vật lý của nhà cung cấp đám mây, nhưng vẫn do nhà cung cấp kiểm soát. Đám mây phân tán cho phép các trung tâm dữ liệu được đặt ở bất cứ đâu.

Sự ra đời của internet kết hợp với ý tưởng phi tập trung về đám mây giúp chúng ta không còn phải mang theo bất kỳ công cụ lưu trữ dữ liệu nào trong người, bạn có thể đi bất cứ đâu để lấy dữ liệu đó. mà không quan tâm rằng dữ liệu của bạn được lưu trữ trên máy vật lý nào và ở quốc gia nào.

Các nhà phát triển đám mây đã làm việc đó cho bạn rồi, phân mảnh dữ liệu theo vị trí (location) bạn đi đâu, có router nào điều hướng đến cùng dữ liệu họ chia nhỏ đến đó giúp bạn lấy dữ liệu nhanh nhất có thể.

Một công nghệ Blockchain mới nổi gần đây, cũng theo phương thức chia nhỏ rồi phân phối như trên. No là một loại sổ cái phân tán, một danh sách được mở rộng theo trình tự thời gian gồm các bản ghi giao dịch được ký bằng mật mã, không thể hủy bỏ được chia sẻ bởi tất cả những người tham gia trong mạng.

Mô hình chuỗi khối hoàn chỉnh bao gồm năm yếu tố: Sổ cái được chia sẻ và phân tán, sổ cái bất biến và có thể theo dõi, mã hóa, mã thông báo và cơ chế đồng thuận công khai phân tán.

Sau đó, Tiki, shopee hay lazada cũng phát triển theo ý tưởng này, đúng hơn là từ Amazon (một trang thương mại điện tử được sử dụng từ rất sớm, được đề cập trong cuốn sách “Amazon.com sự phát triển thần tốc”) phát triển từ mô hình không có kho hàng cố định tại tất cả, họ có thể phân phối tất cả các mặt hàng cho mọi người ở bất cứ đâu. Chỉ cần bạn đặt hàng tại một địa chỉ nhận hàng nhất định, họ sẽ phân loại và ghi rõ khu vực giao hàng gần bạn nhất có thể, vừa tiết kiệm chi phí vận chuyển, vừa tiết kiệm thời gian chờ đợi của khách hàng .

Cuối cùng, điều tương tự cũng xảy ra với kiến ​​trúc công nghệ mà tôi đã đề cập trong bài viết kiến ​​trúc hướng dịch vụ và kiến ​​trúc microservice. Bạn đọc có thể tìm lại tại

# http://blog.ntechdevelopers.com/service-oriented-architecture-soa-kien-truc-huong-dich-vu/
# http://blog.ntechdevelopers.com/microservices-architecture-kien-truc-microservices/

Điều đáng nói ở đây là sự chuyển đổi từ kiến ​​trúc nguyên khối sang các kiến ​​trúc trên bắt nguồn từ việc giải quyết các vấn đề một cách độc lập hơn so với ý tưởng chia để trị mà tôi đã nói đến cho đến giờ. Đầu tiên, người thiết kế chia các nhiệm vụ thành các nhóm độc lập, chẳng hạn như quản lý người dùng, quản lý bán hàng, v.v., với mỗi nhóm nhiệm vụ hoạt động độc lập với nhau, do nhóm phát triển phát triển. Phát triển cũng có thể được chia thành các nhóm để phát triển. Nhóm A thực hiện phần quản lý người dùng, nhóm B thực hiện phần quản lý bán hàng. Đến khi tích hợp, bạn sẽ có một hệ thống hoàn chỉnh.

Từ việc phân chia nhiệm vụ như vậy, họ sẽ đặt ra câu hỏi nếu sản phẩm quản lý bán hàng không hoạt động thì cả hệ thống sẽ ngừng hoạt động! Vì vậy, ý tưởng là đẩy các nhóm tác vụ đó thành các dịch vụ hoặc máy chủ riêng biệt để không chỉ độc lập với các tác vụ xử lý mà còn độc lập với các hoạt động vật lý.

Mọi ý tưởng trong công nghệ đều bắt nguồn từ cuộc sống. Cách giải quyết vấn đề chia để trị này thực sự rất hay và đáng để mở rộng ra ngoài cuộc sống.

Còn bạn, bạn nghĩ sao về điều này? Hãy cho biết ý kiến ​​của bạn bên dưới phần bình luận nhé!

--
P/s: Đây là bài viết làm tiền đề cho loạt bài viết tiếp theo của mình về microservice và distributed data via citus. Hi vọng các bạn đón đọc.
Đọc các bài viết khác tại
http://blog.ntechdevelopers.com

Leave a Comment