Tải bản đầy đủ (.doc) (30 trang)

TIỂU LUẬN LẬP TRÌNH MẠNG VIẾT CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ DỮ LIỆU KHI CẬP NHẬT TRONG CÁC CSDL PHÂN TÁN TẠI CÁC NGÂN HÀNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (438.69 KB, 30 trang )

Tiểu luận Lập trình mạng
BỘ GIÁO DỤC & ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TIỂU LUẬN
LẬP TRÌNH MẠNG
ĐỀ TÀI:
VIẾT CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ
DỮ LIỆU KHI CẬP NHẬT TRONG CÁC CSDL PHÂN
TÁN TẠI CÁC NGÂN HÀNG
Giảng viên : PGS.TS. Lê Văn Sơn
Học viên : Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
Lớp : Cao học KHMT - K11
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
1
Đà Nẵng, tháng 03 năm 2010
Tiểu luận Lập trình mạng
LỜI NÓI ĐẦU

Ngày nay, công nghệ mạng máy tính và Internet đã phát triển mạnh, cho phép
chúng ta khai thác các nguồn tài nguyên là những kho tư liệu vô cùng rộng lớn về các
lĩnh vực, và được bố trí ở những nơi rất xa nhau.
Đối với các hệ thông tin lớn, dữ liệu không chỉ được lưu trữ và quản lý bởi các
server độc lập mà thường được phân tán trên nhiều server và phân bổ ở các vị trí địa lý
khác nhau. Hệ thống cho phép xử lý đa truy cập đồng thời cho phép đăng ký từ xa. Một
trong những lợi ích của việc phân tán dữ liệu như vậy là nhằm chia yêu cầu xử lý dữ
liệu cho nhiều máy nhằm tăng năng lực xử lý thông tin của hệ thống.
Vấn đề gắn bó dữ liệu trong các hệ thống phân tán nói chung và các hệ thống
thông tin đăng ký trên mạng nói riêng như việc đăng ký các tua du lịch, mua bán trong


các giao dịch thương mại điện tử, đăng ký giữ chỗ trong giao thông vận tải, đăng ký dự
thi trong các hệ thống thông tin đào tạo, đã trở thành một lĩnh vực thu hút nhiều sự
quan tâm của các nhà nghiên cứu lý thuyết lẫn các nhà sản xuất phần mềm nhằm tìm ra
các giải pháp hữu hiệu đảm bảo tính gắn bó thông tin trong các cơ sở dữ liệu truy cập
ngẫu nhiên với số lượng truy cập lớn.
Trong phạm vi bản báo cáo này sẽ trình bày vấn đề đảm bảo gắn bó dữ liệu khi
cập nhật trong các CSDL phân tán tại các ngân hàng.
Được sự giúp đỡ tận tình của PGS.TS Lê Văn Sơn và các bạn chúng tôi đã hoàn
thành được bản báo cáo. Tuy nhiên thời gian và kiến thức có hạn chế nên báo cáo này
chắc chắn còn nhiều khuyết điểm, chúng tôi rất mong nhận được sự góp ý của Thầy và
các bạn. Cho phép chúng tôi được bày tỏ lòng biết ơn đối với PGS.TS Lê Văn Sơn và
các bạn đã ủng hộ, giúp đỡ chúng tôi hoàn thành bản báo cáo này.
Trân trọng cảm ơn !
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
2
Tiểu luận Lập trình mạng
CHƯƠNG I
CÁC KHÁI NIỆM CƠ BẢN VỀ HỆ PHÂN TÁN
LẬP TRÌNH MẠNG VÀ CƠ SỞ DỮ LIỆU PHÂN TÁN
I.1 HỆ PHÂN TÁN
I.1.1 Tổng quan về hệ tin học
Một cách tổng quát, hệ tin học có thể bao gồm các thành phần bản như phần cứng,
hệ điều hành, các chương trình ứng dụng và người sử dụng (NSD) … và có thể được mô
tả như hình I.1. sau:
Các thiết bị phần cứng bao gồm các thiết bị xử lý trung tâm, bộ nhớ và các thiết bị
ngoại vi đóng vai trò là một trong hai loại tài nguyên cơ sở của hệ thống tin học. Các
chương trình ứng dụng là thành phần tiếp theo sau hệ điều hành được hiểu như là các
phần mềm cơ sở phục vụ cho việc triển khai các ứng dụng cụ thể như chương trình dịch,
hệ quản trị cơ sở dữ liệu, các chương trình trợ giúp sử dụng các thiết bị chuyên dụng, các

trò chơi điện tử . . .
Người sử dụng (NSD) ở đây được hiểu theo nghĩa rộng, dưới góc độ của hệ điều
hành, có thể là các nhà chuyên môn, các máy tính, các hệ tự động vận hành, gắn với máy
tính . . . đang khai thác hệ thông qua lệnh điều khiển theo một thuật toán nào đó nhằm
đạt được mục tiêu xác định từ trước .
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
3
Tiểu luận Lập trình mạng
Hệ điều hành các máy tính và mạng máy tính gọi tắt là hệ điều hành được đặt sát
phần cứng, nó gắn kết chặt chẽ với phần thiết bị bởi một hệ thống các chương trình, điều
khiển và sắp xếp nhằm khai thác phần cứng phục vụ cho các chương trình ứng dụng khác
nhau của NSD khác nhau với kết quả và hiệu năng chấp nhận được .
Như vậy, hệ tin học bao gồm ba thực thể : phần cứng, phần mềm và dữ liệu, được
mô tả ở hình I-2
Vậy hệ thống tin học (Informatic System) là một hệ thống bao gồm hai thành phần
cơ bản phần cứng (hardware) và phần mềm (software) gắn bó hữu cơ với nhau và có khả
năng xử lý thông tin.
I.1.2 Hệ tin học phân tán
I.1.2.1 Định nghĩa
Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệ
thống xử lý thông tin bao gồm nhiều bộ xử lý hoặc bộ vi xử lý nằm tại các vị trí khác
nhau được liên kết với nhau thông qua phương tiện viễn thông dưới sự điều khiển thống
nhất của một hệ điều hành.
I.1.2.2 Các thực thể trong hệ phân tán
Hệ phân tán gồm 4 thực thể :
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
4
Tiểu luận Lập trình mạng

