1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng hệ thống chat video cho doanh nghiệp vừa và nhỏ

85 420 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 2,07 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

-Phần cuối cùng là kết luận sau khi làm luận văn và định hướng phát triển Trong quá trình thực hiện, tuy được sự giúp đỡ nhiệt tình của thầy PGS.TS Cao Tuấn Dũng là giảng viên Viện công

Trang 1

──────── * ───────

LUẬN VĂN

TỐT NGHIỆP THẠC SĨ

NGÀNH CÔNG NGHỆ THÔNG TIN

VIDEO CHO DOANH NGHIỆP VỪA VÀ NHỎ

Học viên thực hiện : Nguyễn Hoàng Linh

Lớp 2014A-KTPM

Giảng viên hướng dẫn: TS Cao Tuấn Dũng

HÀ NỘI 3-2016

Trang 2

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 2

Mục lục

Mục lục 2

LỜI CAM ĐOAN 5

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ 6

DANH MỤC HÌNH ẢNH 7

DANH MỤC CÁC BẢNG 7

LỜI MỞ ĐẦU 8

PHẦN I: TỔNG QUAN 9

1 Lý do lựa chọn đề tài 9

2.Lịch sử nghiên cứu 9

2.1.Giai đoạn 1 10

2.2.Giai đoạn 2 10

3.Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu 10

4 Các luận điểm cơ bản và đóng góp mới của tác giả 11

5.Phương pháp nghiên cứu 11

PHẦN II: NỘI DUNG 12

CHƯƠNG 1: CÁC HỆ THỐNG HIỆN TẠI VÀ ĐỊNH HƯỚNG GIẢI PHÁP 12

1.Các hệ thống cùng loại 12

2.Định hướng giải pháp 15

2.1.Các mô hình giải pháp cho Video Streaming 15

2.2.Ưu nhược điểm của từng mô hình 17

2.3.Đánh giá và định hướng giải quyết 18

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG NGHỆ LIÊN QUAN 20

1.Kĩ thuật Streaming Video 20

1.1.Các giao thức trong Video Streaming 20

1.2.Chuẩn mã hóa video 22

2.Tổng quan về các hệ thống điện toán đám mây hiện nay 23

2.1.Amazon - Amazon Web Services (AWS) 23

2.2.Microsoft - Microsoft Azure 23

2.3.Google - Google Cloud Platform 24

2.4.Các dịch vụ điện toán đám mây khác 24

3.Công nghệ WebRTC 25

3.1.Giới thiệu 25

3.2.Kiến trúc WebRTC 25

3.3.Các giao thức của WebRTC 28

3.4.Các kĩ thuật của WebRTC 30

3.5.Cách thức hoạt động của WebRTC 31

3.6.Bảo mật trong WebRTC 32

3.7.Tiềm năng và hướng phát triển của WebRTC 33

4.Công cụ lựa chọn thực hiện 33

4.1.Giai đoạn 1 33

4.2.Giai đoạn 2 33

CHƯƠNG 3: CÁC KẾT QUẢ ĐẠT ĐƯỢC 36

1.Thiết kế hệ thống 36

Trang 3

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 3

1.1.Các chức năng chính của hệ thống 36

1.2.Kiến trúc tổng thể hệ thống 37

1.3.Quy trình tổng quát của một phiên chat video 39

1.4.Các thành phần trong hệ thống 40

1.4.1.Hệ thống SDK BKRTC 40

1.4.1.1.Các chức năng chính của hệ thống BKRTC 40

1.4.1.2.Kiến trúc của hệ thống BKRTC 42

1.4.1.3.Quy trình xử lý của hệ thống BKRTC 45

1.4.1.4.Tập các API của hệ thống BKRTC 47

1.4.1.5.Giải pháp giải quyết các vấn đề hệ thống 50

Giải pháp kết nối N Peer 50

1.4.2.Hệ thống Video Chat (Backend-Client) 51

1.4.2.1.Kiến trúc của hệ thống Video Chat 51

1.4.2.2.Các chức năng chính của hệ thống 53

1.4.2.2.1 Họp 53

1.4.2.2.2 Đặt lịch họp 56

1.4.2.2.3 Quản lý lưu trữ 58

1.4.2.3 Quy trình một phiên chat sử dụng bộ SDK trong hệ thống 60

1.4.2.4.Giải pháp giải quyết các vấn đề hệ thống 61

Giải pháp lưu trữ video của hệ thống Video Chat 61

1.4.3 Mobile Client 61

1.4.3.1.Kiến trúc hệ thống Mobile Client 62

1.4.3.2.Các chức năng chính của hệ thống Mobile Client 63

1.4.3.2.1.Họp 63

1.4.3.2.2.Đặt lịch họp 65

1.4.3.4.Giải pháp giải quyết các vấn đề khi phát triển Mobile Client 66

1.4.3.4.1.Tích hợp SDK vào Mobile Client 66

1.4.3.4.2.Xử lý về giao thức 66

2.Kết quả thực hiện, cài đặt hệ thống 67

2.1.Kết quả cài đặt 67

2.1.1.Hệ thống BKRTC 67

2.1.2.Hệ thống Frontend 68

2.1.3.Mobile Client 73

2.2.Đánh giá hiệu năng hệ thống 74

3.Đánh giá ưu nhược điểm, khả năng ứng dụng của hệ thống 76

Trang 4

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 4

3.1.Ưu điểm 76

3.2.Nhược điểm 76

3.3.Khả năng ứng dụng của hệ thống 77

PHẦN III: KẾT LUẬN VÀ PHÁT TRIỂN 78

1.Hệ thống 78

1.1.Đánh giá chung 78

1.2.Công việc đã làm được 78

1.3.Những vấn đề chưa giải quyết 78

1.4.Định hướng phát triển đề tài 79

2.Công nghệ ứng dụng 79

2.1.Đánh giá chung 79

2.2.Khả năng ứng dụng 79

2.3.Hướng phát triển của công nghệ 79

TÀI LIỆU THAM KHẢO 81

PHỤ LỤC 82

1 Một số hình ảnh kết quả đạt được trong giai đoạn 1 82

2 Kết quả còn đang thử nghiệm ở giai đoạn 2 83

3 Hướng dẫn cài đặt hệ thống 83

Trang 5

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 5

LỜI CAM ĐOAN

Tôi xin cam đoan:

1 Những nội dung trong luận văn này là công trình nghiên cứu của tôi dưới sự hướng dẫn trực tiếp của TS Cao Tuấn Dũng

2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

3 Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công

bố trong bất kỳ công trình nào khác

4 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm

Hà Nội, ngày 1 tháng 10 năm 2016

Tác giả luận văn

Nguyễn Hoàng Linh

Trang 6

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 6

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

STT Từ viết tắt Ý nghĩa

gian thực trên Web

Software Development Kit - Bộ thư viện phát triển ứng dụng streaming video được viết bằng JavaScript của người thực hiện đề tài

Trang 7

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 7

DANH MỤC HÌNH ẢNH

Hình 1 Kiến trúc Streaming Video sử dụng mô hình Client – Server 16

Hình 2 Kiến trúc Streaming Video áp dụng mô hình P2P 17

Hình 3 Mô hình hệ thống video chat 19

Hình 4 Kiến trúc WebRTC 26

Hình 5 Chồng giao thức của WebRTC 28

Hình 6 Mô hình cơ chế Signaling 32

Hình 7 Các chức năng chính của hệ thống 36

Hình 8 Kiến trúc tổng quan hệ thống 38

Hình 9 Các chức năng chính của hệ thống BKRTC 41

Hình 10 Kiến trúc hệ thống BKRTC 43

Hình 11 Quá trình Signaling 46

Hình 12 Kiến trúc phân phối kết nối N Peer 50

Hình 13 Kiến trúc hệ thống Video Chat 51

Hình 14 Biểu đồ trình tự chức năng tạo phòng họp 53

Hình 15 Biểu đồ trình tự chức năng vào phòng họp 54

Hình 16 Biểu đồ trình tự chức năng rời phòng họp 55

Hình 17 Biểu đồ trình tự chức năng đặt lịch họp 57

Hình 18 Biểu đồ trình tự chức năng quản lý lưu trữ 59

Hình 19 Kiến trúc react-native app 62

Hình 20 Biểu đồ trình tự chức năng họp với Mobile Client 64

Hình 21 Biểu đồ trình tự chức năng đặt lịch họp Mobile Client 65

Hình 22 Giao diện quản lý người dùng hệ thống BKRTC 68

Hình 23 Giao diện màn hình chính của người dùng hệ thống Video Chat 69

Hình 24 Giao diện đặt lịch họp 70

Hình 25 Email thông báo lịch họp 71

Hình 26 Giao diện màn hình phòng họp của hệ thống Video Chat cũ 71

Hình 27 Giao diện màn hình phòng họp của hệ thống Video Chat 72

Hình 28 Giao diện chat 1-1 Mobile Client 73

Hình 29 Giao diện chat 1-n của Mobile Client 74

Hình 30 Giao diện phần mềm 82

Hình 31 Chat text 83

Hình 32 Chat video 83

DANH MỤC CÁC BẢNG Bảng 1 So sánh WebRTC và VOIP trong hệ thống Video Conferencing 28

Bảng 2 Tập các API của bộ thư viện 50

Bảng 3 Kiểm thử thời gian tạo thành công một phiên chat 75

Bảng 4 Đánh giá hiệu năng bằng phương pháp Round Trip Time 76

Trang 8

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 8

LỜI MỞ ĐẦU

