Trong phần nỏy, chỷng ta tập trung vỏo vấn đề đồng bộ cõc file ở xa, trong trường hợp khi server khừng cụ quyền truy nhập tới file tham chiếụ Những thuật toõn đọ biết đối với vấn đề nỏy cụ khõc biệt so với bộ nờn deltạ Chỷng ta sẽ bỏn về 2 hướng nghiởn cứu chợnh: (1) hướng nghiởn cứu dựa trởn chuỗi dấu vón tay được thực hiện theo thuật toõn rsync tuy nụ khừng đạt được giới hạn tối ưu nỏo, vỏ (2) dựa trởn việc từ mỏu đồ thị, hướng nỏy đạt được sự thi hỏnh tối ưu dưới cõc mừ hớnh hiện thời cho khoảng cõch file, nhưng dường như nụ khừng phỳ hợp trong thực tế. Chỷng ta cũng sẽ bỏn về cõc vấn đề liởn quan trong việc đõnh giõ sự tương đồng của file vỏ cõch điều hoỏ tập cõc bản ghi trong một databasẹ
2.5.3.1 Thuật toõn rsync
Chỷng ta sẽ mừ tả về thuật toõn đồng bộ file được triển khai rộng rọi rsync của Tridgell vỏ MacKerras. Một hướng nghiởn cứu tương tự cũng được thực hiện bởi Pyne[7].
Giả sử ta cụ 1 cuộc giao tiếp giữa 2 bởn thừng qua điện thoại, mỗi bởn cụ 1 bản copy của một cuốn sõch. Bóy giờ, giả sử 2 bản copy cụ thể khõc nhau ở một vỏi chỗ nỏo đụ. Bằng cõch nỏo chỷng ta cụ thể tớm ra 2 cuốn sõch cụ giống nhau hay khừng, vỏ nếu khừng thớ chỷng khõc nhau ở chỗ nỏo vỏ khõc nhau như thế nỏo, mỏ khừng cần đọc hết toỏn bộ cuốn sõch qua điện thoạỉ Cóu trả lời của cóu hỏi đầu tiởn rất đơn giản, bằng cõch dỳng hỏm checksum (MD5 chẳng hạn) vỏ so sõnh checksum của 2 cuốn sõch, như thế nụ sẽ xõc định được 2 cuốn sõch cụ giống nhau hay khừng. Cóu
trả lời cho cóu hỏi thứ 2 thớ khụ hơn một chỷt. Một hướng nghiởn cứu ban đầu lỏ người ta chia cuốn sõch thỏnh 2 nửa, nửa đầu vỏ nửa cuối, sau đụ sẽ thực hiện checksum trởn mỗi nửa, cho tới khi vị trợ khõc nhau được tớm rạ Tuy nhiởn, hướng nghiởn cứu nỏy sẽ bị sai trong một trường hợp hết sức đơn giản, khi một cuốn sõch chứa thởm một số từ vỏo đầụ Do đụ, một hướng nghiởn cứu khõc, mạnh hơn lỏ cần thiết mặc dỳ ý tưởng cơ bản vẫn lỏ sử dụng checksum trởn cõc khốị
Chỷng ta sẽ mừ tả vỏ chọn lọc thuật toõn rsync. Ý tưởng cơ bản lỏ giải quyết vấn đề về sự sắp xếp thẳng hỏng bằng cõch tợnh checksum khối cho file tham chiếu, vỏ so sõnh cõc checksum nỏy với cõc checksum khối tương ứng của file hiện thời, vỏ với checksum của tất cả cõc vị trợ cụ thể của cõc khối trong file hiện thờị Kết quả lỏ, server biết được đoạn nỏo của file hiện thời đọ tồn tại trong file tham chiếu, vỏ phần nỏo mới cần giao tiếp với client. Để đạt được hiệu quả, 2 checksum khõc nhau sẽ được truyền thừng tới server, tuy nhanh nhưng khừng đõng tin cậy, muốn đạt được sự tin cậy hơn thớ cần đắt hơn nhiềụ
1. Tại client:
(a) Phần fold trong cõc khối Bi = fold [ib,(i+1)b-1] của kợch thước b được xõc định sau
(b) Với mỗi khối Bi, tợnh 2 checksum, ui = hu (Bi) vỏ ri = hr (Bi) vỏ truyền chỷng tới server. Ở đóy, hu lỏ hỏm checksum khừng đõng tin cậy nhưng nhanh, vỏ hr thớ đõng tin cậy nhưng đắt.
2. Tại server:
(a) Với mỗi cặp checksum nhận được (ui,ri), thởm một thực thể (ui,ri,i) vỏo cấu trỷc dữ liệu từ điển, sử dụng ui như một giõ trị khoõ.
(b) Thực hiện một bước trong fnew, bắt đầu tại vị trợ j=0, vỏ liởn quan tới cõc bước sau:
(i) Tợnh hỏm checksum khừng đõng tin cậy hu(fnew [j, j+b-1]) trởn khối bắt đầu tại j.
(ii) Kiểm tra từ điển xem cụ khối nỏo cụ checksum khừng tin cậy phỳ hợp khừng
(iii) Nếu tớm thấy, vỏ nếu cụ checksum đõng tin cậy cũng phỳ hợp, truyền một con trỏ tới chỉ số của khối phỳ hợp trong fold tới client, j tiến tới vị trợ b, vỏ tiếp tục.
(iv) Nếu khừng tớm thấy, hoặc nếu checksum tin cậy khừng phỳ hợp, truyền ký tự fnew[j] tới client, tăng j thởm 2 vỏ tiếp tục.
Tại client:
Checksum nhanh vỏ khừng tin cậy được sử dụng để tớm ra sự phỳ hợp, vỏ cõc checksum tin cậy sau đụ được dỳng để xõc nhận sự phỳ hợp đụ. Checksum phỳ hợp được thi hỏnh bằng cõch sử dụng MD4 (128 bit). Checksum khừng tin cậy cụ 32bit, nụ cho phờp chuyển một cõch hiệu quả cõc đường bao khối bởi 1 ký tự, chẳng hạn, checksum cho f[j+1,j+b] cụ thể được tợnh trong thời gian khừng đổi từ f[j,j+b-1].
Rử rỏng, việc lựa chọn một kợch thước khối tốt lỏ tiởu chuẩn để thực hiện thuật toõn. Sự lựa chọn tốt nhất lại phụ thuộc lớn vỏo sự giống nhau giữa 2 file – cõc file cỏng giống nhau thớ chỷng ta cỏng cụ thể chọn kợch thước khối lớn. Hơn nữa, vị trợ của cõc thay đổi trong file thớ cũng rất quan trọng. Nếu một ký tự đơn được thay đổi trong mỗi khối của fold, thớ khừng cụ sự phỳ hợp nỏo sẽ được tớm thấy tại server vỏ rsync sẽ khừng thể hoỏn thỏnh một cõch hiệu quả được; mặt khõc, nếu tất cả cõc thay đổi được phón thỏnh một vỏi vỳng trởn file, rsync sẽ lỏm rất tốt thậm chợ với một kợch thước khối lớn. Tuy nhiởn, rsync khừng cụ sự thi hỏnh tốt với khừng gian khoảng cõch filẹ
Tất nhiởn, thừng thường kợch thước khối thậm chợ cụ thể thay đổi trong một filẹ Trong thực hỏnh, rsync bắt đầu với một kợch thước khối hỏng trăm byte, vỏ sử dụng cõc phờp heuristic để chỉnh sửa sau đụ.
2.5.3.2 Cõc kết quả thực nghiệm của rsync
Bóy giờ, chỷng ta sẽ đưa ra một vỏi kết quả về sự thi hỏnh của rsync so với nờn deltạ Cõc kết quả sử dụng tập dữ liệu gcc vỏ emacs. Chỷng ta tổng kết 5 con số cho rsync: số lượng dữ liệu được gửi từ client tới server (request), số lượng dữ liệu được gửi từ server tới client (reply), số lượng dữ liệu được gửi từ server tới client với tuỳ chọn nờn đọ bật (reply compressed), vỏ tổng số cho cả 2 hướng trong trường hợp khừng nờn (total) vỏ đọ nờn (total compressed).
Gcc Emacs Uncompressed 27288 27326 Gzip 7479 8191 Xdelta 461 2131 Vcdiff 289 1821 Zdelta 250 1465 Rsync request 180 227 Rsyn reply 2445 12528
Rsync total 2626 12756
Rsync total compressed 876 4428
Bảng 2.2: Cõc kết quả nờn cho tập dữ liệu gcc vỏ emacs (KB)
700 500 300 200 100 80
Rsync request 227 301 472 686 1328 1679
Rsync reply 12528 11673 10504 9603 8433 8161 Rsync reply compressed 4201 3939 3580 3283 2842 2711 Rsync total 12756 11974 10976 10290 9762 9810 Rsync total compressed 4429 4241 4053 3970 4170 4360
Bảng 2.3: Cõc kết quả nờn cho emacs với cõc tập dữ liệu khõc nhau (KB) 2.5.3.3 Cõc ứng dụng
Cõc ứng dụng cho đồng bộ file cũng tương tự như đối với thuật toõn nờn deltạ Đồng bộ file thớ phổ biến hơn, trong đụ nụ khừng yởu cầu cõc kiến thức về file tham chiếu; mặt khõc, nờn delta hướng tới thi hỏnh sự đồng bộ một cõch tốt hơn theo khợa cạnh tỷ lệ nờn. Cụ rất nhiều lý do tại sao server cụ thể khừng chứa cõc file tham chiếu, chẳng hạn do khừng gian bộ nhớ, do cõc phiởn bản trước đụ của file tham chiếu đọ được cập nhật lởn cõc phiởn bản mới hơn… Dưới đóy lỏ một vỏi vợ dụ:
- Đồng bộ cho cõc file người dỳng: Cụ một số gụi phần mềm như rsync, Microsoft’s ActiveSync, Puma Technologies’ IntelliSync hay Palm’s HotSync cho phờp đồng bộ giữa desktop, thiết bị mobile hay cõc tỏi khoản cõ nhón cụ thể truy cập web. Trong phần nỏy, cõc file hay cõc bản ghi cụ thể được update bởi rất nhiều phần khõc nhau, vỏ nhọn thời gian cụ thể được dỳng để xõc định phiởn bản gần nhất.
Chỷng ta cần chỷ ý rằng cụ rất nhiều gợi ý cho cõc cừng cụ nỏỵ Với dữ liệu dạng file, chỷng ta cụ thể đồng bộ cõc file từ xa, trõnh được việc phải truyền toỏn bộ filẹ Với dữ liệu tồn tại dưới dạng cõc tập lớn của cõc bản ghi nhỏ, chẳng hạn như danh sõch cõc địa chỉ hay cõc cuộc hẹn trong cõc thiết bị cầm tay, vấn đề lỏ lỏm thế nỏo để phón biệt cõc bản ghi nỏy cụ thay đổi mỏ khừng cần gửi một dấu hiệu riởng hay cõc nhọn thời gian cho mỗi bản ghị Vấn đề nỏy, được mừ hớnh hoõ thỏnh một tập hoỏ giảị Cụ rất nhiều cõc gụi chương trớnh thực hiện truyền toỏn bộ thực thể nếu cụ thay đổi nỏo xảy ra, thường thấy tại cõc tập dữ liệu dựa trởn bản ghi nhỏ, khừng dỳng cho cõc file lớn. Thởm vỏo đụ, cũng cụ những vấn đề về việc định nghĩa về ngữ nghĩa thợch hợp trong hệ thống đồng bộ filẹ
- Lưu trữ từ xa cõc tập dữ liệu khổng lồ: Việc đồng bộ cụ thể được sử dụng để lưu trữ từ xa cõc tập dữ liệu mỏ chỉ cụ thay đổi một chỷt giữa cõc lần cập nhật. Trong trường hợp nỏy, việc giữ cõc phiởn bản cũ tại server cụ giõ đắt lỏm cho kỹ thuật nờn delta trở lởn khừng hiệu quả.
- Truy cập web: Đồng bộ file cũng được dỳng cho việc truyền HTTP giữa cõc client với một server hoặc proxỵ Lợi ợch của nụ lỏ server khừng cần phải giữ dấu vết của cõc phiởn bản cũ được giữ tại client, vỏ cũng khừng cần phải tớm lại cõc phiởn bản ấy từ đĩạ Tuy nhiởn, như chỉ ra trong phần trởn, kỹ thuật đồng bộ file cụ tỷ lệ nờn tồi hơn nờn delta, vỏ vớ thế nụ khừng chỉ đem lại những lợi ợch cho cõc file tương tự nhaụ
- Hệ thống phón tõn ngang hỏng: Đồng bộ cũng được dỳng cho việc cập nhật cõc cấu trỷc dữ liệu phón tõn cao như: routing table, name services, indexes, hay replication tables.
CHƯƠNG 3 - ỨNG DỤNG THUẬT TOạN NẫN DELTA TRONG VIỆC CẬP NHẬT CạC PHẦN MỀM NGHIỆP VỤ TẠI NGằN HáNG CễNG THƯƠNG
VIỆT NAM
3.1 Mừ hớnh hệ thống cừng nghệ thừng tin trong ngón hỏng Cừng Thương Việt Nam
Dưới đóy lỏ mừ hớnh của hệ thống cừng nghệ thừng tin trong ngón hỏng.
Hớnh 3.1: Mừ hớnh hệ thống cừng nghệ thừng tin tại NHCTVN
Toỏn hệ thống ngón hỏng bao gồm rất nhiều chi nhõnh trởn khắp cõc tỉnh thỏnh của cả nước. Mỗi chi nhõnh lại bao gồm nhiều điểm giao dịch, phúng giao dịch. Tại mỗi điểm giao dịch, cụ thể cụ nhiều mõy tợnh Client PC chứa cõc phần mềm nghiệp vụ giỷp cõc giao dịch viởn lỏm việc với khõch hỏng. Tại mỗi chi nhõnh, cụ một mõy chủ Branch Server nhằm quản lý dữ liệu tập trung của toỏn bộ chi nhõnh. Cõc mõy chủ chi nhõnh nỏy lại được quản lý bởi một mõy chủ Server vỳng. Cụ ba mõy chủ Server vỳng lỏ North Server, Miđle Server vỏ South Server tương ứng với ba vỳng bắc, trung, nam. Cõc mõy chủ Server vỳng lại được quản lý bởi một mõy chủ Server của toỏn hệ thống, gọi lỏ HQ Server.
3.2 Quy trớnh cập nhật cõc phần mềm nghiệp vụ trong ngón hỏng Cừng Thương Việt Nam
Khi cụ một nghiệp vụ mới, hoặc khi cần thay đổi cõc tham số cho một vỏi nghiệp vụ đang tồn tại,… cõc phần mềm nghiệp vụ cần được cập nhật tới tất cả cõc mõy tợnh trong toỏn hệ thống. Vậy, bỏi toõn đặt ra lỏ lỏm thế nỏo để cõc phần mềm nỏy được cập nhật nhanh, kịp thời vỏ chợnh xõc?
Thừng thường, cõc thay đổi về phần mềm nghiệp vụ trong ngón hỏng thường bao gồm hai phần: phần thứ nhất cập nhật trong cơ sở dữ liệu (chỉ cập nhật một lần trởn mõy chủ chi nhõnh cho toỏn bộ một chi nhõnh, bằng cõch chạy cõc file script); phần thứ hai cập nhật cõc file (dạng exe, rpt, dll…) cập nhật cho tất cả cõc mõy bằng cõch copy filẹ Toỏn bộ quõ trớnh do cõn bộ điện toõn của chi nhõnh thực hiện. Trước tiởn, cõn bộ điện toõn chạy file cript để cập nhật databasẹ Sau khi cập nhật thỏnh cừng database, cõn bộ điện toõn tiến hỏnh copy cõc file cập nhật vỏo mỗi mõy của từng giao dịch viởn.
Quy trớnh nỏy sẽ xảy ra nhiều sai sụt: Nếu file script bị lỗi (do bị mất mõt dữ liệu trởn đường truyền từ trung ương về chi nhõnh), hoặc database chi nhõnh khừng đõp ứng đủ cõc điều kiện đở chạy thỏnh cừng file script, quõ trớnh chạy script sẽ bị lỗị Cũng cụ khi quõ trớnh chạy script bị lỗi mỏ cõn bộ điện toõn khừng phõt hiện ra (do sơ suất hoặc do trớnh độ thấp, khừng hiểu hết cõc lỗi). Điều nỏy sẽ ảnh hưởng tới hoạt động của toỏn chi nhõnh, góy phiền hỏ cho khõch hỏng, mất lúng tin của khõch hỏng, ảnh hưởng đến uy tợn của ngón hỏng… Bởn cạnh đụ, việc cõn bộ điện toõn phải copy toỏn bộ cõc file cần cập nhật đến mỗi mõy tợnh cũng tiởu tốn rất nhiều thời gian, cừng sức. Cõc phúng giao dịch, điểm giao dịch trong một chi nhõnh cụ thể ở cõc vị trợ địa lý rất xa nhaụ Trong khi đụ, cụ những phần mềm nghiệp vụ yởu cầu điện toõn chi nhõnh phải cập nhật ngay trong ngỏy, hoặc trước giờ giao dịch của buổi sõng hừm sau… Rử rỏng lỏ, quy trớnh cập nhật nỏy cún rất nhiều nhược điểm.
3.3 Chương trớnh cập nhật tự động cõc phần mềm nghiệp vụ 3.3.1 Thiết kế hệ thống
Hệ thống đõp ứng cõc yởu cầu của chương trớnh cập nhật tự động sẽ khừng cụ thay đổi so với hệ thống hiện tạị Tuy nhiởn, hệ thống cũng phải đảm bảo cõc yởu cầu tợnh thống nhất, trớnh tự vỏ dễ kiểm soõt. Chẳng hạn, khi cụ một phần mềm nghiệp vụ cần được cập nhật, phần mềm ấy cần phải được cập nhật đồng bộ cho toỏn hệ thống. Khừng thể xảy ra trường hợp, vỏo cỳng một thời điểm, tại cõc điểm giao dịch khõc nhau, phiởn bản chạy của một phần mềm nghiệp vụ nỏo đụ khõc nhaụ Tợnh dễ kiểm soõt được thể hiện ở chỗ, trong quõ trớnh thực hiện cập nhật tự động toỏn hệ thống,
nếu phõt sinh lỗi cập nhật tại một chi nhõnh nỏo đụ, lỗi nỏy sẽ khừng lỏm ảnh hưởng đến cõc chi nhõnh khõc. Đồng thời, cõn bộ thực hiện cập nhật cụ thể phõt hiện ngay lỗi đang xảy ra tại chi nhõnh nỏo, lỗi đụ lỏ gớ (do đường truyền, do virus, do cấu hớnh mõy client khừng tương thợch, …). Quõ trớnh cập nhật lại cho chi nhõnh bị lỗi cũng phải khừng gặp bất kỳ khụ khăn nỏọ
Dựa trởn mừ hớnh hệ thống cừng nghệ thừng tin vỏ quy trớnh cập nhật phần mềm nghiệp vụ tại Ngón hỏng Cừng Thương Việt Nam, cõc cõn bộ thuộc Trung tóm cừng nghệ thừng tin – Ngón hỏng cừng thương Việt Nam đọ nghiởn cứu vỏ hoỏn thiện chương trớnh cập nhật tự động cõc phần mềm nghiệp vụ. Chương trớnh đọ thực sự giỷp ợch rất nhiều cho cõc cõn bộ điện toõn tại chi nhõnh, đồng thời giảm thiểu tối đa những sai sụt cũng như sự tiởu tốn về thời gian vỏ dung lượng trởn đường truyền dữ liệụ
Chương trớnh thực hiện theo quy trớnh sau:
- Cõc gụi cập nhật được tạo tại Server TW (HQ), sau đụ sẽ được upload xuống cõc Server Vỳng (North, Miđle, South).
- Cõc Server Vỳng được xem như tầng trung gian, cụ nhiệm vụ trung chuyển cõc gụi cập nhật từ Server HQ xuống cõc Server chi nhõnh trong vỳng.
- Tại cõc mõy PC client, chương trớnh sẽ tự động kiểm tra cõc gụi cập nhật từ Server Chi nhõnh vỏ tiến hỏnh cập nhật (nếu cụ).
Phần mừ tả về thiết kế chương trớnh dưới đóy sẽ phón tợch rử hơn trong mỗi tầng của hệ thống.
3.3.2 Thiết kế chương trớnh
Chương trớnh gồm 2 phần:
- Đặt lịch tự động trởn mõy chủ Server TW vỏ Server Vỳng. - Chương trớnh quản lý trởn Server TW.
3.3.2.1 Chương trớnh đặt lịch tự động
Thực chất, chương trớnh nỏy sử dụng một tiện ợch của windows, nhằm đặt lịch chạy tự động một chương trớnh (chương trớnh upload) vỏo một thời điểm cố định nỏo đụ. Chương trớnh được cỏi đặt tại cõc Server TW, Server vỳng, Server chi nhõnh.
Tại Server TW, mỗi khi cụ một phần mềm nghiệp vụ cần cập nhật, chương trớnh quản lý trởn Server TW sẽ tạo ra Patch file (file Delta). Vỏo một thời điểm cụ thể, chương
trớnh đặt lịch tự động trởn Server TW chạy một chương trớnh upload nhằm upload cõc Patch file về Server vỳng.
Tại Server vỳng, chương trớnh đặt lịch tự động được cỏi đặt sau thời điểm chương trớnh đặt lịch tự động tại Server TW chạỵ Cũng giống như Server TW, Server vỳng