I.1.2.3 Đặc điểm của hệ phân tán
Đặc điểm cần nhấn mạnh của hệ là các hệ xử lý thông tin thành phần :
Không dùng chung hoặc chia sẻ bộ nhớ
Không sử dụng chung đồng hồ xung nhịp
Chúng liên lạc với nhau thông qua mạng truyền thông
Mỗi hệ xử lý có bộ xử lý, bộ nhớ và hệ điều hành riêng của nó.
Thành phần của hệ phân tán bao gồm các hệ thống cục bộ trong đó mỗi một hay
nhiều hệ thống phát các yêu cầu thông tin còn các hệ khác trả lời các yêu cầu có liên
quan đến phần dữ liệu của mình. Nói một cách tổng quát là trong hệ luôn luôn diễn ra
việc thực hiện các công việc do các hệ thống yêu cầu. Các hệ thống truyền thống như hệ
rời rạc hay tập trung không thể đáp ứng nhanh chóng và chính xác các yêu cầu thông tin
từ xa với lưu lượng thông tin lớn.
I.1.2.4 Các ưu điểm của tài nguyên dùng chung trong hệ phân tán
Hệ tin học phân tán thực hiện hàng loạt các chức năng phức tạp nhưng chức năng
cơ bản nhất là đảm bảo cung cấp cho người sử dụng khả năng truy cập có kết quả đến
các tài nguyên vốn có và rất đa dạng của hệ thống như tài nguyên dùng chung.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
Các
hệ thống
phần mềm
Các
hệ thống
phần mềm
Hệ thống
dữ liệu
Hệ thống
dữ liệu
Tập hợp
phần cứng

Tập hợp
phần cứng
Hệ thống
truyền
thông
Hệ thống
truyền
thông
Hình 1: Các thực thể của hệ tin học phân tán
5
Tiểu luận Lập trình mạng
Việc định nghĩa các tài nguyên của hệ như tài nguyên dùng chung sẽ mang đến cho
hệ những hiệu năng tốt trong khai thác ứng dụng
- Tăng tốc độ bình quân trong tính toán xử lý.
- Cải thiện tình trạng luôn sẵn sàng của các loại tài nguyên.
- Tăng độ an toàn cho dữ liệu.
- Đa dạng hóa các loại hình dịch vụ tin học.
- Bảo đảm tính toàn vẹn của thông tin.
Tuy nhiên nó cũng dẫn đến hàng loạt các vấn đề khó khăn trong việc thiết lập hệ
liên quan việc cấp phát tài nguyên dùng chung cho các tiến trình.
Điều quan trọng là để đảm bảo các chức năng, yêu cầu nêu ra trên, hệ tin học phân
tán cần phải có các cơ chế kỹ thuật đủ mạnh nhằm đồng bộ hóa hoạt động của các tiến
trình và sự trao đổi thông tin với nhau sao cho hệ thống tránh được các trường hợp có thể
dẫn đến bế tắc.
I.1.2.5 Các thao tác chuẩn của hệ phân tán
- Tiếp nhận và ghi yêu cầu chỉ dẫn.
- Dịch yêu cầu để có các thông tin cần thiết. Thực hiện một số công việc của hệ
thống cục bộ như kiểm tra quyền truy cập thông tin, lập hóa đơn dịch vụ.
- Gửi kết quả cho hệ thống đã phát yêu cầu.
I.2 LẬP TRÌNH MẠNG