Từ xưa đến nay, nhu cầu trao đổi thông tin của các thành viên trong doanh nghiệp đã là nhu cầu cấp thiết hằng ngày Đối với doanh nghiệp mà các thành viên không ngồi cùng vị trí thì việc tìm kiếm một kênh để các thành viên trao đổi thông tin lại càng cần thiết Với thời đại Internet phát triển như hiện nay, việc trao đổi thông tin qua chat văn bản cũng đã khá phổ biến Tuy nhiên việc chat âm thanh, hình ảnh thì không phải doanh nghiệp nào cũng có thể tiếp cận được vì các vấn đề liên quan đến xây dựng hệ thống, chi phí, bản quyền Việc này càng khó khăn hơn đối với doanh nghiệp vừa và nhỏ Nhận thấy hệ thống chat video là một hệ thống lớn, khá phức tạp ,chứa đựng nhiều công nghệ, nền tảng, giao thức hay và cần thiết đối với cả người dùng cá nhân và doanh nghiệp Do đó, sau thời gian nghiên cứu,

em đã được nhận đề tài luận văn tốt nghiệp rất thực tế đó là:

”Xây dựng hệ thống chat video cho doanh nghiệp vừa và nhỏ”

Để tiện theo dõi em xin trình bày đề tài theo 3 phần chính như sau:

-Phần đầu là tổng quan về quá trình thực hiện luận văn, các đóng góp và phương pháp nghiên cứu của tác giả

-Phần tiếp theo là nội dung chính bao gồm nghiên cứu công nghệ hiện tại, định hướng giải pháp, cơ sở lý thuyết và kết quả đạt được sau khi xây dựng hệ thống -Phần cuối cùng là kết luận sau khi làm luận văn và định hướng phát triển

Trong quá trình thực hiện, tuy được sự giúp đỡ nhiệt tình của thầy PGS.TS Cao Tuấn Dũng là giảng viên Viện công nghệ thông tin và truyền thông – giáo viên hướng dẫn, các em sinh viên (Nguyễn Hoàng Anh, Nguyễn Nho Quốc Việt, Phạm Hồng Thanh) và các bạn nhưng với trình độ, thời gian có hạn, tài liệu tham khảo hạn chế nên có thể có nhiều thiếu xót, rất mong được các thầy cô và bạn bè góp ý để luận văn của em được tốt hơn

Trang 9

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 9

Để làm được hệ thống chat video này, cần nắm được nhiều công nghệ khá phức tạp, đã được nhiều chuyên gia và các nhà phát triển nghiên cứu và hoàn thiện mấy chục năm nay như các giao thức streaming video thời gian thực, các thuật toán

mã hóa hình ảnh, âm thanh, các công nghệ sử dụng để phát triển backend server, ứng dụng Web, client Android, client iOS…

Tuy nhiên, đề tài về streaming video này là một đề tài khá lớn và nhiều kiến thức ở nhiều mảng khác nhau, nên cần mất khá nhiều công sức và thời gian để định hướng và phát triển đề tài

2.Lịch sử nghiên cứu

Quá trình nghiên cứu đề tài trải qua khá nhiều giai đoạn, trong đó từ sơ khai đến khi tìm được công nghệ để phát triển hệ thống là một quá trình tương đối dài

Có thể được chia làm 2 giai đoạn:

o Giai đoạn 1: Tên đề tài là phát triển phần mềm chat video sử dụng điện toán đám mây

o Giai đoạn 2: Tên đề tài chuyển thành phát triển hệ thống chat video cho doanh nghiệp vừa và nhỏ

Trang 10

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 10

Chi tiết kết quả tìm hiểu và đạt đƣợc qua giai đoạn 1 sẽ đƣợc trình bày ở phần PHỤ LỤC I

Kết thúc giai đoạn này, tác giả đã thử nghiệm thành công việc xây dựng ứng dụng chat văn bản và video sử dụng các dịch vụ điện toán đám mây trên nền tảng Android Tuy nhiên, nhận thấy việc sử dụng các dịch vụ này sẽ không đóng góp và cải thiện đƣợc các hệ thống đang có, không có tính khoa học trong luận văn, chỉ có ứng dụng trong thực tiễn Ngoài ra các dịch vụ này so với chi phí ở Việt Nam thì còn khá lớn Sau khi có kết quả từ hệ thống xây dựng đƣợc, nó không có giá trị khoa học và không đóng góp sâu trong việc xây dựng hệ thống này Do đó, tác giả chuyển sang sử dụng một công nghệ còn khá mới và mã nguồn mở, đó là WebRTC

3.Mục đích nghiên cứu của luận văn, đối tƣợng, phạm vi nghiên cứu

Do trong quá trình thực hiện đề tài có nhiều giai đoạn khác nhau nên đôi lúc mục đích, đối tƣợng, phạm vi nghiên cứu cũng có phần khác nhau qua các thời kì Nhƣng tựu chung lại là:

3.1 Mục đích nghiên cứu:

Tìm hiểu các công nghệ streaming video để xây dựng hệ thống chat video cho doanh nghiệp vừa và nhỏ

3.2 Đối tƣợng nghiên cứu:

o Hiện trạng của các hệ thống chat video hiện tại

Trang 11

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 11

o Các công nghệ streaming video thời gian thực

o Các công nghệ để xây dựng hệ thống chat video

3.3 Phạm vi nghiên cứu:

Xây dựng bộ thư viện cho nhà phát triển có thể sử dụng để xây dựng hệ thống của riêng họ một cách dễ dàng nhất, có thể không đi sâu vào các chức năng chi tiết của từng doanh nghiệp

Phát triển hệ thống trên các nền tảng Web, Android, iOS… nếu có thể

4 Các luận điểm cơ bản và đóng góp mới của tác giả

Qua quá trình nghiên cứu và thử nghiệm, tác giả mong muốn đóng góp một

số điều sau đây:

nhất hiện nay đòi hỏi sử dụng các giải pháp về phần cứng, mạng…

đám mây để so sánh với dịch vụ đang phát triển

mở để so sánh với các dịch vụ có sẵn của điện toán đám mây và có thể ứng dụng trực tiếp vào doanh nghiệp

o Cung cấp một bộ thư viện phía trên nền tảng WebRTC giúp cho các nhà phát triển xây dựng hệ thống của riêng họ một cách dễ dàng hơn

o Thử nghiệm và và đưa vào hoạt động được trên nhiều nền tảng như Web, Android, iOS…

5.Phương pháp nghiên cứu

Khảo sát, nghiên cứu, thử nghiệm, đánh giá, phát triển dịch vụ, xây dựng hệ thống:

o Khảo sát, nghiên cứu, thử nghiệm và đánh giá các hệ thống và dịch vụ có thể ứng dụng trong streaming video hiện có

streaming video thời gian thực

cầu bài toán và có thể cạnh tranh tốt với các công nghệ khác hiện có

sử dụng SDK này để phát triển hệ thống của riêng doanh nghiệp

o Xây dựng một hệ thống chat video cho doanh nghiệp vừa và nhỏ dựa trên SDK đã xây dựng

Trang 12

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 12

PHẦN II: NỘI DUNG

CHƯƠNG 1: CÁC HỆ THỐNG HIỆN TẠI VÀ ĐỊNH HƯỚNG GIẢI PHÁP 1.Các hệ thống cùng loại

o Skype

Là phần mềm được nhiều cá nhân và tổ chức doanh nghiệp đang sử dụng Skype cho phép nhắn tin, thực hiện các cuộc gọi thoại hoặc cuộc gọi video miễn phí Hỗ trợ hầu hết các nền tảng như PC, mobile, web … Skype không đề cập về số người tối đa có thể tham gia vào một cuộc gọi video tuy nhiên họ khuyến khích một nhóm chat video không quá 5 người Vấn đề này có thể do Server vật lý của Skype đặt ở nước ngoài Thực tế cho thấy số lượng người tối đa tham gia vào nhóm chat video tùy thuộc vào đường truyền mà thành viên sử dụng Chất lượng Skype là khá tốt, được đánh giá là phần mềm video chat tốt nhất hiện nay với khả năng chịu lỗi

và đáp ứng ngay trong điều kiện mạng không ổn định Skype sử dụng chuẩn mã hóa

âm thanh SILK do Skype tự phát triển nên cho chất lượng âm thanh ổn nhưng không được đánh giá cao còn hình ảnh sử dụng chuẩn mã hóa VP8 và H.264, chuẩn được sử dụng hầu hết trong các thiết bị hiện nay

Các tính năng được hỗ trợ trên Skype:

 Quản lý nhóm, quản lý lịch sử chat và gửi file rất tốt

 Chat theo nhóm kín hoặc chat giữa 2 người

ảnh, gửi video độ dài tối đa 3 phút, gửi thông tin liên lạc

 Gọi điện trực tiếp đến số điện thoại (tính năng mất phí)

 Tìm kiếm người dùng trên Skype: theo tên, email, …

 Chat video: hỗ trợ tắt hình ảnh hoặc âm thanh, chụp ảnh màn hình khi chat, chia sẻ màn hình máy tính, thêm người khi chat, trong qua trình chat video vẫn hỗ trợ đầy đủ các tính năng của chat văn bản Khi chat nhóm có thể kết thúc cuộc gọi với bất kì thành viên trong nhóm

Ưu điểm: Là sản phẩm miễn phí tốt nhất và được khá nhiều cá nhân và doanh nghiệp sử dụng Hỗ trợ hầu hết các tính năng: gọi Video, chat văn bản, gửi file… Giao diện thân thiện với người dùng và hỗ trợ trên các nền tảng khác nhau Các cuộc gọi video được kiểm soát tốt nhờ công nghệ dựng hình khi người gọi có vấn đề với cuộc gọi Video

Nhược điểm: khả năng xử lý âm thanh không được đánh giá cao Hạn chế số người tham gia phụ thuộc vào đường truyền, chất lượng hình ảnh chưa tốt khi sử dụng chat video quá 5 người Không hỗ trợ lưu lại cuộc gọi khi chat nhóm Bảo mật chưa ổn vì dữ liệu có thể gửi cho những người dùng Skype khác một cách dễ dàng Skype chủ yếu được dùng trên máy tính nên chiếm một tài nguyên máy khá lớn Do

