TCP/UDP với Real-time/Long Tail

Nếu bạn không học về Networking, bạn chẳng phải quan tâm đến TCP và UDP làm gì. Tuy vậy, tôi muốn nhắc một chút tới TCP/UDP trước khi nói tới vấn đề chính của bài blog này (Real-Time vs Long Tail) để thấy rằng đôi khi trong cuộc sống, có rất nhiều pattern chung ở nhiều lĩnh vực khác nhau. Đây có thể sẽ lại là một bài blog hơi luẩn quẩn và hy vọng bạn sẽ giúp tôi làm rõ hơn những gì luẩn quẩn trong đầu tôi. :mrgreen:

———————————-

Một cách chung chung nhất, TCP và UDP là hai giao thức (quy định cách thức giao tiếp) mạng phổ biến trên Internet. Để truyền thông tin đi trên mạng, người ta chia nhỏ thông tin ra thành nhiều phần. Việc này giống như khi bạn chuyển nhà, nếu bạn có ô tô to, bạn có thể chuyển tất cả đồ đạc đi trong một chuyến. Nếu không có ô tô mà chỉ có xe máy hoặc xích lô, bạn có thể chia nhỏ đồ đạc ra thành nhiều chuyến và chuyển dần đi. Nói chung, giao thức hay bất cứ thứ gì xuất hiện thường sẽ dễ tồn tại hơn nếu được nhiều người sử dụng hơn, do vậy thông tin trên Internet cũng được chia nhỏ để truyền đi cho phù hợp với nhiều môi trường mạng và tốc độ khác nhau.

Cơ động là lợi thế của việc chia nhỏ, tuy vậy vấn đề lớn nhất của việc chia nhỏ là làm sao sau khi chia nhỏ và chuyển tới đích, chúng ta giữ nguyên hiện trạng thông tin/vật được truyền đi. Tôi chuyển 100 chiếc đĩa CD từ nhà cũ sang nhà mới và khi đến nhà mới thì chỉ còn 50 chiếc thì thật không chấp nhận được phải không? Đây là điểm khác biệt chính giữa TCP và UDP.

Với UDP, bạn chấp nhận mất mát để đảm bảo tốc độ. Ví dụ như các phần mềm streaming sẽ sử dụng UDP. Bạn có thể mất đi một vài khung hình nhưng bù lại đảm bảo tốc độ để bộ phim đang xem online không bị giật hình.

udp

Với TCP, tính toàn vẹn quan trọng hơn tốc độ. Tôi chấp nhận rằng có thể tôi đi bộ và cầm theo đống đĩa CD từ nhà cũ sang nhà mới cũng được, nhưng 100 cái đĩa quý của tôi không được phép sứt mẻ tẹo nào.

tcp(bản quyền hình và các thông tin thêm về TCP vs UDP có thể xem tại đây)

———————————-

Một người bạn làm trong ngành FMCG đã có lần chia sẻ với tôi rằng càng ngày thì việc quyết định xem hàng của bạn ý có bán được hay không sẽ không phải do nhà sản xuất quyết định mà là do … siêu thị (chỗ trưng hàng) quyết định. Bạn làm đủ mọi cách để người mua biết tới nhãn hàng của bạn nhưng toàn bộ siêu thị xung quanh người mua lại trưng hàng của đối thủ thì bạn cũng khó lòng chống đỡ được.

Long Tail có tầm quan trọng đặc biệt trong việc cải thiện khả năng trưng hàng của bạn. Tất nhiên không phải mặt hàng nào cũng có thể áp dụng Long Tail được. Mặt hàng đó phải có khả năng dễ dàng tìm kiếm, chi phí vật lý lưu trữ mặt hàng đó phải rẻ tới cực rẻ … Do vậy, thường những mặt hàng online sẽ dễ dàng thỏa mãn điều kiện này hơn. Amazon giải quyết bài toán này với các mặt hàng offline (sách) bằng cách số hóa chúng để lưu trữ và in ra khi người sử dụng cần.