I.2.1 Địa chỉ IP
Để hai hay nhiều máy tính kết nối được với nhau thì chúng phải có chung giao thức
(protocol). Trên Internet, việc hai máy có thể trao đổi được với nhau đa số đều dựa vào
giao thức TCP/IP, theo giao thức này mỗi máy sẽ được đặt cho một số riêng biệt được
gọi là địa chỉ IP, các số IP này là duy nhất và không máy nào được trùng nhau, khi muốn
máy của mình có địa chỉ IP để tham gia vào hệ thống Internet tòan cầu như một máy chủ
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
6
Tiểu luận Lập trình mạng
ta phải đăng ký với tổ chức InterNIC (Internet Network Information Center) để nhận một
số IP riêng biệt. Tuy nhiên, để gần gũi với con người và có ý nghĩa hơn người ta hay
dùng tên thay cho địa chỉ IP, với mỗi hệ thống đều có sự chuyển đổi trực tiếp từ tên
thành địa chỉ IP thích hợp trước khi dữ liệu được gửi đi.
I.2.2 Giao thức TCP và giao thức UDP
Giao thức TCP (Transmission Control Protocol) gửi từng gói dữ liệu đi, nơi nhận
theo giao thức này phải có trách nhiệm thông báo và kiểm ra xem dữ liệu đã đến đủ hay
chưa hoặc có lỗi hay không có lỗi. Trước khi chuyển dữ liệu bao giờ cũng có sự kết nối
giữa máy gửi và máy nhận. Do phải đảm bảo dữ liệu được truyền chính xác và luôn duy
trì kết nối nên sử dụng giao thức TCP cần phải mất thêm một số tài nguyên của hệ thống.
Ngược lại giao thức UDP (User Datagram Prorocol) không đáng tin cậy lắm, không
có sự kết nối trước giữa máy gửi và máy nhận, giao thức này cho rằng máy nhận luôn ở
trạng thái sẵn sàng để tiếp nhận dữ liệu gửi đến. Nếu dữ liệu gửi đến bị lỗi trong quá
trình truyền hay không nhận được đầy đủ thì giao thức UDP không có thông tin phải hồi
cho máy gửi. Tuy nhiên, giao thức UDP không đòi hỏi nhiều tài nguyên của hệ thống
Do đặc tính của hai giao thức như vậy, nên giao thức TCP thường được sử dụng
cho các dịch vụ như truyền tập tin, các dịch vụ trực tuyến trên Internet đòi hỏi độ tin cậy
cao… Giao thức UDP thường được dùng trong các ứng dụng không đòi hỏi sự chính xác
cao như: dịch vụ báo giờ, dịch vụ báo thông tin…
I.2.3 Dịch vụ từ máy chủ (server) và khái niệm cổng (port)

Khi kết nối vào máy chủ, ta có thể yêu cầu máy chủ cung cấp nhiều dịch vụ khác
nhau như: tìm kiếm thông tin, gửi nhận E-mail… Mỗi dịch vụ đều có qui ước riêng cho
các cách gửi/nhận dữ liệu. Giao thức TCP hay UDP chỉ chịu trách nhiệm đưa dữ liệu từ
một máy tính này đến máy tính khác, còn dữ liệu đó sẽ được gửi cho dịch vụ nào thì phải
thông qua một qui định nữa là cổng (port). Mỗi chương trình dịch vụ sẽ sử dụng một
cổng khác nhau để truy xuất thông tin. Cổng là một số nguyên từ 1 đến 16383. Máy chủ
sẽ qui định cổng cho mỗi dịch vụ, thông tin giữa máy khách và máy chủ phải sử dụng
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
7
Tiểu luận Lập trình mạng
cổng tương ứng thì mới trao đổi thông tin được, hầu hết các chương trình dịch vụ nổi
tiếng đều có qui định cổng chuẩn riêng:
Dịch vụ Cổng
FTP 21
HTTP 80
Telnet 23
… …
Khi xây dựng một ứng dụng làm dịch vụ trên máy chủ ta phải chọn cho mình một
cổng có giá trị khác với những giá trị cổng mà những dịch vụ nổi tiếng đã sử dụng.
I.2.4 Giao tiếp theo mô hình client/server
I.2.4.1 Giao tiếp theo mô hình client/server
Có rất nhiều dịch vụ hỗ trợ trên Internet như E-mail, nhóm tin (newsgroup), chuyển
tập tin (file transfer), đăng nhập từ xa (remote login), truy tìm thông tin trên Web…
Những mô hình này được kiến trúc theo mô hình khách/chủ (client/server). Các chương
trình ở máy khách (client) như trình duyệt Web (web browser), chương trình gửi nhận E-
mail…; các chương trình dịch vụ trên máy chủ (server) như web server, mail server… sẽ
xử lý những yêu cầu này và gửi kết quả ngược về cho máy khách, thông thường một dịch
vụ trên máy chủ phục vụ cho rất nhiều yêu cầu của máy khách.
I.2.4.2 Các chương trình thường chạy trên máy client

Nhìn chung, các chương trình trên máy khách thực hiện những nhiệm vụ sau:
- Kết nối máy chủ.
- Nhận dữ liệu hay yêu cầu của người sử dụng.
- Gửi dữ liệu hoặc yêu cầu của người sử dụng đến máy chủ để lưu trữ hoặc xử lý.
- Trình bày kết quả trả về từ máy chủ cho người sử dụng.
I.2.4.3 Các chương trình thường chạy trên máy server
Các chương trình được thiết kế chạy trên máy chủ thực hiện những nhiệm vụ sau:
- Lắng nghe các kết nối từ máy khách gửi đến.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
8
Tiểu luận Lập trình mạng
- Tiếp nhận những yêu cầu từ phía máy khách.
- Xử lý những yêu cầu từ phía máy khách.
- Gửi trả kết quả về cho máy khách.
Như vậy, một chương trình ở trên máy chủ đóng vai trò như một dịch vụ (service)
phục vụ cho máy khách.
I.2.5 Lập trình đối tượng phân tán
Lập trình đối tượng phân tán là một trong những vấn đề nóng bỏng của công nghệ
phần mềm hiện nay, cộng đồng những người lập trình bắt đầu nghĩ rằng đối tượng có ở
mọi nơi. Những đối tượng này được hỗ trợ trao đổi với nhau theo những giao thức chuẩn
trên mạng. Java là một trong những ngôn ngữ đi tiên phong trong việc giải quyết vấn đề
lập trình phân tán. Ví dụ, có một đối tượng ở máy khách (client), ở đó người sử dụng cần
phải điền dữ liệu vào mẫu báo cáo. Đối tượng này có thể gửi một thông điệp cho đối
tượng trên máy chủ (server) trên mạng để yêu cầu cung cấp các thông tin cần thiết, đối
tượng trên máy chủ truy cập vào các cơ sở dự liệu để có được những thông tin má máy
khách yêu cầu và gửi lại cho đối tượng trên máy khách.
I.2.5.1 Thiết lập môi trường triệu gọi từ xa
Để thực hiện được việc triệu gọi từ xa thì ta phải chạy chương trình ở trên cả máy
khách và máy chủ.