đó doanh nghiệp không khuyến khích nhân viên gửi nhận file với Skype

o Yahoo! Messenger

Trang 13

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 13

Phần mềm miễn phí cho phép nhắn tin nhanh phổ biến Cung cấp các tính năng gọi điện từ máy tính tới máy tính, truyền tập tin, dùng Webcam, dịch vụ nhắn tin và tạo phòng chat với nhiều loại khác nhau Sử dụng giao thức VOIP để thực hiện các cuộc gọi thoại và video chat

Ưu điểm: là phần mềm chat văn bản cực kì tốt và là phần mềm được sử dụng nhiều nhất trong việc kết nối bạn bè trước đây Có cơ chế nhắn tin theo mô hình không đồng bộ tức là có thể gửi tin nhắn offline

Nhược điểm: chat video không tốt, hình ảnh và âm thanh không được đánh giá cao Việc truyền dữ liệu bị giới hạn dung lượng và tốc độ chậm hơn các phần mềm khác, điều này làm Yahoo bị đánh bật bởi Skype Không hỗ trợ nên nhiều nền tảng chủ yếu trên máy tính Do có sử dụng công nghệ cũ và chậm đổi mới nên giờ Yahoo! Messenger đã chính thức bị khai tử vào ngày 5/8/2016

o Hangouts

Là một tiện ích đi kèm với Google+ Người dùng có thể sử dụng chính tài khoản Gmail của mình để sử dụng Hangouts sử dụng trực tiếp trên trình duyệt Chrome nên có thể sử dụng với hầu hết các máy tính và hệ điều hành khác nhau Trên nền tảng di động Hangouts hỗ trợ 2 nền tảng chính là iOS và Android Một điều quan trọng Hangouts hoàn toàn miễn phí Với giới hạn tối đa 10 người trong một cuộc gọi nhóm video chat, Hangouts có thể đáp ứng được với một nhóm nhỏ Hangouts sử dụng bộ mã hóa độc quyền Vidyo, đây là công nghệ ứng dụng tiêu chuẩn V.264-SVC có khả năng tương thích với các đường truyền thấp như tại Việt Nam Tuy nhiên phải cài thêm phần mở rộng trên trình duyệt nên có hạn chế về tính năng, không tối ưu hóa được phần cứng của máy

Các tính năng hỗ trợ trên Hangouts:

gửi emotion, thêm người vào nhóm khi đang chat, hỗ trợ chat văn bản trong khi chat video

 Chat video: hỗ trợ tắt mở hình ảnh âm thanh, tùy biến thiết bị đầu vào micro, camera Tùy chỉnh chất lượng âm thanh hình ảnh Hỗ trợ chia

sẻ màn hình, không hỗ trợ chia màn hình nhỏ của người gọi trong nhóm

Ưu điểm: miễn phí, hỗ trợ tốt với mạng băng thông thấp Yêu cầu băng thông tối thiểu của các thiết bị đầu cuối là 300 kbps

Nhược điểm: Do liên kết với tài khoản Google nên việc truyền dữ liệu ra ngoài doanh nghiệp là không thể kiểm soát được

o Talky.io

Phần mềm hỗ trợ tối đa 5 người tham gia vào một phiên hội thoại Không cần đăng nhập có thể sử dụng luôn và hoàn toàn miễn phí Các tính năng hỗ trợ:

 Tạo phòng chat không cần đăng kí tài khoản

Trang 14

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 14

 Hỗ trợ tính năng chia sẻ màn hình

 Hỗ trợ tính năng khóa phòng

 Chat video: hỗ trợ tính năng tắt mở tín hiệu media của thiết bị dùng và của các thành viên trong phòng

 Chat văn bản: không hỗ trợ tính năng gửi dữ liệu tĩnh: file, hình ảnh…

Ưu điểm: hỗ trợ hầu hết tính năng phục vụ cho cuộc trò chuyện bằng video với độ trễ thấp, ổn định, thời gian thiết lập phiên chat nhanh

Nhược điểm: vẫn chưa có tính năng gửi file, giao diện chưa thân thiện với người dùng

o Appear.in

Phần mềm hỗ trợ tối đa 8 người tham gia vào phòng họp chat cùng một lúc với chất lượng khá tốt Không cần đăng nhập, chỉ cần nhập tên phòng chat là tạo được chat nhóm Hơn nữa phần mềm này hoàn toàn miễn phí Các tính năng appear.in hỗ trợ:

 Tạo phòng chat không cần đăng kí tài khoản

 Hỗ trợ tính năng cài đặt chất lượng video và âm thanh

 Quản lý phòng chat

văn bản

Ưu điểm: Hỗ trợ khá tốt, nhất là cho việc thuyết trình

Nhược điểm: Không có tính năng gửi file Hiệu năng không ổn định khi băng thông mạng thấp (hình ảnh bị treo, tiếng bị méo …)

o Rocket.Chat

Là một Web Chat Server được phát triển dựa trên Javascript, sử dụng Meteor framework, được 1 lượng khá lớn các cá nhân và doanh nghiệp sử dụng Nó là giải pháp tốt cho các cá nhân và các công ty muốn host riêng tư các dịch vụ chat của họ hoặc phát triển để xây dựng và tạo ra các nền tảng chat riêng của chính họ

Ưu điểm:

Trang 15

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 15

Nhược điểm:

 Nhiều chức năng đối với doanh nghiệp sẽ gây mất thời gian như NewS Feed, Mentions không cần thiết

đó nó không được phổ biến như các sản phẩm cùng loại khác

Thông qua tìm hiểu các phần mềm phổ biến trên thị trường, các phần mềm này hỗ trợ đáp ứng tốt dành cho cá nhân người sử dụng, nhưng đối với việc sử dụng trong môi trường đặc thù doanh nghiệp thì chưa đáp ứng được nhu cầu, khả năng áp dụng các phần mềm này trong môi trường doanh nghiệp đều rất hạn chế, chủ yếu sử dụng như là một luồng phụ hỗ trợ cho công việc

2.Định hướng giải pháp

2.1.Các mô hình giải pháp cho Video Streaming

Hiện nay có rất nhiều giải pháp xoay quanh việc phát triển công nghệ Video Streaming và điều quan trọng nhất là mô hình hệ thống cung cấp dịch vụ Streaming Video sao cho hiệu quả nhất với từng bài toán, yêu cầu cụ thể Các mô hình phổ biến hiện nay được áp dụng trong Streaming Video đó là mô hình tập trung truyền thống Client – Server và mô hình phi tập trung P2P (Peer to Peer)

 Mô hình truyền thống Client – Server là mô hình được áp dụng phổ biến nhất hiện nay bởi dễ dàng xây dựng với thời gian nhanh và ít các kĩ thuật xử lý phức tạp Việc mở rộng hệ thống dễ dàng theo hướng mở rộng chiều dọc tức là nâng cấp thiết

bị phần cứng Kiến trúc của hệ thống Video Streaming khi sử dụng mô hình Client – Server cũng giống như các hệ thống khác bao gồm: thành phần Client và thành phần Server xử lý logic, nhưng có thêm máy chủ Streaming (Streaming Server) Trên thực tế máy chủ Streaming hoàn toàn có thể đặt cùng với Server để tiết kiệm chi phí xây dựng Nhưng để tốt nhất cho việc nâng cao chất lượng dịch vụ nên tách máy chủ Streaming ra thành một thành phần riêng vì để tránh quá tải hệ thống, máy chủ Streaming đảm nhiệm vai trò rất nặng phải giao tiếp với rất nhiều Client liên tục bởi cung cấp dịch vụ Streaming Ở mô hình này các Client sẽ gửi yêu cầu tới máy chủ Streaming để thiết lập yêu cầu bắt tay và truyền dữ liệu đa phương tiện Server

là nơi có thể lưu tất cả dữ liệu hoặc là chuyển tiếp dữ liệu và phải chịu tải rất nhiều Client cùng một thời điểm Với ứng dụng được nhiều người sử dụng thì vấn đề Server quá tải là không thể tránh khỏi, chắc chắn hiệu suất và chất lượng của dịch

vụ sẽ giảm đi rất nhiều, độ trễ lớn sẽ xảy ra

Trang 16

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 16

Hình 1 Kiến trúc Streaming Video sử dụng mô hình Client – Server

Để giảm tải cho hệ thống sử dụng mô hình Client – Server, có các giải pháp như multicast Multicast giúp giảm tải cho máy chủ bằng cách tạo một luồng duy nhất từ nguồn sau đó truyền tới các Client

 Mô hình phi tập trung P2P (Peer to Peer) là mô hình thay đổi cách tiếp cận truyền thống nhằm giải quyết các vấn đề mà mô hình Client – Server gặp phải Đặc biệt trong ứng dụng Streaming Video thì P2P đang dần được thay thế cho mô hình truyền thống Với việc áp dụng mô hình Peer to Peer vấn đề về quá tải và tắc nghẽn đường truyền sẽ được giải quyết và mô hình này thường được áp dụng trong các hệ thống lớn đòi hỏi khả năng chịu tải, dung lỗi và mở rộng hệ thống sau này, các vấn

đề về mở rộng hệ thống sẽ không tốn chi phí nhưng các kĩ thuật được áp dụng điều phối và tăng chất lượng dịch vụ thì rất phức tạp bởi điều kiện cơ sở hạ tầng mạng ở nhiều nơi là khác nhau Ở mô hình P2P mọi Client đều có thể đóng vai trò là Server, chỉ cần một Server để điều khiển hoạt động cho nhiều Client khác nhau Điều quan trọng nhất của P2P đó là Client không chỉ lấy dữ liệu mà còn có thể chia sẻ dữ liệu với các Client khác Chia sẻ dữ liệu là kĩ thuật quan trọng nhất của P2P nếu không