Long Tail cũng có tầm quan trọng đặc biệt đối với các website bán các mặt hàng trực tuyến, ví dụ như bán nhạc số, bán phim số … Website tổng hợp thông tin (như Google News, Yahoo News, Baomoi…) hay Social News (như Digg, Mixx, Linkhay…) không phải là ngoại lệ trong số này. Nếu xét một cách thô thiển traffic của người dùng (lượt views) là đơn vị tiền tệ của các website liên quan tới thông tin, bạn có hai cách để làm tăng traffic : show ít tin nhưng mỗi một tin có nhiều người đọc (big head-tin hot) hoặc mỗi một tin của bạn có ít người đọc nhưng lại có nhiều tin được đọc (long tail-tin chuyên ngành). Ở đây xin bỏ qua khía cạnh show hàng cho Search Engine vì đấy lại là câu chuyện hơi khác có liên quan tới SEO, Content FarmsĐứng từ khía cạnh người sử dụng, mặc xác ông ba hoa gì thì tôi cũng chỉ quan tâm tới những gì tôi thích, vì vậy ông làm thế nào chỉ ra cho tôi cái tôi thích thì tôi sẽ đọc. Với các trang thông tin thì cái người dùng thích không chắc đã phải là cái mới nhất đối với người dùng. Ví dụ, một bài báo về chuyên ngành cách đây 1 tuần mà tôi chưa đọc thì vẫn mới toanh đối với tôi, nhưng thông tin về chứng khoán cách đây 1 tuần thì chả có ý nghĩa gì cả.

long-tail(bản quyền hình của Edgewater Tech Blog)

———————————-

Mạng xã hội xuất hiện kéo theo việc thể hiện thông tin theo kiểu stream. (*)Real-time stream giống y hệt như việc bạn đứng trên vỉa hè của đường một chiều và nhìn mọi người đi qua bạn lần lượt lần lượt. Ai quen, ai bạn thấy thích thì bạn chào, bạn nói chuyện, ai không quen, không thích thì bạn bỏ qua. Đọc tin trên Baomoi chả hạn, với cỡ 6000 tin một ngày thì chắc chắn không phải tin nào bạn cũng quan tâm (mà thậm chí chắc chưa tới 5% số tin là bạn quan tâm), nếu thể hiện theo kiểu stream thì bạn cứ để thông tin ào ào qua, tin nào hay thì bạn click.

Facebook trong một chừng mực nào đó thì lại khác. Bạn như một ông cha cố trong một cái làng be bé, chờ từng con chiên một đi qua để xưng tội. Ai bạn cũng quan tâm/phải quan tâm. Bạn có quyền không đưa ra lời khuyên gì cả cho những lời xưng tội đó, thế nhưng nếu bạn không đưa ra lời khuyên, có thể tuần sau, tháng sau… con chiên của bạn sẽ sang xưng tội ở … làng bên cạnh. Bạn có thể add một đống người, nhưng rồi bạn sẽ remove người đó đi nếu bạn không giao tiếp với người ta. Bạn có thấy bóng dáng của TCP vs UDP ở đây không?

———————————-

Vậy rốt cuộc, điều đáng lo lắng ở đây là gì? Là khi xu hướng real-time stream phát triển, liệu còn chỗ để show những mặt hàng cũ nhưng có giá trị với người dùng hay không? Nếu còn, show như thế nào? Giống như siêu thị chỉ có một lượng cố định chỗ để bày hàng, con người cũng chỉ có một lượng thời gian cố định trong ngày (24h/ngày, 24x60x60 giây/ngày) để xử lý thông tin.

Đây là chỗ mắc mớ và từng trường hợp một sẽ có câu trả lời khác nhau. List các điều nho nhỏ tôi nghĩ liên quan tới việc này (xét riêng đối với mặt hàng là tin tức) để có gì blog tiếp (có thể đúng, có thể sai):

  • Real-time và mới là hai khái niệm khác nhau. Đương nhiên người ta nghĩ và hy vọng rằng real-time là tiếp nhận các thông tin mới một cách liên tục, nhưng mới với người này không có nghĩa là mới với người khác.
  • Tùy từng loại thông tin mà giá trị của nó là khác nhau. Có những loại thông tin nếu không mới thì chẳng có giá trị với số đông (1), có loại thì không mới vẫn có giá trị với số đông(2), có loại thông tin không mới thì chỉ có giá trị với thiểu số(3). Tin tức hầu như thuộc loại (1) và một ít là thuộc loại (3).
  • Real-time không phải là không search được nhưng  càng real-time thì sẽ càng không có đất sống cho search(?).
  • Càng chấp nhận real-time, có nghĩa là càng chấp nhận có nhiều thông tin sẽ mất (giống UDP). Hy sinh thời gian kiểm chứng và tìm tòi thông tin cho việc hưởng thụ các thông tin có sẵn.
  • Đơn vị thông tin càng chia nhỏ (bài viết – đoạn viết – twit) thì dường như giá trị sẽ giảm nhanh hơn theo thời gian. Bù lại, đơn vị thông tin nhỏ không hề làm giảm đi tính quan trọng của nó.
  • Khó lòng để đoán được ngữ cảnh của stream, do vậy việc xác định và thêm thông tin (bài viết, quảng cáo) phù hợp với stream là việc khó khăn.
  • Real-time vẫn phù hợp với Long Tail vì từng nhóm người khác nhau sẽ có những nhu cầu cập nhật thông tin khác nhau (via @Tai Tran).
  • Có thể thay đổi thứ tự của thông tin hiện ra trên real-time stream (nếu việc thay đổi này vẫn đảm bảo giá trị của thông tin) (via @Tai Tran).