Những thông tin cần thiết cũng phải được cài đặt tách biệt ở máy khách và máy
chủ. Tuy nhiên không nhất thiết phải có hai máy tính riêng biệt. Nhờ có máy ảo Java, khi
mở cửa sổ DOS-Prompt (môi trường DOS dưới Window) để chạy chương trình Java,
chương trình này được xem như chạy trên một máy (ảo) độc lập. Do đó, nếu hai chương
trình Java chạy ở trong hai cửa sổ riêng thì có thể xem như là chúng thực hiện trên hai
máy khác nhau.
I.2.5.2 Mô hình tính toán Client/Server
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
9
Tiểu luận Lập trình mạng
Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi giữa chương trình phục
vụ (Server) với chương trình khách (Client). Chương trình khách gửi một yêu cầu tới cho
chương trình phục vụ, và chương trình này xử lý dữ liệu để trả lời cho chương trình
khách. Như vậy, chương trình khách muốn gửi được yêu cầu thì trước hết phải tìm cách
kết nối với Server. Server có thể chấp nhận hay từ chối sự kết nối này. Một khi sự kết nối
đã được thiết lập thì Client và Server trao đổi với nhau thông qua Sockets. Các lớp trong
gói java.net cung cấp các phương thức để kết nối mạng và trao đổi tin giữa các máy với
nhau theo mô hình Client/Server.
Socket chính là lớp (trừu tượng) thực hiện sự trao đổi giữa Server và Client. Java
xem sự trao đổi giữa Server và Client dựa trên Socket gần giống như các thao tác vào/ra,
nghĩa là các chương trình có thể đọc, ghi vào Socket dễ dàng như chúng đọc, ghi lên tệp
dữ liệu. Lớp Server tạo ra sự kết nối từ máy Client tới Server thông qua các phương thức
tạo lập đối tượng.
Lớp ServerSocket dùng để tạo kết nối từ máy Server tới máy Client. Đối tượng của
lớp này được tạo ra trên Server và lắng nghe những kết nối từ máy Client theo cổng xác
định. Server phải chạy thường trực trước khi Client bắt đầu thực hiện. Server chờ sự yêu
cầu kết nối của Client. Để thiết lập được một Server, ta phải tạo ra một đối tượng, ví dụ
ServerSocket của lớp Server, gắn nó với một cổng nào đó và lắng nghe xem có Client
nào cần kết nối hay không. Các Socket được xác định tương ứng với địa chỉ của máy và

cổng.
servrSock = new ServerSocket(Integer.parseInt(txtPort.getText()));
Trong đó port là số hiệu của cổng nằm giữa 0 và 1023. Cổng cho phép trao đổi tin
giữa hai chương trình.
Tất cả các lớp cơ bản cho việc giao tiếp và làm việc với mạng đều nằm trong gói
Java.net, như lớp socket API (Application Program Interface).
Socket API của Java cung cấp các công cụ để truy cập đến các giao thức mạng
chuẩn được sử dụng để giao tiếp giữa các Host trên mạng Internet. Socket API là công
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
10
Tiểu luận Lập trình mạng
cụ mức thấp nhất, chúng ta có thể sử dụng socket cho bất kỳ kiểu giao tiếp Client/Server
nào và các ứng dụng ngang hàng trên mạng nhưng chúng ta phải cài đặt các giao thức
ứng dụng mức thấp để điều khiển và thông dịch dữ liệu.
Socket là giao diện lập trình mức thấp cho các giao tiếp hướng mạng. Chúng gửi
các dòng dữ liệu giữa các ứng dụng có thể hoặc không nằm trên cùng một host. Gói
java.net hỗ trợ một giao diện hướng đối tượng, đơn giản hóa socket nên việc giao tiếp
mạng trở nên dễ dàng hơn. Java cung cấp các socket để hỗ trợ cho 3 lớp phân biệt của
các giao thức bên dưới: Socket, DatagramSocket, MulticastSocket.
Lớp Socket sử dụng giao thức hướng kết nối TCP/IP, đảm bảo dữ liệu không bị mất
trong quá trình truyền.
Lớp ServerSocket được sử dụng để thu nhận các kết nối từ client của server.
ServerSocket chỉ được tạo một lần và nhận các kết nối đến từ các client. Phương thức
accept của ServerSocket sẽ đợi cho đến khi có kết nối đến và trả về một đối tượng
Socket.
I.3 CƠ SỞ DỮ LIỆU PHÂN TÁN
Một cơ sở dữ liệu phân tán là tập hợp nhiều cơ sở dữ liệu có liên đới logic và được
phân bố trên một mạng máy tính. Từ đó ta định nghĩa: Hệ quản trị cơ sở dữ liệu phân
tán (DDMS) là một hệ thống phần mềm cho phép quản lý các cơ sở dữ liệu phân tán và