có thì sẽ như là mô hình Client – Server Khi một số lượng lớn Client tham gia vào quá trình Streaming thì P2P cho thấy hiệu quả hơn hẳn, mô hình Client – Server hiệu suất sẽ bị giảm đi đồng nghĩa độ trễ tăng lên, còn với P2P càng nhiều Client thì hiệu suất càng tăng về lý thuyết nhưng kĩ thuật P2P là một kĩ thuật khó độ trễ có giảm hay không còn do người phát triển chọn chiến lược như nào Điều cấm kị trong Streaming Video là độ trễ lớn, người dùng sẽ phải chờ đợi lâu dẫn đến làm giảm khả năng trải nghiệm, gây mất niềm tin người dùng

Trang 17

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 17

Hình 2 Kiến trúc Streaming Video áp dụng mô hình P2P

2.2.Ưu nhược điểm của từng mô hình

o Mô hình Client – Server

- Ưu điểm:

 Dễ tiếp cận, dễ xây dựng và phát triển nhanh chóng

 Phù hợp với hệ thống nhỏ và vừa đáp ứng số lượng người dùng vừa phải

sẽ sử dụng một phần đường truyền mạng của Server, khi có quá nhiều Client sẽ sử dụng đường truyền mạng tỉ lệ nghịch với số lượng Client

 Khả năng mở rộng hệ thống, vì phụ thuộc rất nhiều vào phần cứng dẫn đến mở rộng hệ thống sẽ rất tốn kém

 Đầu tư tốn kém cho đường truyền của Server

o Mô hình Peer to Peer

- Ưu điểm:

 Phù hợp với các hệ thống lớn

 Bù đắp nhược điểm của hệ thống dùng mô hình Client – Server trong trường hợp có nhiều Client cùng Streaming trong cùng một thời điểm

Trang 18

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 18

 Tránh khỏi tình trạng nút thắt cổ chai tại máy chủ Streaming

- Nhược điểm:

 Hệ thống sử dụng Peer to Peer có nhược điểm là không có định hướng, một yêu cầu tìm kiếm thường được gửi cho số lượng lớn các Client trong mạng làm tiêu tốn một lượng lớn băng thông mạng

 Việc phát triển hệ thống là khó khăn vì kĩ thuật sử dụng phức tạp

 Vấn đề bảo mật và an toàn thông tin, vì lấy dữ liệu từ các Client khác dẫn đến xảy ra vấn đề bảo mật vì có thể dữ liệu từ các Client đó có chứa mã độc

2.3.Đánh giá và định hướng giải quyết

Hệ thống video chat là một hệ thống lớn và đòi hỏi sự ổn định và đáp ứng cao Hơn nữa theo yêu cầu đặt ra chi phí đầu tư thấp và khả năng mở rộng hệ thống

mà không cần tốn nhiều chi phí về sau mà vẫn đáp ứng được nhu cầu sử dụng Vì vậy lựa chọn mô hình phi tập trung Peer to Peer là phù hợp để phát triển hệ thống dành cho tổ chức doanh nghiệp vừa và nhỏ Với mô hình P2P, công nghệ Streaming Video hiện nay hỗ trợ sử dụng mô hình này có WebRTC WebRTC là công nghệ mới và vẫn đang được phát triển, hỗ trợ nhiều nền tảng Web và di dộng Với phạm

vi của đề tài xây dựng hệ thống video chat cho doanh nghiệp vừa và nhỏ trên nền tảng Web và sau khi lựa chọn mô hình để giải quyết bài toán, em đã lựa chọn WebRTC là công nghệ nền tảng để thực hiện luận văn tốt nghiệp

Để phát triển hệ thống theo hướng hướng dịch vụ Dịch vụ Video Streaming

sẽ được tách độc lập với hệ thống video chat Với công nghệ nền WebRTC cung cấp giải pháp Streaming Video, từ đó xây dựng bộ thư viện trên nền tảng này bằng cách xây dựng hệ thống cung cấp dịch vụ tạo ra giá trị mới cho WebRTC Bộ thư viện giúp các lập trình viên tiếp cận với Video Streaming dễ dàng hơn với giải pháp tốt hơn Với cách thức tiếp cận này, người phát triển phần mềm sẽ không cần phải

lo lắng về vấn đề mở rộng hệ thống trong việc Streaming Video nữa mà đã được lo bởi bên cung cấp dịch vụ

Hướng tới xây dựng mã nguồn mở và tăng khả năng mở rộng sau này, hệ thống video chat sẽ được chia làm 2 thành phần riêng biệt: thành phần xử lý logic, tương tác với hệ quản trị cơ sở dữ liệu (Backend) và thành phần tương tác trực tiếp với người dùng (Frontend)

Trang 19

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 19

Hình 3 Mô hình hệ thống video chat

Trang 20

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 20

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG NGHỆ LIÊN QUAN 1.Kĩ thuật Streaming Video

Streaming Video là kĩ thuật áp dụng cho trường hợp truyền dữ liệu nguồn có kích thước lớn thay thế cho phương thức Download Kĩ thuật này sử dụng công nghệ nén và chia nhỏ dữ liệu nguồn ở phía Server và giải nén kết hợp với hiển thị

dữ liệu đồng thời trong lúc tiếp tục tải video (quá trình Buffering) Chính vì vậy mà người dùng có thể xem nội dung ngay mà không phải chờ đợi Kĩ thuật này đặc biệt lợi thế trong việc phát trực tiếp Streaming video được thể hiện dưới 3 dạng:

truyền đến người dùng khi có yêu cầu

 Video thời gian thực: là dữ liệu được truyền trực tiếp từ nguồn cung cấp dữ liệu theo thời gian thực (từ camera, microphone, …)

 Video tương tác: dữ liệu được tương tác giữa các Client với nhau hoặc Client với Server Ví dụ như hệ thống Video Conferencing

1.1.Các giao thức trong Video Streaming

Để có thể thực hiện Streaming, giao thức đóng vai trò quan trọng trong việc truyền dữ liệu qua mạng Internet Trong quá trình phát triển có nhiều giao thức được dùng trong Video Streaming như TCP, UDP, HTTP hay các giao thức thời gian thực như RTP, RTSP, RTCP

o TCP/UDP (Transmission Control Protocol / User Datagram Protocol)

khiển lỗi, điều khiển luồng, tránh tắc nghẽn Như vậy TCP giúp cho các ứng dụng tránh khỏi các phức tạp trong quản lý lưu lượng dữ liệu qua mạng internet, và chia sẻ tài nguyên Tùy vào thông lượng yêu cầu, đặc tính mạng và chất lượng mong muốn của dịch vụ mà TCP được sử dụng cho việc Streaming media Nếu thông lượng mạng lớn hơn tốc độ dữ liệu thì Streaming sử dụng TCP sẽ hoạt động tốt Nhưng với cơ chế điều khiển tắc nghẽn của TCP sẽ làm giảm tốc độ truyền dữ liệu cho dù thông lượng có tốt tới mức nào Nếu một đoạn dữ liệu bị mất thì bên gửi sẽ phải gửi lại cho bên nhận đến khi bên nhận thông báo nhận được đoạn dữ liệu hoặc hủy bỏ quá trình truyền và ngắt kết nối Với ứng dụng Streaming thì đây là điều không mong muốn vì mỗi dữ liệu đa phương tiện có một thông tin định thời và phải được playback ở thời điểm định trước nếu không sẽ trở nên vô ích Vì vậy dữ liệu nhận về mà sau thời điểm định trước thì dữ liệu này sẽ vô ích như vậy thông lượng truyền dữ liệu này bị lãng phí

cho TCP ở trên IP theo yêu cầu của từng ứng dụng UDP không cung cấp

sự tin cậy và thứ tự truyền nhận mà TCP làm Chính vì vậy UDP nhanh

và hiệu quả hơn với các trường hợp kích thước nhỏ và yêu cầu khắt khe

về thời gian Tuy nhiên trong Streaming media đôi khi vẫn cần phải thực

Trang 21

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 21

hiện điều khiển luồng và chống tắc nghẽn, lấy lại gói tin bị mất UDP được sử dụng phổ biến trong các ứng dụng Streaming media, Voice Over

IP, game trực tuyến…

o HTTP (Hyper Text Transfer Protocol)

cung cấp dịch vụ không cần phải đầu tư thêm media server chuyên dụng

của dịch vụ web và cho phép nó trở nên trong suốt với firewall và gateway

với các ứng dụng Client Hầu hết các chương trình media player hỗ trợ thêm pseudo-streaming qua giao thức HTTP/TCP ngoài giao thức Streaming của riêng nó

năng (performance) Ở tầng ứng dụng, web server không được thiết kế để chuyển các dữ liệu đa phương tiện nhạy cảm thời gian và do đó không phải lúc nào nó cũng cho phép đảm bảo việc playback dữ liệu đa phương tiện một cách trơn tru, không giật khi server phục vụ một lượng lớn người

dùng

o RTP (Real Time Transport Protocol)

 RTP được thiết kế để truyền dữ liệu trong các ứng dụng thời gian thực như audio, video

 RTP được thiết kế độc lập với các giao thức ở tầng thấp hơn Trên Internet các gói tin RTP được chuyển đi bằng giao thức UDP Có thể thực hiện dồn (multiplexing) nhiều luồng dữ liệu RTP trong 1 máy (mỗi luồng dùng 1 cổng UDP)

 RTP cũng hỗ trợ cả vận chuyển đơn tuyến (unicast) và vận chuyển đa tuyến (multicast) như IP multicast RTP định nghĩa một giao thức điều khiển gọi là RTCP (RTP control protocol) để cung cấp các chức năng điều khiển như: đồng bộ hóa, báo cáo thống kê gói tin nhận về,…

