Viết các mã tuyệt vời với các API P8 FileNet của IBM,
Phần 2: Thám thính công việc của chính bạn
Giới thiệu
Nếu bạn đang sử dụng các API của P8, thì nhiều khả năng là bạn tham gia vào vic viết các ứng
dụng mc doanh nghiệp. Nếu bạn tham gia vào vic viết các ứng dụng mức doanh nghiệp, thì
sớm hay muộn, hiệu năng cũng sẽ trở thành mục cao nhất trong danh sách ưu tiên của bạn. Ngay
cả khi hiệu năng đã rất tuyệt trong môi trường phát trin cô lập của bạn, thì đôi khi vẫn rất khó
để dự đoán những gì sẽ xảy ra khi ng dụng của bạn được trin khaiới áp lực ti thực tế của
nhiều người sử dụng. Các bài viết tới sẽ bàn về mt số kỹ thuật mã hóa cụ thể để có hiệu năng tốt
nht. Bài viết này đặt nền tảng cho việc đó bằng cách bàn vmt số công cụ và k thuật để biết
bạn đang đưa lên mạng những dữ liệu gì. Nó có vẻ như tạm thời chệch hướng khỏi những điều
căn bản thiết thực khi mã hóa, nhưng bạn sẽ có các thông tin có giá trị khi bạn đọc các bài viết
tới của loạt bài viết này và khi bạn phát trin các ứng dụng của riêng nh.
Đối với rất nhiều ứng dụng, có hai nhân tố then chốt điều khiển hiệu năng:
Trước hết, hiệu suất tổng thể thường bị chi phối bởi số lượng các cuộc gọi mạng mà các
ứng dụng khách của bạn gọi vào các máy chủ P8. Tùy thuc vào bạn hỏi ai, các cuộc gi
mạng có thể là: cuc gọi khứ hi (R/Ts), gọi thủ tục t xa (RPCs), truy cập máy chủ và
nhiều tên tương tự khác. Tất cả những tên gi khác nhau ấy đều cùng chỉ một việc: mạng
đường ống dính líu đến việc truyn yêu cầu từ máy khách đến máy chủ và việc y ch
tính toán và truyền về đáp ứng. Trong môi trường phát triển, cuộc gọi RPC có thể chỉ cn
vài chục hoặc vài trăm mili giây. Thực vậy, hiếm khi mt cuộc gọi RPC của P8 cần đến
mt phần đáng kể của một giây trong một môi trường cô lập. Trong môi trường chịu tải
đầy đủ, khoảng thời gian này tăng nhanh vì phi ganh đua với nhau trên mạng, tại máy
chvà trong mt số trường hợp, tại máy khách. Khi mi thứ bị khuyếch đại, việc loi b
hoặc gim quá tải đến hết mức có thlà đáng công làm. Đối với hai ng việc riêng biệt
cần phải được thực hiện trên máy chủ P8, thì luôn rẻ hơn (ngoại trừ các trường hợp khó
khăn thực sự) nếu bn thể thực hin chúng bng mt RPC duy nhất thay vì hai RPC.
Thứ hai, hiệu năng bị ảnh hưởng bởi số lượng dữ liệu tức là slượng byte – thực sự
được truyn đi trên mng trong một cuộc gọi RPC. Đây không chỉ là vấn đề của bộ định
tuyến mạng có thể x các bit nhanh như thế nào. Các dữ liệu được truyền đi càng
nhiều, thì các API trình khách và các đối tác máy chủ của chúng càng cần phi làm việc
nhiều hơn để lắp ráp và diễn giải các yêu cầu. Trong môi trường P8, hầu như kích thước
của các yêu cầu ln luôn chỉ là một phần nhỏ của kích thước của các đáp ứng, vì vậy
việc cố gắng để điều chỉnh kích thước các yêu cầu hiếm khi đáng công. Việc điều chỉnh
kích thước của các đáp ứng RPC thường có thể có tác động đáng kể về hiệu năng, và nó
luôn đáng được ít nhất là nghiên cứu.
Bài viết này chbàn vmt số điều, chúng sẽ giúp bạn có nhận thức về những gì ng dụng
của bạn đang làm ở cả hai lĩnh vực đó.
Công cụ dò tìm trên mạng giúp bn tra tìm dliệu ở mức thấp đang truyn trên mng.
Mặc dù nghe có vẻ phức tạp, nhưng các công cụ hiện đại trong lĩnh vực này khá dễ vận
hành, và chúng có thể làm đơn giản việc khoan sâu vào các vùng cthể.
Bằng cách ghi nhật API Java nội dung của P8, bạn thlệnh cho API cho bạn biết
những gì đang thực hiện tại các điểm khác nhau. Đây là mt kỹ thuật tốt để đánh giá
cả về số lượng và kích thước của các RPC.
Bạn có thể sử dụng cá thể ObjectDumper trong mã phát trin của riêng bạn để chụp
nhanh những gì ở bên trong mt đi tượng API của P8. Đây là việc hữu ích để đánh
giá số lượng dữ liệu mà mt đối tượng đang chuyên chở ở sau hậu trường và cũng để thy
sự khác biệt của các hoạt động khác nhau với dữ liệu đó.
Sử dụng công cụ dò vết trên mạng mng
Trình thám thính (sniffer) gì?
Dò vết trên mạng có hàm ý chung là việc bắt gicác dữ liệu thô truyn trên mạng. Các công cụ
này đôi khi được gọi là bộ phân tích mng, bộ thám thính mạng (được đặt theo tên của ông
Sniffer - nhà phân tích mạng), hoặc là b thám thínhi. Các b thám thính ban đầu là các b
phận chuyên dùng của thiết bị độc lập có thể được gắn kết vật lý tới một phân đoạn mạng. Các
thiết bị như vậy vẫn còn tn tại, nhưng hiện nay có các phần mm tương đương với chúng để sử
dụng hàng ngày. Mặc dù công dụng chính ban đầu của các bộ thám thính là để chẩn đoán các
vấn đề mạng ở mức độ khá thấp, đôi khi chúng cũng có thể được sử dụng rất hiệu quả để có được
bức tranh về truyn thông giữa các thành phần của mt ứng dụng phân tán. Dò vết trên mạng
nghe vlà mt chủ đề phức tạp và khó nắm bắt cho bất kỳ ai, trừ các chuyên gia, nhưng nó rất
dễ tiếp cận đối với các nhà pt trin trung bình. Các công ccó sẵn ngày nay thường có giao
diện người dùng tốt và tài liệu hướng dẫn khá dễ hiểu.
Bên cạnh việc bắt và phân tích luồng lưu thông mng đang hoạt động, các trình thám thính cũng
có thể được sử dụng để ghi lưu các luồng lưu thông thành một tệp tin hoặc để đọc tệp tin các
luồng lưu thông đã được ghi lưu. Tệp tin như vậy thường được gọi là các tệp tin nắm bắt. Có các
đnh dạng tệp tin bắt luồng lưu thông theo chuẩn thực tế của ngành công nghiệp, do vậy nhiều cơ
hi (nhưng không dám chắc) rằng mt tệp tin bắt luồng lưu thông do một ứng dụng thám thính
to ra có thể đọc được bằng mt trình thám thính khác.
Nếu bạn chưa có công cụ dò vết trên mng, thì bằng việc tìm kiếm Web theo bất kỳ một thuật
ngữ nào đề cập ở trên sẽ nhận được mt số lựa chọn thay thế phổ biến, bao gồm các công cụ mã
nguồn mở hoặc min p. Nhằm mục đích minh họa, bài viết này sử dụng Wireshark, một trình
thám tnh mã nguồn mở mạnh mvà phổ biến có sẵn tại trang Wireshark.org. Wireshark phiên
bản 1.0.5 được sử dụng cho bài viết này, nhưng nếu bạn sử dụng phiên bản cũ hơn hoặc một
công cụ hoàn toàn khác, t các khái niệm được thảo luận vẫn có thể áp dụng được và bạn không
gặp rắc rối nào. Mục tiêu của bài viết không phải là giúp bạn trthành mt chuyên gia về bất kỳ
công cụ thám thính cụ thể nào. Thay vào đó, bài viết này cung cấp cho bn mt cái nhìn lướt qua
các khả năng để bạn có thể tự mình tiếp tục khám phá.
Bắt gikết quả dò vết trên mng
Mục đích chính của trình thám thính (sniffer) phần mềm là lắng nghe luồng lưu thông qua chồng
giao thức nối mạng trên một máy tính mà không can thiệp vào lung lưu thông đó. Điều này
không hoàn toàn giống như lắng nghe chính trên mạng, nhưng cũng gần như thế nếu i về
những gì bạn sẽ làm. Bi vì trình thám thính cũng là mt chương trình chạy trên máy tính, điều
đầu tiên bạn phải nghĩ đến là bạn sẽ chạy nó trên máy tính nào. Đôi khi điều này bị chi phối về
mặt chức năng bởi những điều bạn đang cố gắng để kim tra. Trình thám thính chnhìn thấy
những thứ theo quan đim của máy tính đang chạy nó, và nó thường không thể nhìn thấy lưu
thông mng giữa hai hoặc nhiều máy tính khác. Thực vậy, trong nhiều trường hợp phức tạp hơn,
đôi khi cần phải chạy trình thám thính trên nhiều máy tính cùng mt lúc để các hoạt động có th
tương quan với nhau. Tuy nhiên, điều đó không cần thiết cho kịch bản này, bởi vì bạn chỉ phải
theo dõi các cuc gọi điểm ti điểm. Sự lựa chọn của bn rút lại chỉ còn là máy tính nơi mà API
máy khách của bạn đang chạy hoặc là máy tính nơi mà máy chủ P8 đang chạy. Giả sử bạn có
quyền truy cập như nhau vào cả hai máy tính, thì việc chạy nó trên máy tính khách của bạn có ý
nghĩa hơn. Điều đó cho phép bạn tránh các hỗn loạn nhỏ của các yêu cầu từ các máy kch khác
nếu máy chủ P8 của bạn được chia sẻ. Nếu máy chủ P8 của bạn không được chia sẻ hoặc có rất ít
hoạt động trên đó, thì slựa chn chỉ là vấn đề sao cho tin cho bạn mà thôi. Đối với các loại tác
vụ thường nhật trong kịch bn của bài viết này, t tnh thám thính phần mềm nói chung đặt
thêm một tảing việc ti thiểu lên máy chạy nó. Bài viết này giả sử bạn đang chạy trình thám
tnh trên máy khách, nhưng nếu không phải như vậy thì cũng khá dễ thy bạn phải làm khác đi
những gì.
Gi sử bạn có một ứng dụng đang chạy và muốn quan sát và điều chỉnh các nhân tố liên quan
đến hiệu năng được mô tả ở trên. Nếu bạn chưa có ứng dụng của mình và chỉ muốn có mt ứng
dụng đơn giản để chạy để xem các k thuật trong bài viết này làm việc như thế nào, thì bạn có
thể tải về ứng dụng mẫu HelloDocument tại bài viết đầu tiên của loạt bài viết này. mt số lưu
ý bạn nên xem xét khi chạy mt trình thám thínhng vớing dụng của bạn:
Hãy sử dụng truyn tải WSI thay vì truyền tải EJB. Truyn tải WSI sử dụng các XML
được truyn bằng cách sử dụng HTTP. Mặt khác, truyn tải EJB sử dụng các định dạng
giao thức quyết định bởi máy chủ ứng dụng đang được sử dụng. Nói chung, truyền ti
EJB sử dụng các định dạng nhị phân nén hoặc ngắn gọn. Các định dạng này rất tuyệt vời
cho truyền thông khách/chủ, nhưng chúng kxử lý khi giám sát luồng lưu thông mạng
mt cách trực quan.
Đừng sử dụng kiểu bảo vệ TLS/SSL trên các kết nối của bạn. Chính mc đích của nó,
bo vệ TLS/SSL làm cho không thể nhìn vào bên trong lung lưu thông đón bắt được.
Ngay cnếu mt bên thứ ba nghe toàn b cuộc đối thoại thiết lập kết nối TLS/SSL, thì
sẽ không thể giải mã được luồng lưu thông được bảo vệ tiếp nối sau. Trình thám tnh
không có bất kỳ sức mạnh huyn diệu nào để nhìn xuyên qua tấm màn che TLS/SSL.
Chạy không có bảo vệ TLS/SSL sẽ để l luồng lưu thông và các mật khẩu chưa mã hóa
cho những kẻ nghe lén tim năng, vì vậy bạn sẽ muốn sử dụng thông tin và các tài khoản
không nhạy cảm trong khi bạn chạy các thử nghiệm về trình thám tnh của mình. Bởi vì
nhiều khả năng là bn làm điều này trong một môi trường phát triển hoặc thử nghiệm,
nên rất dễ dàng để thu xếp.
Nếu như còn chưa đủ rõ ràng, những điểm nêu trên kết hợp cùng nhau có nghĩa là URI kết nối
của Máy nội dung của bn phải là mt URI HTTP (không phải là HTTPS và không phải là URI
không HTTP).
Cách làm chung là bật trình thám thính lên, chy ứng dụng, tắt trình thám thính và phân tích
luồng lưu thông mng. Hình 1 cho thấy bắt đầu phiên đón bắt. Mỗi dòng trong cửa sổ trên cùng
là mt gói tin IP đơn lẻ đã đón bắt được. Trong thuật ngữ của trình thám thính, các góin được
gọi là khung tin. Ch là nói nhẹ đi khi i rằng đây là một màn hình phc tạp và bận rộn với
người còn bngỡ. Đâu là dliệu đáng chú ý của RPC P8 mà bạn đang tìm? Tn thực tế, chúng
không có trong hình 1. Hình 1 cho thy chưa đầy mt giây đầu tiên của hoạt động mng, thm
chí chưa đủ thời gian để đổi sang cửa sổ khác và nhìn thấy ứng dụng của bạn đã bắt đầu.
Hình 1. Thông tin dò vết trên mạng dạng thô, chưa được lọc