làm cho việc phân tán trở nên “vô hình” đối với người sử dụng.
Môi trường của hệ cở dữ liệu phân tán được mô tả qua hình 2
Hình I-4: Môi trường của hệ cơ sở dữ liệu phân tán
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
11
Trạm 5
Trạm 5
Mạng truyền
dữ liệu
Trạm 5
Trạm 5
Trạm 5
Trạm 5
Trạm 5
Trạm 5
Trạm 5
Trạm 5
Tiểu luận Lập trình mạng
CHƯƠNG II
KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG JAVA
KẾT NỐI CƠ SỞ DỮ LIỆU VỚI JDBC
II.1 SƠ LƯỢC VỀ JAVA
Java là một ngôn ngữ lập trình đơn giản, hướng đối tượng, hỗ trợ lập trình phân
tán, thông dịch và biên dịch, mạnh mẽ bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả và
linh động.
Sự hỗ trợ lập trình hướng đối tượng là cốt lõi của Java. Mọi câu lệnh của Java đều
tác động đến các đối tượng mà đặc trưng của chúng là lớp (class), đối tượng là thể hiện
(instance) của lớp và phương thức (method) là một thao tác hoặc được thực hiện bởi
chính nó, hoặc thực hiện khi có yêu cầu từ môi trường (thông điệp từ đối tượng khác).

Java hỗ trợ các ứng dụng phân tán bằng các lớp mạng java.net, một chương trình
Java có thể là sự kết hợp của rất nhiều tập tin *.class nằm rải rác trên nhiều vùng vật lý
khác nhau như ổ đĩa hay các máy chủ ở những vị trí khác nhau trên Internet. Ngôn ngữ
Java cung cấp các công cụ đủ mạnh để thiết kế bất kỳ ứng dụng nào theo mô hình khách
chủ (client/server) và phân tán (distributed).
Java là một ngôn ngữ thông dịch trên cơ sở đã biên dịch trước thành bytecode nên
nó trở nên khả chuyển. Java được thiết kế cho mục đích đa nền, nên mã lệnh của chương
trình Java sau khi biên dịch là một dạng tập tin nhị phân được gọi là bytecode, có phần
mở rộng là *.class, và nó được triệu gọi thực thi trong máy ảo Java (JVM – Java Virtual
Machine). JVM là một kiến trúc của bộ xử lý nhưng thực thi theo cơ chế phần mềm thay
vì phần cứng, chính vì lý do này mà chương trình Java *.class có thể chạy như nhau trên
nhiều hệ điều hành khác nhau.
Vì dùng trình thông dịch nên Java là một ngôn ngữ rất năng động. trong khi thực
thi, môi trường Java có thể tự mở rộng để liên kết với các lớp mới nằm rải rác trên các
máy chủ khác nhau. Đó cũng là thuận lợi lớn của Java so với các ngôn ngữ lập trình
khác.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
12
Tiểu luận Lập trình mạng
II.2 RMI VÀ LẬP TRÌNH PHÂN TÁN HƯỚNG ĐỐI TƯỢNG
TRONG JAVA
II.2.1 Khái niệm chung
Java RMI (Remote Method Invocation): Là một cơ chế gọi hàm từ xa đã được thực
hiện và tích hợp trong ngôn ngữ Java, là phương pháp lập trình hướng đối tượng.
RMI mang ý nghĩa triệu gọi phương thức từ xa – là cách thức giao tiếp giữa các
đối tượng Java có mã lệnh cài đặt (bao gồm phương thức và thuộc tính) nằm trên các
máy khác nhau có thể triệu gọi lẫn nhau.
Mô hình dưới đây cho thấy các đối tượng cho phép triệu gọi lẫn nhau. Trên máy A
các đối tượng A1, A2 gọi phương thức của nhau được gọi là triệu gọi phương thức cục

bộ, đây là cách mà lập trình hướng đối tượng truyền thống vẫn sử dụng. Tương tự, tương
tác giữa C1, C2 ,C3 là tương tác cục bộ.
Tuy nhiên, đối tượng Java có thể gọi phương thức của đối tượng nằm trên một máy
khác dựa vào giao thức triệu gọi từ xa RMI.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
Computer A
A2
A1
Computer C
C1
C2
Computer B
B1
C3
13
Tiểu luận Lập trình mạng
Hình II.1: Mô hình triệu gọi các đối tượng từ xa
II.2.2 Gọi phương thức từ xa và các vấn đề phát sinh
Triệu gọi phương thức từ xa phức tạp hơn triệu gọi phương thức cục bộ. Các đối
tượng trên hai Server khác nhau hoạt động trên hai tiến trình khác nhau cho nên việc
tham chiếu: Biến, địa chỉ đối tượng là khác nhau.
Ví dụ: Khi truyền con trỏ cho một phương thức ở xa, trên máy đang sử dụng sẽ tồn
tại nhưng trên Server khác (nơi đối tượng thực thi phương thức) sẽ không có bất kỳ vùng
nhớ nào được cấp phát cho con trỏ.
Trên máy cục bộ: lời gọi hàm, các tham số truyền cho hàm thường được đặt vào
ngăn xếp (stack).
Tham số truyền cho phương thức của đối tượng ở xa được đóng gói và chuyển qua
mạng để đến được phương thức thực sự.
II.2.3 Vai trò các lớp trung gian STUB và SKELETION