o RTCP (Real Time Transport Control Protocol)

 Giao thức RTCP dựa trên việc truyền đều đặn các gói điều khiển tới tất cả các người tham gia vào phiên truyền

 Sử dụng cơ chế phân phối gói dữ liệu trong mạng giống như giao thức RTP, tức là cũng sử dụng các dịch vụ của giao thức UDP qua một cổng UDP độc lập với việc truyền các gói RTP

o RTSP (Real Time Streaming Protocol)

Trang 22

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 22

 RTSP là giao thức ở tầng application được thiết kế để điều khiển sự truyền dữ liệu đa phương tiện (như play, pause, seek) với thông tin thời gian đi kèm (như audio, video)

 Giao thức này độc lập với các giao thức ở tầng thấp hơn, do đó nó có thể được thực hiện trên TCP hoặc UDP hoặc giao thức khác ở tầng giao vận

hiện và triển khai

 RTSP là giao thức stateful, do đó yêu cầu client duy trì thông tin về phiên streaming qua các request RTSP

 Cả RTSP client và server đều có thể đưa ra RTSP request

 Dữ liệu đa phương tiện được truyền ngoài phải dùng protocol riêng biệt (có thể là giao thức RTP)

1.2.Chuẩn mã hóa video

Để có thể truyền tín hiệu video qua mạng đòi hỏi phải được nén lại (mã hóa)

để số hóa nội dung Ở bên nhận tín hiệu Stream cần phải giải nén trước khi hiển thị

Kĩ thuật nén được sử dụng để đáp ứng yêu cầu về chất lượng, băng thông và yêu cầu về thời gian thực Hiện nay có 2 chuẩn mã hóa thông dụng là H.264 và VP8

o Chuẩn mã hóa H.264

H.264/MPEG-4 Part 10 hay AVC (Advanced Video Coding - Mã hóa video cao cấp), thường được gọi tắt là H.264, là một chuẩn mã hóa/giải mã video và định dạng video đang được sử dụng rộng rãi nhất hiện nay để ghi, nén và chia sẻ video

độ phân giải cao, dựa trên việc bù trừ chuyển động (motion-compensation) trên từng block (block oriented)

Ý tưởng phát triển bắt đầu từ năm 1998, đến tháng 5 năm 2003, các tiêu chuẩn của phiên bản đầu tiên được hoàn thành Là chuẩn mã hóa tốt nhất hiện nay cho việc streaming media

Mã hóa H.264 giảm 50% bit/s cho video so với MPEG-4 bù chuyển động, ít hơn 3 lần so với MPEG không bù chuyển động, ít hơn 6 lần so với Motion JEG Nhưng nhược điểm H.264 là vấn đề liên quan rất nhiều đến phần cứng và chi phí đắt đỏ khiến việc xây dựng hệ thống sử dụng chuẩn này khó khăn hơn

o Chuẩn mã hóa VP8

VP8 là chuẩn mã hóa do On2 Technology phát triển, thay thế các phiên bản VP6, VP7 trước đó Những codec nổi tiếng được On2 phát triển gồm VP3 (tiền thân của Theora), VP6 (Adobe sử dụng cho Flash Player 8 và các phiên bản sau), VP7 (Skype sử dụng) Khi so sánh giữa VP8 và H.264 dường như không có sự khác biệt đáng kể nhưng H.264 chất lượng tốt hơn một chút, hơn nữa VP8 còn tỏ ra vượt trội khi dung lượng tập tin nhỏ hơn nhiều lần Một điều quan trọng nữa VP8 hoàn toàn miễn phí

Trang 23

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 23

Hiện tại VP8 được sử dụng trong chuẩn video WebM Với WebM người dùng đầu cuối không cần phải quan tâm tới các Plugin và các loại chuẩn khác, các trình duyệt hiện nay Mozilla FireFox, Opera, Chrome đều hỗ trợ Với việc công nghệ HTML5 lên ngôi và chuẩn mã hóa VP được phát triển không ngừng tạo điều kiện thuận lợi cho công nghệ streaming phát triển và đơn giản hóa hơn

2.Tổng quan về các hệ thống điện toán đám mây hiện nay

Hiện nay các dịch điện toán đám mây ngày càng phổ biến Nhu cầu sử dụng điện toán đám mây từ thế giới phần mềm và ứng dụng cũng ngày càng lớn lên Do

đó, dịch vụ này thu hút được nhiều công ty công nghệ lớn tham gia

Các dịch vụ cơ bản của điện toán đám mây gồm 3 lớp dịch vụ chính:

o IaaS (Infrastructure as a Service): Là lớp dịch vụ cơ bản nhất của điện toán đám mây, cho phép người dùng thiết lập các máy chủ và ổ cứng lưu trữ ảo trong trung tâm dữ liệu

o PaaS (Platform as a Service): Là một gói công cụ và dịch vụ hỗ trợ các nhà phát triển phần mềm xây dựng ứng dụng mà không phải lo lắng về máy chủ

để vận hành chúng

o SaaS (Software as a Service): Là phần mềm như một dịch vụ Thường được cung cấp bởi bên thứ 3, giúp người dùng truy cập đến các phần mềm trên nền tảng đám mây mà không cần quản lý cơ sở hạ tầng và nền tảng nó đang chạy Trong việc sử dụng điện toán đám mây vào bài toán streaming video, ta cần sử dụng khá nhiều dịch vụ như dịch vụ hạ tầng cho máy chủ, phần mềm streaming video, dịch vụ lưu trữ dữ liệu… Ta sẽ đi tìm hiểu dịch vụ đám mây của các công ty lớn hiện nay

2.1.Amazon - Amazon Web Services (AWS)

Là công ty đi đầu và thống trị thị trường điện toán đám mây hiện nay Amazon Web Services giới thiệu lần đầu vào năm 2006, lúc đó hãng chỉ có một gói dịch vụ duy nhất về hạ tầng cơ bản : EC2 (Elastic Compute Cloud) cho các máy chủ

ảo Sau đó, hãng bổ sung thêm Amazon S3 (Simple Storage Service) phục vụ lưu trữ file Với định hướng đúng đắn, Amazon đã có hàng loạt lợi thế về tính năng và quy mô hơn hẳn các đối thủ của mình Các dịch của Amazon Web Services đã trở thành tiêu chuẩn cho ngành điện toán đám mây Nhiều công ty lớn trong đó có cả CIA(cục tình báo Mỹ) cũng là khách hàng của AWS Một số dự báo cho rằng AWS

có khả năng cung cấp điện toán ngang với 14 đối thủ đứng kế tiếp cộng lại

2.2.Microsoft - Microsoft Azure

Microsoft đã có nền tảng đám mây vào những năm 2000, nhưng Azure chỉ được chính thức giới thiệu vào năm 2010, để cạnh tranh với AWS Sự xuất hiện của

Trang 24

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 24

AWS tác động trực tiếp đến doanh thu của hãng Nếu khách hàng chuyển sang sử dụng các dịch vụ đám mây của Amazon, họ sẽ không cần đến các bản nâng cấp trong các gói phần mềm của Microsoft nhƣ Microsoft Server, và SQL Server Những sản phẩm này vốn đƣợc dùng trong các trung tâm dữ liệu, và đã mang lại doanh thu lớn cho hãng Mặc dù xuất phát sau một thời gian dài so với Amazon, Microsoft cũng có những lợi thế của riêng mình Với kinh nghiệm trong gói phần mềm cho trung tâm dữ liệu, Microsoft đã mang đến cho khách hàng một nền tảng dịch vụ lớp PaaS, giúp các nhà phát triển phần mềm xây dựng ứng dụng của họ dễ dàng hơn Azure có lợi thế về sự quen thuộc với các khách hàng Các doanh nghiệp xây dựng ứng dụng trên nền NET có thể chuyển ứng dụng của mình lên mây dễ dàng hơn so với đối thủ cạnh tranh AWS Ngoài ra, nhiều khách hàng lớn đã ký hợp đồng dài hạn với Microsoft cũng là một lợi thế cho việc dùng thử Azure Hiện tại, Azure vẫn đang đi sau so với AWS Nhƣng một số dự báo cho rằng điện toán đám mây chỉ là cuộc đua giữa Amazon và Microsoft

2.3.Google - Google Cloud Platform

Google là một trong số ít các ông lớn có điều kiện phát triển nền tảng đám mây sớm nhất Chỉ hai năm sau khi Amazon ra mắt AWS, Google cũng giới thiệu Google App Engine để giúp các nhà phát triển xây dựng ứng dụng trên đám mây Đến năm 2013, Google đã thêm vào một tính năng cạnh tranh, đổi tên sản phẩm thành Google Cloud Platform Công ty cũng có những khách hàng lớn nhƣ Coca-Cola, Best Buy Với truyền thống mã nguồn mở và luôn cống hiến hết mình cho thế giới, Google có lợi thế với các nhà phát triển hơn so với các hãng khác Nhƣng khi so sánh với tốc độ phát triển khủng khiếp của Amazon và Microsoft thì Google vẫn còn cách rất xa

2.4.Các dịch vụ điện toán đám mây khác

Cũng có nhiều công ty công nghệ lớn khác phát triển điện toán đám mây nhƣ IBM, Oracle, HP Nhƣng gần nhƣ không thể cạnh tranh với 3 công ty lớn trên và không có nhiều khách hàng đến với nền tảng đám mây của họ Nhiều công ty còn gặp vấn đề khó khăn về vận hành, quy mô và lợi nhuận không khả quan, có thể sẽ phải đóng cửa dịch vụ này để sử dụng dịch vụ của các công ty trên

Nhận xét:

Do các lợi thế của Amazon với các dịch vụ điện toán đám mây, nên trong giai đoạn 1 của luận văn, tác giả đã chọn Amazon Web Services cho việc cung ứng các dịch vụ cho luận văn