———————————-

Update 4Jan2010 : (*) Chỗ này chắc phải là Public Stream thì mới nói như thế được vì nếu theo giải thích về Real-Time ở đây thì Real-Time Web phải có một thuộc tính là “is public and has an explicit social graph associated with it“. Đã có social graph dính vô là phải có quen biết nhất định rồi.

 

  • http://tuandinhs.com tuandinh

    Mình nghĩ thay vì dùng khái niệm TCP/UDP để minh họa cho bài này thì dùng luôn khái niệm của TCP và UDP: Connection-oriented và Connectionless thì sẽ rõ nghĩa hơn nhiều. TCP là connection-oriented, UDP thì mang tính Connectionless.

  • http://www.baomoi.com ePi.Longo

    Yep, tuy vậy một trong những điểm khác nhau chính giữa Connection-oriented và Connectionless là ở tính toàn vẹn dữ liệu và đây là điều mình muốn nói tới. Hy sinh sự toàn vẹn dữ liệu để có dữ liệu ở thời gian thực, dữ liệu càng truyền ở mức gần với thời gian thực thì càng đòi hỏi nhiều thứ (ví dụ : bandwidth, CPU speed…) để bảo toàn.

  • http://tuandinhs.com tuandinh

    À ý mình muốn nói về nghĩa cơ. Tạm gán cho Long Tail khái niệm Connection-oriented và Real time là connectionless thì ta dễ thấy ý của bạn viết ở trên: Long tail thì kết-nối-hướng-đối-tượng, tức là ta dễ nhóm, dễ phân loại nhóm đối tượng đối với từng content stream. Còn Real Time thì khó-mà-định-hướng-được ( tạm dịch từ chữ connectionless).

  • http://www.baomoi.com ePi.Longo

    Mình đính chính lại một chút về connection-oriented và connectionless. Thực ra hai connection này đều có hướng đối tượng, điều biết rõ điểm đầu và điểm cuối. Connectionless không có nghĩa rằng gói tin được gửi đi lung tung, không có phương hướng mà chỉ có nghĩa rằng gói tin được gửi đi trong khi không biết rằng đầu bên kia có sẵn sàng nhận nó hay không (bạn có thể tham khảo thêm ở đây : http://en.wikipedia.org/wiki/Connectionless_protocol).

    Còn lại, mình cũng đồng ý với bạn và đã viết trong bài blog rằng real-time thì khó lòng mà đoán được ngữ cảnh. Liệu có giống forum không nhỉ? Comment ở một thread của forum cũng có thể đổi hướng nhanh và lệch hẳn so với chủ đề ban đầu.

  • http://tuandinhs.com tuandinh

    Chữ connectionless do mình tạm dịch trong ngữ cảnh của Real time nên mới dịch vậy ấy mà ;)
    Mình nghĩ cái này giống forum ở bản chất truyền thông. Ở forum, 1 người sẽ có ảnh hưởng khá lớn đến 1 số đông người khác. Ta tạm gọi là 1 group trong rất rất nhiều group trên forum. Thông tin do đó sẽ phát tán kiểu gì là do những group nhỏ này truyền bá đi theo quy ước, cách hiểu và mối quan tâm riêng từng group này.
    Có khác chăng chỉ là khác về tốc độ, tần suất. Nhanh quá dẫn đến không kịp phân luồng, mất thông tin. Chậm như Long tail thì phân luồng nó dễ, định hướng dễ, bù lại sẽ chậm cập nhật hơn, áp dụng với những tin có giá trị ít biến đổi.
    Như bạn nói đấy, tin về vàng, dầu mỏ, chứng khoán … của ngày hôm qua thì chỉ còn giá trị phân tích thống kê.Còn tin chuyên ngành, review về sản phẩm này nọ thì giá trị ít biến đổi hơn. Cái này tùy vào đối tượng, tùy vào môi trường mà sử dụng chứ so sánh bao giờ cho ra :D .