Hình vẽ dưới biểu thị: Gọi phương thức từ xa các đối tượng thông qua lớp trung
gian. Đối tượng Java trên hai máy khác nhau không gọi nhau trực tiếp mà thông qua lớp
trung gian.
Lớp trung gian này tồn tại ở hai phía : máy khách (nơi gọi phương thức của đối
tượng ở xa) và máy chủ (nơi đối tượng thực sự được cài đặt để thực thi mã lệnh của
phương thức).
Phía máy khách lớp trung gian này được gọi lớp móc (stub).
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
14
Tiểu luận Lập trình mạng
Hình II-2: Gọi phương thức của các đối tượng thông qua lớp trung gian
Phía máy chủ lớp trung gian gọi lớp nối (skeletion).
Ví dụ, đối tượng C1 được cài đặt chạy trên máy C. Trình Java sẽ tạo ra hai lớp
trung gian C1_Skel và C1_Stub. Lớp C1_Stub sẽ được đem về máy Computer A. Khi A1
trên máy computer A gọi C1 nó sẽ chuyển lời gọi đến lớp C1_Stub. C1_Stub chịu trách
nhiệm đóng gói tham số, chuyển tham số qua mạng đến máy Computer C. Trên máy
Computer C lớp nối C1_Skel sẽ nhận tham số chuyển vào vùng không gian địa chỉ tương
thích với đối tượng C1 sau đó gọi phương thức tương ứng. Kết quả nếu có do phương
thức của đối tượng C1 trả về sẽ được lớp C1_Skel đóng gói trả ngược về cho C1_Stub.
C1_Stub chuyển giao kết quả cuối cùng lại cho A1. Bằng cơ chế này, A1 luôn nghĩ rằng
nó đang hoạt động trực tiếp với đối tượng C1 ngay trên máy cục bộ. Hơn nữa, nhờ sự
giúp đỡ của lớp trung gian C1_Stub, khi kết nối mạng gặp sự cố lớp trung gian stub sẽ
luôn biết cách thông báo lỗi đến đối tượng A1.
Thực tế làm thế nào A1 tham chiếu đươc đến C1, một khi không có lớp C1 nào
được cài đặt ở máy A? C1_Stub trên máy A chỉ làm lớp nền trung gian chuyển đổi tham
số và thực hiện các giao thức mạng, nó không phải là hình ảnh của đối tượng C1. Để làm
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
Computer A

A2
A1
Computer C
Computer B
B1
C1
C1_stub
B1_stub
C1_skel
B1_skel
15
Tiểu luận Lập trình mạng
được điều này, đối tượng C1 cần cung cấp một giao tiếp interface tương ứng với các
phương thức cho phép đối tượng A1 gọi nó trên máy A.
Stub thường trực trên máy khách, không ở trên máy chủ. Nó có vai trò đóng gói
các thông tin bao gồm:
Định danh đối tượng từ xa cần sử dụng
Mô tả về phương thức cần triệu gọi
Mã hoá các tham số và truyền cho Skel.
Stub sẽ chuyển những thông tin trên cho máy chủ. Ở phía máy chủ, đối tượng
Skel nhận thực hiện những công việc sau để gọi phương thức từ xa:
Giải mã các tham số
Xác định đối tượng để thực hiện lời gọi hàm tương ứng
Thực hiện lời gọi phương thức theo yêu cầu
Tập hợp kết quả để trả lời hoặc thông báo các lỗi ngoại lệ
Gửi trả lời gói các dữ liệu kết quả cho Stub ở trên máy khách.
II.2.4 Cài đặt ứng dụng phân tán của RMI
Hình vẽ biểu thị: Triệu gọi đối tượng RMI giữa Server2 và Server1. Đối tượng
Calculator/Server2 sẽ được gọi bởi đối tượng CalculatorClient/Server1. Chúng ta xây
dựng lớp đối tượng Calculator với đặc tả interface như sau:

public interface Calculator {
public int addNumber(int x, int y);}
Phương thức addNum() được dùng để cộng 2 tham số x, y với nhau và trả về kết
quả cho đối tượng nào gọi nó.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
16
Tiểu luận Lập trình mạng
Hình II-3 Cài đặt ứng dụng phân tán RMI
II.2.5 Cơ chế gọi hàm từ xa của các đối tượng RMI một cách tổng quát
- Đối tượng cài đặt các phương thức và gọi hàm Naming.bind() để đăng ký với
rmiregistry/Server chủ
- Đối tượng trên máy khách muốn gọi phương thức của đối tượng trên máy chủ
trước hết gọi hàm Naming.lookup() để truy tìm tham chiếu đến đối tượng ở xa theo tên.
- Bộ đăng ký rmiregistry sẽ trả về tham chiếu đến đối tượng ở xa thông qua giao
tiếp interface mà đối tượng ở xa cung cấp.
- Dựa vào interface đối tượng ở máy khách sẽ gọi các phương thức của đối tượng
trên máy chủ.
Hình II-4: Cơ chế gọi hàm từ xa của các đối tượng RMI
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
17
Tiểu luận Lập trình mạng
- Khi một phương thức được gọi, lời gọi sẽ được chuyển tiếp đến lớp trung gian
_Stub. Xử lý chuyển tham số của phương thức gọi đến _Skel trên máy chủ.
- Lớp trung gian _Skel trên máy chủ trực tiếp yêu cầu đối tượng thực thi phương
thức và chuyển trả kết quả về cho máy khách.
- Đặc tả lớp giao tiếp của đối tượng (Calculator.java)
- Dựa vào đặt tả cài đặt chi tiết đối tượng (CalculatorImpl.java).
- Biên dịch đối tượng (CalculatorImpl.class) và tạo ra 2 đối tượng trung gian