Trang 25

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 25

3.Công nghệ WebRTC

3.1.Giới thiệu

WebRTC (Web Real Time Communication) là một tập hợp các tiêu chuẩn và giao thức cho phép các trình duyệt Web giao tiếp, thực hiện trực tiếp các tính năng truyền thông đa phương tiện và thời gian thực như gọi điện, video call và truyền dữ liệu bằng cách sử dụng các API Javascript [1]

Ý tưởng phát triển WebRTC được nhóm kỹ sư chịu trách nhiệm cho Google Hangouts đưa ra từ năm 2009 Vào thời gian đó, để truyền tải video, hình ảnh trên web thì người ta thường phải dùng đến Flash Nhóm kỹ sư Hangouts lại không muốn sử dụng công nghệ này, và họ bắt đầu tự làm một chuẩn riêng cho mình [3]

Vào đầu năm 2010, Google đã hoàn tất việc mua lại On2, một công ty chuyên về mã hoá hình ảnh đã phát triển bộ mã VP, mới nhất hiện này là phiên bản VP9 On2 đã xác định bộ mã của mình như một sản phẩm bản quyền miễn phí thay thế cho bộ mã H.26x, mà sẽ được tiêu chuẩn hoá, đăng ký bản quyền và sử dụng rộng rãi Google sau đó đã mở các công nghệ của On2 cho thế giới và phát hành mã nguồn mở VP8 Ý tưởng của việc này là thay thế H.264 cho video trên web và thông qua đó, giảm chi phí bản quyền cho mọi người, đặc biệt là cho chính Google [3]

Đến 27/10/2011, W3C ra mắt bản nháp đầu tiên của WebRTC Tháng 12/2012, Chrome 23 ra mắt, trở thành trình duyệt đầu tiên có tích hợp WebRTC ngay từ bên trong [3]

Như vậy, WebRTC còn tương đối mới mẻ so với các công nghệ truyền video khác và hiện tại còn đang được phát triển và hoàn thiện

từ các thiết bị Microphone, Webcam

Sơ đồ kiến trúc của WebRTC

Trang 26

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 26

Hình 4 Kiến trúc WebRTC

(tham khảo tại https://webrtc.org/architecture/) Chúng ta có thể thấy có 2 tầng quan trọng cần để ý đó là: WebAPI và WebRTC API:

o Với WebRTC API các nhà phát triển trình duyệt Web sẽ can thiệp được sâu vào bên trong của WebRTC để đóng góp và tạo thêm các API ở tầng sâu của WebRTC

o Với Web API các nhà phát triển ứng dụng web sẽ sử dụng các API của tầng này để xây dựng ứng dụng và tạo ra các dịch vụ ở bên trên

o Khối giao vận (Transport): có chức năng đảm nhận thiết lập kết nối giữa các mô hình mạng khác nhau STUN, TURN, ICE và thực hiện chức năng truyền thông thời gian thực Đây chính là điểm khác so với VoIP truyền thống, WebRTC cung cấp mô hình truyền thông Peer to Peer [1]

o Video Engine: có chức năng xử lý chuỗi khung hình video, từ camera vào mạng và từ mạng tới màn hình [1]

 WebRTC sử dụng VP8 video codecs

 Video jitter buffer: WebRTC sử dụng bộ đệm jitter tự động cho video, bộ đệm jitter là một vùng dữ liệu chia sẻ, đây là nơi các gói tin video có thể được thu thập, lưu trữ và gửi đến bộ xử lý hình ảnh ở đây là VP8 trong các khoảng cách đều nhau Vì thực tế các gói tin đến có thể bị trễ, bộ đệm jitter giúp che giấu ảnh hưởng đến chất lượng hình ảnh

Trang 27

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 27

 Image enhancements: là bộ tăng cường hình ảnh, nó cho phép loại

bỏ nhiễu từ các tín hiệu thu được từ WebCam

o Voice Engine: có chức năng xử lý chuỗi âm thanh từ card âm thanh vào mạng [1]

 iSAC / iLBC / OPUS audio codec: giúp che giấu tác động của hiện tượng jitter và hiện tượng mất gói tin, cho phép giữ độ trễ ở mức thấp nhất có thể và duy trì chất lượng âm thanh tốt nhất

 iSAC là audio codec cung cấp băng thông rộng, siêu rộng cho VoIP và streaming audio iSAC sử dụng 16kHZ hoặc 32kHZ để lấy mẫu tần số với một tốc độ thích hợp trong khoảng 12-52kbps

 iLBC là codec cung cấp băng thông hẹp cho VoIP và streaming audio, sử dụng tần số lấy mẫu 8kHZ

hệ thống họp sử dụng kĩ thuật Video Streaming

Tiêu chí VoIP WebRTC

trường hợp

Không bắt buộc sử dụng một giao thức cụ thể

STUN/TURN/ICE

Trang 28

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 28

Bảng 1 So sánh WebRTC và VOIP trong hệ thống Video Conferencing

3.3.Các giao thức của WebRTC

Khác với mô hình Video Streaming truyền thống, chồng giao thức của WebRTC có chút khác biệt do đặc tính truyền thông thời gian thực theo giao thức Peer to Peer

Hình 5 Chồng giao thức của WebRTC

(tham khảo tại http://servicelab.github.io/immovator-webrtc/architecture.html#/14)

- Tầng ứng dụng: RTP, SRTP, SDP, ICE, STUN, TURN

 Giao thức SDP (Session Description Protocol)

SDP là một tập hợp các quy tắc xác định cách các phiên đa phương tiện có thể được thiết lập để cho phép các điểm cuối tham gia hiệu quả trong phiên

Trang 29

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 29

WebRTC sử dụng SDP để mô tả các đặc điểm media của các client trong mô hình P2P [4]

 Giao thức STUN (Session Traversal Utilities for NAT)

Là giao thức sử dụng để giúp đi qua NAT Nó giúp phân giải địa chỉ IP public để tìm được client đích cần kết nối Trong WebRTC, STUN Client được cài đặt trên browser của client Sẽ có một máy chủ STUN, hiện tại Google đang cấp miễn phí máy chủ này Gói tin kiểm tra STUN được gửi trước khi thiết lập phiên để cho phép trình duyệt biết nếu nó đang ở đằng sau một NAT và để khám phá các địa chỉ ánh xạ và cổng của nó Thông tin này sau đó được sử dụng để xây dựng các địa chỉ ứng cử viên trong kỹ thuật ICE STUN có thể vận chuyển qua UDP, TCP hoặc TLS [4]

Là mở rộng của giao thức STUN, nó cung cấp con đường khác để chuyển tiếp dữ liệu trong trường hợp ICE thất bại Cũng như STUN, TURN Client được cài đặt sẵn trong trình duyệt, một máy chủ Web sẽ chạy phần mềm TURN Server Trình duyệt yêu cầu địa chỉ IP công cộng và cổng để làm thông tin cho ứng viên để chuyển tới TURN Server, thông tin này sau đó được bao gồm như là địa chỉ ứng cử viên trong ICE

TURN được dùng để thiết lập địa chỉ để các Client có thể vận chuyển dữ liệu trực tiếp sử dụng UDP, TCP, TLS Nhưng thông tin liên lạc giữa TURN Server và TURN Client luôn là UDP [4]

 Giao thức ICE:

ICE (Interactive Communication Establishment) là một giao thức được tiêu chuẩn hóa bởi IETF Có nhiều lý do mà kết nối giữa 2 client không thể làm việc được Nó sẽ phải vượt qua tường lửa sẽ ngăn chặn việc mở kết nối sau đó cung cấp địa chỉ IP duy nhất nếu như client không có địa chỉ IP public và chuyển dữ liệu thông qua một máy chủ nếu router không cho phép kết nối trực tiếp tới các client khác (đây là cơ chế NAT) ICE sẽ thiết lập phiên media dựa trên UDP đi qua NAT ICE sẽ tìm ra đường tốt nhất để kết nối giữa các peer, nó thử tất cả các khả năng có thể kết nối song song và chọn ra đường kết nối hiệu quả nhất [4]

 Tầng giao vận

 Giao thức TLS (Transport Layer Security):

Là giao thức an toàn tầng giao vận được xây dựng dựa trên chuẩn SSL (Secure Socket Layer) TLS là lớp ở giữa TCP và các ứng dụng cung cấp các dịch

vụ bảo mật và xác thực Các gói tin được mã hóa trên đường truyền và được xác thực bằng cách sử dụng chứng chỉ kỹ thuật số Phiên bản WebRTC hiện tại chỉ hỗ trợ với giao thức TLS để bảo mật, nếu không sẽ không sử dụng được API của WebRTC [4]

Trang 30

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 30

Là một dạng của TLS chạy trên UDP, nó cung cấp cơ chế bảo mật và xác thực tương tự như TLS Tuy nhiên, UDP qua NAT dễ dàng hơn TCP nên có thể phù hợp với các ứng dụng sử dụng mô hình P2P [4]

Là giao thức truyền dữ liệu tin cậy trong chồng giao thức IP, có cơ chế kiểm soát tắc nghẽn và kiểm soát luồng TCP được sử dụng để vận chuyển trên Web là HTTP nhưng không được sử dụng trong truyền thông thời gian thực là RTP do việc đảm bảo độ tin cậy dẫn đến tạo sự chậm chễ điều này không cho phép trong truyền thông thời gian thực [4]

Là giao thức truyền dữ liệu không tin cậy trong chồng giao thức IP vì vậy UDP nhanh hơn và hiệu quả hơn với dữ liệu kích thước nhỏ và yêu cầu khắt khe về thời gian, đặc biệt được sử dụng vận chuyển dữ liệu media thời gian thực là RTP [4]

Là giao thức truyền tải qua IP mới, tồn tại đồng mức với TCP và UDP SCTP hiện cung cấp các chức năng tầng truyền tải tin cậy hoặc không tin cậy trên IP SCTP không hỗ trợ phố biến trên các hệ điều hành như Window và MacOSX Các trình duyệt có riêng chồng giao thức SCTP được xây dựng sẵn cho kênh dữ liệu [4]

 Tầng mạng

Giao thức IP (Internet Protocol): Là giao thức thuộc tầng mạng làm nền tảng cho Internet, cung cấp khả năng kết nối các mạng con thành liên mạng để truyền dữ liệu IP là giao thức cung cấp dịch vụ phân phát datagram theo kiểu không liên kết

và không tin cậy nghĩa là không cần có giai đoạn thiết lập liên kết trước khi truyền

dữ liệu, không đảm bảo rằng IP datagram sẽ tới đích và không duy trì bất kỳ thông tin nào về những datagram đã gửi đi [4]

3.4.Các kĩ thuật của WebRTC

WebRTC cung cấp 2 dịch vụ là dịch vụ thời gian thực (Real Time Service) truyền tải dữ liệu media hình ảnh và âm thanh và dịch vụ phi thời gian thực (Non Real Time Service) dùng để truyền tải dữ liệu tĩnh thông thường WebRTC cung cấp 3 API chính cho việc phát triển ứng dụng trên nền tảng Web sau: Media Stream, PeerConnection, DataChannel [1]

o MediaStream: Một MediaStream là một đối tượng cho phép stream dữ liệu âm thanh và hình ảnh

Trang 31

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 31

RTCPeerConnection cung cấp một hàm API làm nhiệm vụ hoàn thành giao ước giữa hai trình duyệt Trong suốt quá trình giao ước này, các trình duyệt cung cấp các thông tin cần thiết để thiết lập kết nối: mô tả của phiên làm việc (những tính năng của trình duyệt) và các ứng viên ICE (thông tin về cổng và địa chỉ IP công cộng) Cần lưu ý rằng mô tả của WebRTC không nói

gì về cách thức những thông tin này được trao đổi

 Trình duyệt nguồn nhận hồi đáp

 Cả hai trình duyệt trao đổi các ứng viên ICE

 Khi một lượng ứng viên được trao đổi đủ cho một kết nối trực tiếp thì kết nối ngang hàng được thiết lập

o RTCDataChannel: là kênh truyền dữ liệu tĩnh như text, ảnh, phim … giữa các Peer

3.5.Cách thức hoạt động của WebRTC

WebRTC cung cấp mô hình hoạt động theo kiến trúc truyền thông không tập trung cụ thể là Peer to Peer (P2P) để trao đổi dữ liệu Ở mô hình này dữ liệu được chia làm 2 loại: dữ liệu điều khiển (chính là tín hiệu báo hiệu) và dữ liệu nội dung Các máy Client muốn giao tiếp với nhau phải thực hiện cơ chế bắt tay bằng cách sử dụng tín hiệu báo hiệu, sau đó mới có thể giao tiếp trực tiếp được với nhau Một vấn

đề nữa trong kết nối P2P sẽ gặp phải vấn đề về NAT và tường lửa Để giải quyết vấn đề này, các nhà phát triển WebRTC đã nghĩ đến việc tạo một cơ chế được gọi là WebRTC Signling [5]

WebRTC Signaling là quá trình thiết lập, điều khiển và kết thúc một phiên kết nối ngang hàng giữa các thiết bị đầu cuối [5] Trong quá trình Signaling, hai thiết bị đầu cuối muốn giao tiếp được với nhau thì mỗi thiết bị phải cung cấp các loại thông tin cần thiết sau:

để khởi tạo, đóng và sửa đổi trong quá trình giao tiếp

 Media Data: Dữ liệu đa phương tiện như bộ mã hóa và các loại dữ liệu đa phương tiện (video, audio, text, data …) Loại dữ liệu đa phương tiện sẽ được các bên thống nhất trao đổi

của mỗi thiết bị đầu cuối sử dụng trong quá trình giao tiếp

Trang 32

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 32

Ngoài ra còn có thêm các loại thông tin:

giao tiếp, thông tin điều khiển phiên làm việc được sử dụng trong thông điệp báo lỗi này

 Key Data: Khóa được dùng trong bảo mật, các thiết bị đầu cuối dùng khóa này để mở kết nối Signaling

Hình 6 Mô hình cơ chế Signaling

Mô hình WebRTC Signaling ta thấy rằng WebRTC không đặc tả một cơ chế truyền tín hiệu cố định bắt buộc nào làm cho WebRTC có khả năng tương thích với bất kì công nghệ nào, không phụ thuộc vào ngôn ngữ cụ thể Điều này làm cho các nhà phát triển dịch vụ WebRTC rất thoải mái trong việc xây dựng ứng dụng phần mềm thời gian thực

3.6.Bảo mật trong WebRTC

Cách thức bảo mật:

o WebRTC sử dụng giao thức an toàn, tin cậy như DTLS, SRTP

o Truy cập vào camera và micro phải được người dùng cho phép và phải mở chức năng media của trình duyệt

o WebRTC không phải là plugin, được chạy bên trong trình duyệt nên tránh được khả năng tấn công từ các plugin vào hệ thống [1]

Tuy nhiên các lỗ hổng bảo mật có thể được khai thác trong các ứng dụng sử dụng WebRTC như sau:

Trang 33

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 33

o Các dữ liệu media không được mã hóa có thể tận dụng để can thiệp trên đường truyền cũng như lấy cắp thông tin

o Ứng dụng sử dụng chức năng lưu trữ dữ liệu và có khả năng public

3.7.Tiềm năng và hướng phát triển của WebRTC

Với lợi thế và các dịch vụ mà WebRTC cung cấp, WebRTC đã làm thay đổi cuộc chơi trong thế giới VoIP Việc phát triển ứng dụng video call sẽ không còn khó khăn về phần cứng làm thế nào để kết nối và truyền tín hiệu, mọi thứ giờ trở nên đơn giản hơn rất nhiều WebRTC dễ dàng trong việc tạo ra các ứng dụng truyền thông đa phương tiện như webphone, ứng dụng họp trực tuyến, giáo dục, chăm sóc sức khỏe, tư vấn…

Ngoài tiềm năng phát triển các ứng dụng sử dụng video call, WebRTC còn

mở ra hướng đi trong phát triển công nghệ mới đó là Peer CDN (Content Delivery Network) – Mạng phân phối nội dung Peer CDN sử dụng chính khả năng trao đổi

dữ liệu theo cơ chế P2P của WebRTC làm nền tảng phát triển Peer CDN được áp dụng trong các ứng dụng như xem phim, nghe nhạc, lưu trữ…

4.Công cụ lựa chọn thực hiện

Từ các vấn đề đặt ra và yêu cầu thực tế của hệ thống qua từng giai đoạn, để giải quyết bài toán này, các công nghệ cần sử dụng như sau:

4.1.Giai đoạn 1

o Wowza Streaming Engine

Là một phần mềm phía server mạnh mẽ và nổi tiếng trên thế giới hiện nay

Nó có thể tùy biến và mở rộng để streaming các video và audio chất lượng cao tới các thiết bị Wowza Streaming Engine đang chạy trên Amazon EC2 cho phép người dùng có lợi thế về khả năng streaming rộng lớn của server cũng như tính linh hoạt

và mở rộng của Amazon Web Services [10] Wowza Streaming Engine trên Amazon EC2 rất thích hợp cho streaming các sự kiện truyền hình trực tiếp, các cuộc họp của các công ty Nó có thể được khởi động trong một số vùng hoạt động Amazon EC2 nên việc sử dụng Wowza Streaming Engine trên Amazon EC2 là đơn giản

Trong giai đoạn này tác giả sử dụng bộ engine dùng thử 6 tháng của Wowza Engine ở local để phát triển dự án

o Google Cloud Messaging - GCM

Là dịch vụ gửi tin nhắn miễn phí về thiết bị đăng kí với Google Cloud Message Server Dùng để gửi tin nhắn văn bản từ thiết bị Android tới Android

4.2.Giai đoạn 2

o WebRTC

Trang 34

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 34

Được sử dụng làm nền tảng cho việc xây dựng bộ thư viện phát triển ứng dụng streaming video theo mô hình P2P Từ bộ thư viện này áp dụng để xây dựng

hệ thống Video Chat

o NodeJS

NodeJS là phần mềm mã nguồn mở viết trên nền tảng là ngôn ngữ JavaScript NodeJS cho phép các ứng dụng viết bằng JavaScript chạy được trên máy chủ NodeJS có thể chạy được trên nhiều nền tảng khác nhau Linux, Windows, MacOS, được phát triển sử dụng V8 Engine để thực thi mã nguồn Một điều cần lưu

ý NodeJS không phải là ngôn ngữ lập trình mà là một nền tảng mã nguồn mở được viết trên ngôn ngữ JavaScript NodeJS cung cấp kiến trúc hướng sự kiện và non-blocking API, giúp tối ưu khả năng xử lý của ứng dụng và có khả năng mở rộng cao NodeJS thường được sử dụng cho các ứng dụng thời gian thực như ứng dụng chat, mạng xã hội

o AngularJS

AngularJS là một bộ Framework viết bằng JavaScript rất mạnh, thường được

sử dụng để xây dựng các ứng dụng SPA(Single Page Application) Angular hoạt động dựa trên các thuộc tính mở rộng của HTML tức các thuộc tính mà Angular cung cấp Đây là Framework mã nguồn mở miễn phí và ngày càng được các lập trình viên sử dụng để xây dựng Frontend cho hệ thống Angular sử dụng mô hình MVC trong xây dựng ứng dụng Web và sử dụng Service để tương tác với dữ liệu từ Server Ưu điểm của Angular cho phép tạo ứng dụng đơn giản, luồng thực hiện rõ ràng Ngoài ra, Angular còn có thể chạy được trên hầu hết các trình duyệt và có thể xây dựng được ứng dụng trên di động bằng Angular với Framework Ionic

cơ sở dữ liệu một lúc Đồng thời có tính bảo mật cao nên thích hợp cho các ứng dụng truy cập CSDL trên Internet MySQL miễn phí hoàn toàn và hỗ trợ trên các hệ điều hành khác nhau như Windows, Linux, MacOS …

o React-native

React-native là framework xây dựng ứng dụng di động native chỉ sử dụng Javascript do Facebook phát hành Nó cho phép các lập trình viên xây dựng các ứng dụng trên android và ios chỉ với một ngôn ngữ thống nhất là javascript nhưng mang lại trải nghiệm ứng dụng native thực sự [12] Tuy nhiên cũng có 1 số vấn đề về

Trang 35

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 35 thành phần hiển thị vẫn còn hạn chế do mới đƣợc xây dựng cách đây không lâu và hiệu năng chƣa thực sự tốt

Trang 36

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 36

CHƯƠNG 3: CÁC KẾT QUẢ ĐẠT ĐƯỢC

1.Thiết kế hệ thống

1.1.Các chức năng chính của hệ thống

Hình 7 Các chức năng chính của hệ thống

Trang 37

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 37

Các thành viên tương tác với hệ thống thông qua sử dụng các chức năng:

o Họp nhanh: Đây là chức năng chính của hệ thống, cho phép chat video và văn bản Người dùng chỉ sử dụng chức năng gọi nhanh với những thành viên khác đang ở trạng thái online Trong cuộc họp có thể thực hiện một

số chức năng như mời thêm thành viên, gửi dữ liệu, chat văn bản, chia sẻ màn hình, ghi lại cuộc họp…

o Đặt lịch họp: Là chức năng quan trọng thứ hai của hệ thống, cho phép thành viên đặt phòng họp trước mà không cần phải chờ đợi Phụ thuộc vào thời gian cuộc họp bắt đầu có hiệu lực, thời gian kết thúc cuộc họp và

số lượng tối đa người trong phòng Trong cuộc họp này người dùng cũng

có thể thực hiện thêm các chức năng như họp nhanh như mời thêm thành viên, gửi dữ liệu…

o Sửa thông tin cá nhân: Chức năng giúp tùy biến thông tin cá nhân phù hợp với nhu cầu sử dụng của người dùng hoặc yêu cầu công việc Do dành cho doanh nghiệp nên chức năng này sẽ hạn chế người dùng ở một

số mục mà chỉ người có quyền được phép thêm, sửa, xóa…

o Quản lý lưu trữ: Chức năng giúp người dùng theo dõi, upload và download video đã được lưu lại, quản lý lịch sử chat Với chức năng này người dùng sẽ có thể xem lại được cuộc họp mà không cần lưu ở máy và xem được khi có tin nhắn trong trường hợp offline

o Quản lý cuộc họp: Chức năng giúp người dùng theo dõi thông tin các cuộc họp có liên quan, có thể sắp xếp để theo dõi theo tuần, tháng

Admin tương tác với hệ thống thông qua sử dụng chức năng quản lý thành viên Chức năng này giúp admin thêm thành viên mới vào trong hệ thống và xóa bỏ thành viên không còn được sử dụng hệ thống Do hệ thống dành cho doanh nghiệp nên thành viên sẽ không được phép tự tạo riêng tài khoản cho mình để tránh tình trạng khó quản lý và tìm kiếm thành viên Với chức năng này có thể phân quyền người dùng với nhiều cấp bậc khác nhau

Với mục đích cung cấp bộ thư viện cho các lập trình viên phát triển hệ thống nên bộ SDK BKRTC được tách riêng hoàn toàn độc lập với các hệ thống khác, hệ

Trang 38

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 38

thống Client như Frontend, Mobile Client (Android, iOS) chỉ cần sử dụng bộ thư viện BKRTC để thực hiện công việc liên quan đến Streaming giữa các điểm Việc

sử dụng SDK giữa Frontend và Mobile Client có khác nhau ở một số điểm như các tham số đầu vào, các thành phần tương tác với hệ thống do nền tảng cơ bản của Mobile và ứng dụng Web là khác nhau…

Do hệ thống có nhiều thành phần và nhiều loại client tương tác với nhau, nên việc tách riêng các phần chuyên dụng cho hệ thống là đặc biệt hữu ích Kiến trúc xây dựng này giúp mở rộng hệ thống và kiểm soát các vấn đề dễ dàng hơn Hệ thống Client (Frontend và Mobile Client) đảm nhận vai trò giao tiếp với người dùng cuối và tương tác với SDK BKRTC để trao đổi dữ liệu media trong một phiên chat

Hệ thống Backend đảm nhận vai trò đứng sau xử lý logic, chuyển giao dữ liệu và tương tác với cơ sở dữ liệu

Hình 8 Kiến trúc tổng quan hệ thống Như phân tích ở trên, hệ thống được chia làm 3 hệ thống con, trong đó hệ thống SDK BKRTC được tách ra là dịch vụ riêng coi như là dịch vụ bên thứ 3 cung cấp cho hệ thống Frontend và Mobile Client (Android, iOS…) Thành phần Frontend và Mobile Client tương tác với hệ thống BKRTC thông qua việc tạo kết nối phiên video chat giữa các Client với nhau bằng bộ thư viện BKRTC Bộ thư viện này và hệ thống BKRTC kết nối với nhau bằng Web Socket Web Socket được lựa chọn bởi vì yêu cầu của dịch vụ phải đặt tính thời gian thực là quan trọng Việc tạo kết nối cuộc gọi phải đảm bảo liên tục đáp ứng với mọi trạng thái của Client

Trang 39

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 39

Thành phần Backend tương tác với thành phần Frontend và Mobile Client thông qua việc quản lý các dịch vụ của hệ thống bằng Web Service và Web Socket Web Service được viết theo chuẩn Restful – một chuẩn cho phép các thành phần của Web Service có thể được viết trên nhiều nền tảng khác nhau, có thể tương tác dễ dàng với nhau thông qua các API Web Socket được sử dụng với mục đích là giải pháp cho tính thời gian thực (Real Time) của hệ thống, người dùng có thể biết được trạng thái của các người dùng khác

độ xử lý nhanh, độ tin cậy cao, dễ dàng sử dụng

o Database Session : Lưu thông tin chat của phòng họp trong khoảng thời gian diễn ra cuộc họp

Client (Frontend - Mobile Client (Android, iOS…))

o Reverse Proxy Server: Có nhiệm vụ làm Proxy Server cho Application Client và caching dữ liệu tĩnh của ứng dụng phía Client

o Application Server: Xử lý các tác vụ phức tạp của hệ thống Client, điều phối và tương tác với cơ sở dữ liệu phía Client

o SDK: Bộ SDK của dịch vụ BKRTC được sử dụng cho chức năng cốt lõi của hệ thống

SDK BKRTC

o Reverse Proxy Server: Có nhiệm vụ làm Proxy Server cho ứng dụng phía

Server và caching dữ liệu tĩnh của ứng dụng phía Server

o Application Server: Xử lý các tác vụ phức tạp của hệ thống, điều phối,

tương tác với cơ sở dữ liệu của SDK

độ xử lý nhanh, độ tin cậy cao, dễ dàng sử dụng

o Database Session: Lưu lại phiên kết nối của Client

1.3.Quy trình tổng quát của một phiên chat video

o Quá trình một phiên chat video của hệ thống được thực hiện như sau:

 Người dùng vào link một cuộc gọi để bắt đầu tiến hành cuộc gọi

đã đăng nhập vào hệ thống chưa Nếu chưa đăng nhập người dùng phải đăng nhập Sau đó Client nhận diện đường link cuộc gọi, giải mã và kiểm tra

Trang 40

Học viên thực hiện:Nguyễn Hoàng Linh-CA140213-Lớp 2014A-KTPM 40

thông tin cuộc gọi từ đường dẫn nhận được để lấy các thông tin như tên phòng, đường dẫn

thực cuộc gọi của Backend để tránh trường hợp giả mạo đường dẫn để vào cuộc họp

 Sau khi xác thực thông tin cuộc gọi thành công, hệ thống Client kết nối tới SDK BKRTC để gửi yêu cầu kết nối cuộc gọi tới Signaling Server

 Signaling Server lưu lại kết nối vào một phòng dựa trên thông tin cuộc gọi, sau đó thực hiện cơ chế bắt tay lần lượt với các kết nối khác trong phòng Việc phân biệt giữa các kết nối dựa vào định danh (userId) của người dùng

gọi đó Dữ liệu video bắt đầu được truyền tải giữa các Client với nhau Lúc này người dùng có thể nói chuyện video và thực hiện các chức năng khác với mọi người trong phòng

1.4.Các thành phần trong hệ thống

1.4.1.Hệ thống SDK BKRTC

1.4.1.1.Các chức năng chính của hệ thống BKRTC

Ngày đăng: 25/07/2017, 21:58

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[5]. “Real-Time Communication with WebRTC Peer-To-Peer in the browser”, by Salvatore Loreto, Simon Pietro Romano, April 2014 Sách, tạp chí
Tiêu đề: Real-Time Communication with WebRTC Peer-To-Peer in the browser
[11]. "WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web” by Alan B. Johnston and Daniel C. Burnett Sách, tạp chí
Tiêu đề: WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web
[1]. Trang chủ WebRTC: http://webrtc.org/ Link
[6]. Muaz Khan, Turn Server Installation Guide, https://www.webrtc- experiment.com/docs/TURN-server-installation-guide.html, 25 Apr 2016 Link
[7].SamDutton, Getting Started With WebRTC ,http://www.html5rocks.com/en/tutorials/webrtc/basics/, Feb 2014 Link

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w