(CalculatorImpl_Stub và CalculatorImpl_Skel).
- Viết chương trình (CalculatorServer.class) cài đặt đối tượng trên máy chủ. Lưu ý
gọi phương thức UnicasRemoteObject. exportObject() để thông báo cho Java nhận dạng
được sự tồn tại của đối tượng ở dạng truy xuất được từ xa bởi các đối tượng khác.
Hình II.5: Đăng ký các đối tượng trên RMIRegistry
- Sử dụng lớp giao tiếp (Calculator.class) và CalculatorImpl_Stub từ máy khách để
gọi phương thức của đối tượng trên máy chủ.
II.2.6 Bộ đăng ký (Registry)
Cơ chế làm việc của máy ảo Java khi đăng ký và gọi đối tượng giữa trình khách và
chủ.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
18
Tiểu luận Lập trình mạng
Trên thực tế nếu hoạt động thực sự qua mạng thì chỉ có thể tách ra làm hai máy vật
lý. Hình dưới là cơ chế hoạt động của các máy ảo Java trên mô hình máy mạng vật lý
thực sự. Máy khách có địa chỉ IP truy xuất đến bộ đăng ký rmiregistry của máy chủ có
địa chỉ IP khác. Trên máy chủ có 2 máy ảo hoạt động. Máy ảo A chạy chương trình
rmiregistry và Máy ảo B chạy phần cài đặt của đối tượng.
Hình II.6: Cơ chế hoạt động của máy ảo Java trên mô hình mạng vật lý
II.3 GIỚI THIỆU JDBC (Java DataBase Connectivity)
JDBC của Sun là một công cụ phổ dụng hỗ trợ việc xây dựng những ứng dụng
tích hợp, dựa trên những CSDL khác nhau được thiết lập ở nhiều nơi khác nhau trên
mạng. JDBC là giao diện để kết nối với CSDL, gồm một tập các lớp đối tượng hỗ trợ để
xử lý CSDL quan hệ và để tương tác với các nguồn dữ liệu khác nhau.
JDBC API (Application Programming Interface) được JavaSoft phát triển và là
một phần của tất cả các cài đặt ứng dụng của JVM. JDBC API cung cấp các chức năng
cơ bản để truy nhập đến hầu hết các CSDL thông qua SQL như:
- Thực hiện các truy vấn vào một CSDL.
- Xử lý kết quả truy vấn.

- Xác định các thông tin về cấu hình hệ thống.
JDBC định nghĩa các đối tượng API và các hàm để tương tác với những CSDL.
Chương trình ứng dụng Java kết nối các CSDL phải được thực hiện theo các bước sau:
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
19
Tiểu luận Lập trình mạng
1. Tạo đối tượng kết nối vào CSDL bằng cách gọi hàm getConnection() để nhận
đối tượng của lớp Connection.
2. Tạo ra một đối tượng của lớp Statement để xử lý câu lệnh.
3. Truyền tham số cho các lệnh SQL trong các hệ quản trị CSDL và các đối tượng
xử lý câu lệnh đó.
4. Kết quả truy vấn là đối tượng của lớp ResultSet.
Sau đây là một số giao diện, một số lớp trong gói java.sql và một số hàm chính của
chúng.
II.3.1 Lớp DriverManager
Lớp DriverManager chịu trách nhiệm nạp các bộ điều khiển JDBC và tạo ra sự
kết nối giữa các đối tượng của CSDL. Trước khi sử dụng một bộ điều khiển (Driver) thì
nó phải đăng ký với DriveManager nhờ hàm forName() của lớp Class:
try{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Class.foeName(“com.oracle.jdbc.OracleDriver”);
} catch (ClassNotFoundException e){
… //xử lý ngọai lệ
}
Sau đó chương trình phải kết nối với CSDL bằng cách sử dụng
DriverManager.getConnection(jdbc:driver:databaseName)
II.3.2 Giao diện Connection
Giao diện java.sql.Connection phục vụ cho việc kết nối các CSDL
Tạo một đối tượng con để kết nối:

GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
20
Tiểu luận Lập trình mạng
Connection con =
DriverManager.getConnection(“url”,”username”,”password”);
Trong đó: url là jdbc:driver:databaseName
Một số hàm:
Public abstract void commit() throws SQLException; ủy quyền thay đổi những
kết quả đã cập nhật, nếu không thì những thay đổi trong quá trình cập nhật CSDL sẽ
không được thực thi.
Public abstract boolean getAutoCommit() throws SQLException;
Public abstract void setAutoCommit(boolean autoCommit) throws
SQLException; khôi phục các thông tin nếu giao dịch không thực hiện thành công.
II.3.3 Giao diện Statement
Giao diện Statement để thực hiện các câu lệnh của SQL.Trong Statement có các
hàm: execute(), executeQuery(), executeUpdate(),
executeBatch()…. nhận các tham đối là các câu lệnh của SQL để thực hiện như:
CREATE, UDATE, INSERT… và có thể xử lý theo lô.
Tạo đối tượng của Statement:
Statement stmt = con.createStatement();
kết quả truy vấn được từ CSDL chỉ cho phép đọc.
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
kết quả truy vấn được từ CSDL cho phép thay đổi dữ liệu.
Hàm addBatch(): cho phép thực hiện cập nhật các trường dữ liệu cùng một lúc.
Hàm executeBatch(): chuyển các lệnh SQL thực hiện theo lô và trả về số bản ghi đã
được cập nhật theo lô.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh

21
Tiểu luận Lập trình mạng
Trong Statement có các hàm: execute(), executeQuery(), executeUpdate(),
executeBatch()…. nhận các tham đối là các câu lệnh của SQL để thực hiện như:
CREATE, UDATE, INSERT… và có thể xử lý theo lô.
II.3.4 Giao diện ResultSet
Kết quả của các câu lệnh xử lý với SQL được lưu trữ và xử lý thông qua đối
tượng của ResultSet. Chẳng hạn:
ResultSet rs = stmt.executeQuery(“SELECT * FROM SANPHAM”);
đối tượng rs của ResultSet chứa những kết quả truy vấn vào CSDL SANPHAM
theo câu lệnh SELECT của SQL.
Hàm getString(“fieldname”), getInt(“fieldname”), : đọc giá trị các trường dữ
liệu.
Hàm boolean next(): chuyển sang hàng tiếp theo
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
22
Tiểu luận Lập trình mạng
CHƯƠNG III
CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ DỮ LIỆU KHI CẬP
NHẬT TRONG CÁC CƠ SỞ DỮ LIỆU PHÂN TÁN TẠI CÁC
NGÂN HÀNG
III.1 ĐẶT VẤN ĐỀ
Trong thực tế hiện nay hầu hết các hệ thống ngân hàng đều được xây dựng với hệ
thống cơ sở dữ liệu tập trung. Việc truy vấn trên cơ sở dữ liệu tập trung có những thuận
lợi và khó khăn nhất định. Trong những khó khăn đó khó khăn lớn nhất phải tính đến đó
chính là việc giải quyết tốc độ truy cập vào một cơ sở dữ liệu lớn, tập trung. Có nhiều
biện pháp giải quyết đã được đặt ra và một trong những giải pháp đó chính là việc phân
tán cơ sở dữ liệu đặt trên nhiều vị trí khác nhau. Việc truy vấn trên các cơ sở dữ liệu này
thông qua mạng truyền thông. Trong bài tiểu luận này chúng em xin giả lập một hệ 3

Server với 3 cơ sở dữ liệu phân tán tương ứng để mô phỏng cho bài toán đảm bảo gắn bó
dữ liệu khi cập nhật trong cơ sở dữ liệu phân tán tại các ngân hàng.
III.2 XÂY DỰNG CƠ SỞ DỮ LIỆU PHÂN TÁN
Bài toán xây dựng một hệ cơ sở dữ liệu phân tán được đặt ở vị trí khác nhau, tương
ứng với ba Server. Giả sử ba vị trí được đặt là: Hà Nội, Đà Nẵng và Sài Gòn ta có ba cơ
sở dữ liệu tương ứng đó là: HNBank Database, DNBank Database và SGBank Database.
Khi phân mảnh dữ liệu ra các vị trí ta dựa vào tiêu chí phân tán là mã số tài khoản
của (AccID). Những tài khoản nằm ở Server Hà Nội, Đà Nẵng, Sài Gòn có mã số tài
khoản lần lượt bắt đầu bằng hai ký tự: “HN”, “DN”, “SG”.
Ba cơ sở dữ liệu tương ứng:
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
23
Tiểu luận Lập trình mạng
Hình III-1: HNBank Database
Hình III-2: DNBank Database
Hình III-3: SGBank Database
III.3 XÂY DỰNG BỘ PHÂN PHỐI KẾT NỐI SERVER
Bài toán xây dựng một bộ điều phối kết nối đến các Server. Bộ điều phối kết nối
căn cứ vào mã số tài khoản do người sử dụng cung cấp mà thực hiện tự động kết nối đến
Server cần thiết để truy vấn. Cụ thể ở đây khi phân tích mã số tài khoản mà nhận thấy mã
số tài khoản được bắt đầu bằng xâu: “HN” thì kết nối đến Server ở Hà nội, “DN” thì kết
nối đến Server ở Đà Nẵng, “SG” thì kết nối đến Server ở Sài Gòn.
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
24
Tiểu luận Lập trình mạng
Yêu cầu dịch vụ từ người dùng ở đây được mô tả bằng việc xem tài khoản, cộng
hoặc trừ tài khoản. Khi muốn xem tài khoản người sử dụng cần cung cấp mã số tài khoản
và mã Pin, khi muốn thực hiện gửi vào hoặc rút ra từ tài khoản người sử dụng cần cung

cấp thêm số tiền. Yêu cầu sẽ được gửi đến các Server, yêu cầu Server kiểm tra tài khoản
gửi đến thực hiện giao dịch và gởi trả lại số tiền hiện tại trong tài khoản.
Hình III-4: Mô hình hệ thống ngân hàng chạy mạng với CSDL phân tán
III.4 XÂY DỰNG CÁC PHƯƠNG THỨC TRÊN SERVER
Trên các Server xây dựng các phương thức: Kết nối cơ sở dữ liệu, phương thức truy
vấn tài khoản và phương thức cập nhật tài khoản. Các phương thức này khi cần thực hiện
thì được triệu gọi từ Client.
- Phương thức kết nối:
public DNBankImpl()throws RemoteException{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
GVHD: PGS.TS Lê Văn Sơn HVTH: Bạch Ngọc Dương
Nguyễn Hữu Thị Mỹ Linh
25

×