Tìm hiểu thế giới web từ con số 0 (Part III)- Amazon web services

Trong bài viết trước chúng ta đã tìm hiểu về web service, web service là gì và cách thức nó hoạt động ra sao. Thật là thiếu sót nếu không nhắc tới amazon web service khi tìm hiểu về web service. Vậy nên trong bài viết lần này cũng ta sẽ cùng đào sâu về web service thông qua tìm hiểu về amazon web service.

I. Amazon web services là gì?

Amazon Web Services (AWS), là một tập hợp các dịch vụ điện toán đám mây, còn được gọi là dịch vụ web, góp phần xây dựng nên nền tảng điện toán đám mây do Amazon.com cung cấp. Dịch vụ được chính thức đưa ra thị trường vào năm 2006, nhanh chóng đạt được mốc 180,000 developer đăng ký sử dụng vào 6/2007. Cùng với sự phát triển của Cloud Computing trong những năm gần đây, AWS đạt được mức tăng trưởng ấn tượng và là nhà cung cấp Cloud Computing có doanh thu lớn nhất thế giới hiện nay (ước tính 3.8 tỉ $ năm 2013). Amazon Web Services (AWS) cung cấp cho chúng ta một nền tảng cloud với cơ sở hạ tầng đáng tin cậy, có thể mở rộng và chi phí thấp, đặc biệt là có thể đáp ứng được hàng trăm, hàng ngàn doanh nghiệp trên khắp thế giới. (Theo Wikipedia)

Kiến trúc tổng quan của AWS

" Global Infrastructure: AWS cung cấp một cơ sở hạ tầng Cloud bảo mật cao cho cả những doanh nghiệp nhỏ cũng như các công ty toàn cầu. Cơ sở hạ tầng bao gồm Regions, Availability Zones, và Edge Locations cho phép các doanh nghiệp lưu trữ dữ liệu của họ một cách mềm dẻo trên nhiều khu vực địa lý và nhiều cơ sở được đặt trên một khu vực địa lý cụ thể.

Các dịch vụ cơ sở – Tính toán: AWS cung cấp cho các khách hàng những dịch vụ tính toán có thể mở rộng. Các thành phần cấu thành cho các dịch vụ tính toán của AWS bao gồm Amazon EC2 (Elastic Compute Cloud) cung cấp khả năng mở rộng, tính toán cho những gì cần sử dụng trên Cloud; Auto Scaling tự động mở rộng hoặc thu hẹp hiệu năng của Amazon EC2 theo những điều kiện được định nghĩa trước của khách hàng; và Amazon ELB (Elastic Load Balancing) tự động phân phối lưu lượng đầu vào của ứng dụng thông qua nhiều Amazon EC2 instances (instance có thể hiểu là virtual server).

*** Các dịch vụ cơ sở – Lưu trữ:*** Các dịch vụ lưu trữ trên AWS bao gồm Amazon S3, cung cấp một cơ sở hạ tầng cho việc lưu trữ toàn bộ những dữ liệu dự phòng, nó cho phép chúng ta lưu trữ và truy xuất tới bất kỳ khối dữ liệu nào, ở bất kỳ thời điểm nào và từ bất kỳ đâu trên Web; Amazon Glacier là một dịch vụ lưu trữ với chi phí cực kỳ thấp cung cấp một kho lưu trữ bảo mật và bền vững cho việc lưu trữ và sao lưu dữ liệu; Amazon Elastic Block Store (EBS) cung cấp block level storage volumes (nhiều thuật ngữ dịch ra tiếng việt sẽ gây khó hiểu và nhiều khi không nói lên được đúng ý nghĩa của từ/cụm từ đó nên cho phép mình để nguyên) cho việc sử dụng với Amazon EC2 instances; AWS Storage Gateway là một dịch vụ cho phép kết nối một phần mềm on-premise với hệ thống lưu trữ trên Cloud một cách liên tục và bảo mật. Và AWS Import/Export cho phép đẩy nhanh tiến độ di chuyển một lượng dữ liệu lớn vào ra AWS sử dụng các thiết bị lưu trữ di động.

Các dịch vụ cơ sở – Mạng: Các dịch vụ của AWS Networking giúp mở rộng các cơ sở hạ tầng của doanh nghiệp trên AWS Cloud. Các thành phần chính của tầng này là Amazon Route 53, là một Domain Name System (hệ thống tên miền) hoặc là một DNS web services; AWS Direct Connect giúp dễ dàng thiết lập kết nối mạng riêng giữa cơ sở hạ tầng của doanh nghiệp với AWS, giúp giảm thiểu chi phí, tăng băng thông, và cung cấp tính nhất quán; Amazon VPC cho phép bạn cung cấp một khu vực trên AWS Cloud mà tài nguyên có thể được khởi chạy trong một mạng ảo được định nghĩa bởi khách hàng

Các dịch vụ cơ sở – Database: Các dịch vụ AWS Database bao gồm Amazon RDS, một web services cho phép thiết lập, hoạt động và mở rộng cơ sở dữ liệu quan hệ trên Cloud; Amazon DynamoDB, một dịch vụ cơ sở dữ liệu NoSQL, có hiệu suất cao, hoàn toàn được quản lý cho phép dễ dàng thiết lập, hoạt động và mở rộng; Amazon ElasticCache, một web service dễ dàng để triển khai, hoạt động, và mở rộng một memory cache trên cloud; Amazon Redshift, một dịch vụ cơ sở dữ liệu quan hệ được thiết kế để lưu trữ dữ liệu trung tâm trong một tổ chức.

Application Services (Các dịch vụ ứng dụng) Các dịch vụ ứng dụng của hệ sinh thái AWS bao gồm Content Delivery Networking (mạng lưới phân phối nội dung), Search (tìm kiếm), Distributed Computing (tính toán phân tán) và các thư viện cũng như SDKs. Các sản phẩm như Amazon CloudSearch, Amazon Simple Workflow Service (SWF), Amazon Simple Query Service (SQS), Amazon Notification Service (SNS), và Amazon Simple Email Service (SES)." http://www.gimasys.com/aws/vi-0-177.html

Với một ứng dụng web từ cơ bản đến phức tạp nhất đều phải xây dựng nên từ các khối cơ bản. Sau đây chúng ta sẽ đi tìm hiểu chi tiết hơn các dịch vụ mà AWS cung cấp cho từng khối cơ bản đó: Lưu trữ (Storage) Bất kì ứng dụng nào cũng đều cần phải lưu trữ cho các tệp, các tài liệu, các dữ liệu thông tin của người dùng. Có thể tiến hành lưu trữ bất kỳ dữ liệu cần thiết cho ứng dụng của bạn trong Amazon Simple Storage Service (S3) với khả năng mở rộng, độ an toàn cao và với mức chi phí thấp cho việc lưu trữ.

Tính toán (Computing) Amazon Elastic Compute Cloud (EC2) cung cấp khả năng để mở rộng tài nguyên tính toán của bạn lớn lên hoặc giảm xuống dựa trên nhu cầu và tạo ra khả năng cung cấp dịch vụ mới một cách dễ dàng.

Gửi thông điệp (Messaging) Thực hiện tách riêng việc truyền thông điệp của bạn bằng cách sử dụng khả năng không giới hạn được cung cấp bởi Amazon Simple Queue Service (SQS).

Tập hợp dữ liệu (Datasets) Amazon SimpleDB (SDB) cung cấp khả năng mở rộng, lập chỉ mục, khả năng lưu trữ mà không cần bảo trì, cùng với việc thực hiện xử lý và truy vấn với tập hợp dữ liệu.

II. Amazon Simple Storage Service (S3)

Amazon Simple Storage Service (S3) cung cấp các giao diện dịch vụ Web cho việc lưu trữ và khôi phục dữ liệu. Dữ liệu có thể được lưu trữ ở bất kỳ loại nào và có thể được lưu trữ, truy cập đến từ bất kỳ vị trí nào thông qua Internet. Bạn có thể lưu trữ không giới hạn một lượng lớn các đối tượng trong S3 với kích thước của mỗi đối tượng trong khoảng từ 1 byte tới 5 GB. Dữ liệu có thể được lưu trữ ở vị trí địa lý mà bạn mong muốn. Dữ liệu bạn tạo ra có thể được lưu dưới định dạng buckets, cái mà tương tự như khái niệm của thư mục trong hệ thống xử lý hằng ngày ta vẫn dùng. Dữ liệu được sử dụng chung hạ tầng cơ sở lưu trữ Amazon nên được đảm bảo tính an toàn.

Đặc điểm của S3:

Tính ổn định Nó được thiết kế để chịu được các hỏng hóc và phục hồi hệ thống rất nhanh với thời gian tối thiểu. Amazon cung cấp một thỏa thuận cấp dịch vụ (service-level agreement - SLA) để duy trì tính sẵn sàng ở mức 99.99%. Đơn giản, dễ dùng S3 được xây dựng trên các khái niệm đơn giản và cung cấp tính mềm dẻo cao cho việc phát triển các ứng dụng của bạn. Bạn có thể xây dựng các lược đồ lưu trữ phức tạp hơn nếu cần, bằng cách thêm các hàm vào các thành phần của S3. Tính mở rộng Thiết kế của S3 cung cấp một cấp độ cao về tính mở rộng và cho phép sự điều chỉnh dễ dàng trong dịch vụ khi lượng truy cập vào ứng dụng web của bạn tăng đột biến với lưu lượng khổng lồ.

Và phải kể tới chi phí sử dụng S3 rất cạnh tranh với các giải pháp của công ty và cá nhân khác trên thị trường.

Ba khái niệm nền tảng cho khung làm việc S3 là thùng (buckets), đối tượng (objects), và khóa (keys).

Thùng (Buckets)

Thùng là các nền tảng cơ bản nhất. Mỗi đối tượng được lưu trữ trong Amazon S3 đều được chứa trong một thùng. Thùng có thể được hiểu như là một thư mục trên hệ thống tệp. Điểm mấu chốt để phân biệt giữa thư mục và thùng là mỗi thùng và các nội dung của nó có thể truy cập được thông qua URL. Ví dụ, nếu bạn có một thùng tên là "buckets-one," nó có thể truy cập được thông qua URL http://buckets-one.s3.amazonaws.com. Mỗi tài khoản S3 có thể có tối đa 100 thùng. Một thùng không thể chứa thùng khác, nên bạn không thể tạo thùng trong thùng được. Bạn có thể thay đổi vị trí địa lý của các thùng của bạn bằng cách chỉ rõ một vị trí khi bạn tạo chúng. Điều này sẽ đảm bảo một cách tự động rằng tất cả các đối tượng mà bạn lưu trữ trong thùng đó sẽ được lưu trữ trong cùng vị trí địa lý. Tại thời điểm này, bạn có thể đặt các thùng của bạn ở Mỹ hoặc châu Âu. Nếu bạn không chỉ rõ một vị trí khi tạo thùng, thùng đó và nội dung của nó sẽ được lưu trữ tại vị trí gần địa chỉ thanh toán trên tài khoản của bạn nhất.

Đối tượng (Objects)

Các đối tượng chứa dữ liệu được lưu trữ trong các thùng ở S3. Các đối tượng được coi như là các tệp mà bạn muốn lưu trữ. Mỗi đối tượng được lưu trữ được cấu thành bởi: dữ liệu (data) và dữ liệu thông tin (metadata). Data: Dữ liệu là dữ liệu thực mà bạn bạn muốn lưu trữ, như là tệp PDF, tài liệu Word, một tệp video..v...v. Metadata: Dữ liệu lưu trữ được gắn với dữ liệu thông tin để mô tả đối tượng. Một vài ví dụ như kiểu của đối tượng được lưu trữ, ngày chỉnh sửa cuối cùng, ngày update thông tin.

Không giống như sự giới hạn về số lượng các thùng, số lượng đối tượng không bị hạn chế. Bạn có thể lưu trữ một số lượng vô hạn các đối tượng trong các thùng của bạn, và mỗi đối tượng có thể chứ đến 5GB dữ liệu. Dữ liệu trong các đối tượng S3 công cộng của bạn có thể lấy được qua HTTP, HTTPS, hoặc BitTorrent. Phân tán các tệp lớn từ tài khoản S3 của bạn sẽ trở lên rất đơn giản khi sử dụng BitTorrent; Amazon không chỉ tạo torrent cho đối tượng của bạn, mà còn lưu trữ (seed) nó.

Khóa (Key)

Mỗi đối tượng lưu trữ trong một thùng S3 được định danh bởi một khóa duy nhất. Nó cũng giống như khái niệm tên tệp trong một thư mục trên hệ thống tệp của bạn. Tên tệp trong một thư mục trên đĩa cứng của bạn phải là duy nhất. Mỗi đối tượng trong một thùng chỉ có một khóa. Tên của thùng và khóa được sử dụng cùng nhau để cung cấp định danh duy nhất cho mỗi đối tượng lưu trữ trong S3. Mọi đối tượng trong S3 đều có thể truy cập bằng cách sử dụng một địa chỉ URL kết hợp địa chỉ URL của S3, tên thùng và khóa duy nhất. Nếu bạn lưu trữ một đối tượng với khóa my_favorite_video.mov bên trong một thùng tên là bucket_one, đối tượng đó có thể được truy cập thông qua địa chỉ URL http://bucket_one.s3.amazonaws.com/ my_favorite_video.mov.

Các khái niệm cấu thành nên hệ thống s3 đơn giản nhưng có thể cấu thành nên hệ thống vô cùng lớn, điều đó vào cách bạn tận dụng khả năng của s3 như thế nào. Cấu thành của s3 được miêu tả trong hình:

III. Amazon Elastic Compute Cloud (EC2)

Amazon Elastic Compute Cloud (Amazon EC2) cung cấp khả năng tính toán có thể mở rộng trong Amazon Web Services (AWS) cloud. Dùng Amazon EC2 giúp loại bỏ nhu cầu đầu tư vào phần cứng trước tiên, vì vậy bạn có thể tập trung phát triển và triển khai ứng dụng nhanh hơn. Amazon EC2 cho phép tăng/giảm nhu cầu tính toán, xử lý tùy theo nhu cầu bạn cần.

Đặc điểm của Amazon EC2

Amazon EC2 cung cấp các đặc điểm sau:

  • Môi trường tính toán ảo hóa: Instances
  • Các mẫu được tạo trước cho instances, Amazon Machine Images (AMIs), cung cấp các gói phần mềm cần thiết cho máy chủ (gồm hệ điều hành và các phần mềm)
  • Các cấu hình khác nhau của CPU, memory, storage, và networking cho instances: Instance types
  • Bảo mật thông tin đăng nhập đến isntances dùng key pairs (AWS lưu public key, bạn sẽ lưu private key ở nơi an toàn)
  • Lưu trữ dữ liệu tạm thời, sẽ bị xóa khi dừng hoặc hủy instance: Instance type volumes
  • Lưu trữ dữ liệu lâu dài dùng Amazon Elastic Block Store (EBS): Amazon EBS volumes
  • Tách biệt tài nguyên như instances và Amazon EBS volumes trên các vùng lưu trữ vật lý ở nhiều vị trí: Regions và Availability Zones
  • Firewall cho phép chỉ định protocols, ports, và source IP ranges được phép truy xuất đến instances dùng security groups
  • Địa chỉ Static IP: Elastic IP addresses
  • Metadata, được biết như Tags, mà bạn có thể tạo và gán cho Amazon EC2 resources
  • Các mạng ảo mà bạn có thể tạo để cô lập với phần còn lại của AWS cloud, và bạn có thể tùy chọn kết nối đến mạng của riêng mình, được biết như virtual private clouds (VPCs)

**Các khái niệm nền tảng **

Amazon Machine Images

Amazon Machine Images (AMIs) là các môi trường máy chủ được đóng gói, dựa trên Linux®, mà có thể thực thi bất cứ phần mềm hay ứng dụng nào bạn cần. Chúng là trái tim của môi trường điện toán mềm dẻo được cung cấp bởi EC2. Phiên bản hiện tại của EC2 hỗ trợ AMI dựa trên Linux, do đó cũng có những hỗ trợ ban đầu để sử dụng OpenSolaris như là hệ điều hành trong môi trường EC2.

Nhóm bảo mật (Group security)

Bất cứ instance nào được khởi động trong môi trường EC2 đều hoạt động trong một nhóm bảo mật. Mỗi nhóm bảo mật định nghĩa các quy định cho tường lửa để hạn chế truy cập cho các instance hoạt động trong nhóm đó. Bạn có thể cấp quyền hoặc ngăn cấm truy cập bằng địa chỉ IP hoặc bằng các quy định định tuyến liên địa chỉ không phân lớp (classless interdomain routing - CIDR), cho phép bạn chỉ định một dải các cổng và giao thức truyền tin. Bạn cũng có thể kiểm soát truy cập tới các nhóm bảo mật cụ thể, do đó bất cứ instance nào hoạt động trong những nhóm truy cập bảo mật đó sẽ tự động được cấp quyền hoặc bị từ chối truy cập tới instance của bạn.

Cặp khóa bảo mật (Security key pairs)

Các cặp khóa bảo mật là các cặp khóa SSH (public/private SSH key pair) mà được chỉ định khi khởi động một thể hiện. Chúng được sử dụng để đăng nhập vào console của một trong các instance đã được khởi động của bạn. EC2 sẽ thêm phần public của cặp khóa vào instance đã được khởi động, và bạn có thể sử dụng khóa private để ssh vào nó. Các cặp khóa bảo mật khác với khóa truy cập ID và khóa bảo mật của Amazon Web Services. cái mà được sử dụng để xác định bạn một cách duy nhất như là người sử dụng tạo ra các yêu cầu tới Amazon Web Services sử dụng các API. Các cặp khóa bảo mật chủ yếu là để cho phép người sử dụng truy cập một cách an toàn tới các instance mà không cần sử dụng các mật khẩu.

Availability zones

EC2 được tạo thành từ nhiều trung tâm dữ liệu tại các vùng địa lý khác nhau để cung cấp tính phục hồi. Bạn có thể đặt các instance khởi động tại các vị trí khác nhau. Các vị trí là các vùng địa lý với availability zone bên trong chúng. Bạn có thể bảo vệ các ứng dụng của bạn khỏi hỏng hóc của một địa điểm bằng cách khởi động các instance trong các availabitity zone riêng biệt. Nếu bạn không chỉ rõ một availabitity zone khi khởi động instance, Amazon sẽ tự động chọn một zone cho bạn dựa trên tình trạng hiện tại của hệ thống.

Eastic IP address

Mỗi instace được cấp tự động một địa chỉ IP public vs private khi khởi động bởi EC2. Địa chỉ public IP có thể được sử dụng để truy cập tới instance thông qua internet. Mỗi lần bạn khởi động instance, địa chỉ IP này sẽ thay đổi theo. Nếu bạn đang sử dụng bất cứ một ánh xạ DNS động để kết nối một tên DNS tới địa chỉ IP trên, nó có thể mất tới 24 giờ trước khi sự thay đổi được lan truyền trên internet. EC2 giới thiệu khái niệm địa chỉ IP mềm (elastic IP address) để làm giảm bớt vấn đề này. Mỗi địa chỉ IP mềm là một địa chỉ IP tĩnh được gắn với tài khoản EC2 của bạn, chứ không phải một instance cụ thể nào, và được gắn vĩnh viễn vào tài khoản của bạn trừ khi bạn trả lại nó cho EC2. Bạn cũng có thể tái ánh xạ một địa chỉ IP mềm trong các instance, và do đó nhanh chóng phản hồi từ bất cứ một hỏng hóc của instance bằng cách khởi động một instance khác và tái ánh xạ nó (hoặc sử dụng một instance đã tồn tại). Tại bất cứ thời điểm nào, bạn chỉ có thể có một instance đơn được ánh xạ tới một địa chỉ IP mềm.

Elastic Block Store (EBS)

EBS là một mẫu của lưu trữ bền vững tạo bởi Amazon cho phép bạn tạo ra các không gian lưu trữ mà có thể được gắn như là các khối thiết bị tới một thể hiện đang hoạt động. Bạn cũng có thể tạo các bản lưu nhanh (snapshot) từ các không gian lưu trữ và sau đó tái tạo một không gian lưu trữ từ các bản lưu nhanh đó. Mỗi bản lưu nhanh thể hiện trạng thái của một không gian lưu trữ tại các thời điểm cụ thể. Do đó bạn có thể dễ dàng lưu trữ các tệp và dữ liệu cần tồn tại không phụ thuộc vào vòng đời của các thể hiện trên một không gian EBS, và sau đó dễ dàng gắn và gỡ không gian lưu trữ đó với bất cứ thể hiện nào bạn muốn. Một điều cần báo trước là mỗi không gian lưu trữ EBS chỉ có thể gắn vào một thể hiện tại một thời điểm. Tuy nhiên, bạn có thể gắn nhiều không gian lưu trữ vào một thể hiện nếu bạn muốn. Mỗi không gian lưu trữ EBS được gắn và định vị trong một miền sẵn sàng. Thể hiện mà sẽ được gắn với không gian lưu trữ phải nằm cùng trong miền sẵn sàng. Mỗi tài khoản đều bị giới hạn 20 không gian lưu trữ EBS nhưng bạn có thể yêu cầu Amazon Web Services tăng giới hạn nếu bạn cần nhiều không gian hơn.

IV. Amazon Simple Queue Service (SQS)

Amazon Simple Queue Service (SQS) là một dịch vụ hàng đợi (queue) lưu trữ thông điệp (message) nhanh chóng, đáng tin cậy, có khả năng mở rộng và quản lý một cách đầy đủ. Amazon SQS giúp bạn có thể di chuyển dữ liệu giữa các thành phần phân tán của ứng dụng của bạn để thực hiện các nhiệm vụ khác nhau. Bạn có thể sử dụng SQS để truyền tải bất kỳ khối lượng dữ liệu, ở bất kỳ mức độ thông lượng nào mà không sợ bị mất đi các thông điệp hoặc yêu cầu của mỗi thành phần là luôn luôn có sẵn.

Đặc điểm của Amazon SQS

Tính tin cậy Amazon SQS hoạt động bên trong một trung tâm dữ liệu có tính sẵn sàng cao của Amazon, do đó các hàng đợi sẽ có mặt bất cứ khi nào các ứng dụng cần đến chúng. Để ngăn chặn các thông điệp không bị mất mát hay không có sẵn, tất cả các thông điệp sẽ được lưu trữ dự phòng trên nhiều máy chủ và trung tâm dữ liệu.

Tính đơn giản Mô hình lập trình cho việc truy cập, sử dụng SQS rất đơn giản và có thể được sử dụng cho nhiều ngôn ngữ lập trình khác nhau.

Khả năng mở rộng Amazon SQS được thiết kế cho phép bạn có khả năng tạo các ứng dụng dựa trên hàng đợi mà có thể đọc và ghi các thông điệp không giới hạn tại bất kỳ thời điểm nào.

Bảo mật Cơ chế xác thực được cung cấp để đảm bảo rằng các thông điệp được lưu trữ trong các hàng đợi của Amazon SQS được đảm bảo chống truy cập trái phép.

Không tốn kém Không có trả trước hay là chi phí cố định. Các chi phí gửi thông điệp thông qua Amazon SQS là thấp trên mỗi yêu cầu xử lý và chuyển dữ liệu

***Các khái niệm nền tảng ***

Thông điệp Message

Các thông điệp có thể chứa dữ liệu văn bản với dung lượng lên tới 8 KB. Mỗi thông điệp được lưu trữ cho đến khi nó được thu nhận bởi một ứng dụng nào đó. Một giá trị thời gian chờ, theo giây, được chỉ rõ khi ứng dụng đó đọc một thông điệp từ hàng đợi. Điều này hoạt động giống như một cái khóa và để đảm bảo rằng, cho một khoảng thời gian cụ thể: Thông điệp được nhận sẽ không sẵn sàng cho các ứng dụng khác của hàng đợi. Thông điệp sẽ chỉ tái xuất hiện trong hàng đợi khi thời gian chờ đã hết, và chỉ nếu, nó không bị xóa bởi tiến trình đọc nó.

Các thông điệp được giữ lại trong một thông điệp trong bốn ngày. SQS sẽ tự động xóa bất cứ thông điệp nào ở trong hàng đợi quá bốn ngày. SQS tuân theo mô hình của "nhất quán cuối cùng", nghĩa là bạn có thể gửi một thông điệp tới hàng đợi, nhưng một ứng dụng sử dụng hàng đợi đó có thể không thấy thông điệp đó trong một khoảng thời gian nào đó. Thông điệp cuối cùng sẽ được gửi đi, nhưng đây là một sự cân nhắc quan trọng nếu các ứng dụng của bạn quan tâm đến trật tự của các thông điệp.

Hàng đợi Queues

Các hàng đợi (Queues) là các thùng chứa các thông điệp. Mỗi thông điệp phải chỉ rõ một hàng đợi mà sẽ chứa nó. Các thông điệp được gửi tới hàng đợi sẽ ở đó cho đến khi bạn thực sự xóa chúng. Trật tự của hàng đợi là vào trước, ra trước, nhưng trật từ này không được đảm bảo. Mỗi hàng đợi đều có một thời gian chờ để nhìn thấy là 30 giây. Bạn có thể thay đổi giá trị này cho toàn bộ hàng đợi, hoặc nó có thể được đặt một cách riêng lẻ cho từng thông điệp. Thời gian chờ để nhìn thấy tối đa cho một hàng đợi hay thông điệp là hai giờ (7200 giây). SQS duy trì quyền xóa hàng đợi một cách tự động nếu không có hoạt động thực sự nào trên hàng đợi trong vòng 30 ngày liên tục.

Cân nhắc thiết kế

SQS hơi khác một chút so với các hàng đợi thông dụng. Có ba thứ bạn cần cân nhắc trước khi thiết kế ứng dụng dựa trên SQS của bạn: SQS không đảm bảo trật tự của các trông điệp trong một hàng đợi. Các thông điệp được sắp xếp trong một hàng đợi; chúng không thực sự được lưu trữ theo trật tự mà chúng được thêm vào hàng đợi. SQS sẽ cố để duy trì trật tự trong các thông điệp, nhưng nó không đảm bảo rằng bạn sẽ nhận được các thông điệp theo trật tự chính xác như khi bạn gửi. Nếu trật tự của thông điệp là quan trọng với ứng dụng của bạn, bạn cần phải thêm dữ liệu thứ tự vào mỗi thông điệp.

SQS không đảm bảo sự xóa của một thông điệp trong hàng đợi. Bạn phải thiết kế ứng dụng của bạn sao cho nó không bị ảnh hưởng nếu cùng một thông điệp được xử lý nhiều hơn một lần. Mỗi thông điệp của bạn được lưu trữ trên nhiều máy chủ khác nhau bởi SQS, để cung cấp tính dư thừa và tính sẵn sàng cao. Nếu một trong các máy chủ này không hoạt động trong khi một thông điệp đang bị xóa, bạn có thể nhận được một bản sao của thông điệp trong khi nhận các thông điệp.

SQS không đảm bảo tất cả các thông điệp trong hàng đợi sẽ được trả lại khi được yêu cầu. SQS sử dụng việc lấy mẫu thông điệp dựa trên phân bố ngẫu nhiên có trọng số, và nó trả lại thông điệp chỉ từ những tập con được lấy mẫu của các máy chủ khi bạn yêu cầu các thông điệp. Thậm chí, một yêu cầu cụ thể có thể sẽ không trả lại tất cả các thông điệp trong hàng đợi, nếu bạn tiếp tục nhận thông điệp từ hàng đợi nó sẽ kết thúc việc lấy mẫu tất cả các máy chủ và bạn sẽ nhận được tất cả các thông điệp của bạn

V. Amazon SimpleDB (SDB)

Amazon SDB là một khung làm việc truy vấn và chỉ số hóa tập dữ liệu theo thời gian thực một cách nhanh chóng và có thể mở rộng được, nó làm cho việc truy xuất dữ liệu có cấu trúc từ các ứng dụng dựa trên Amazon Web Services trở nên dễ dàng. Nó được thiết kế để làm việc tốt với các dịch vụ khác của Amazon Web Services, như là điện toán đám mây mềm dẻo (Elastic Compute Cloud - EC2) và dịch vụ lưu trữ đơn giản (Simple Storage Service - S3). SDB cho phép bạn xây dựng các ứng dụng tương tác với nhau trong môi trường Amazon Web Services. Bạn chỉ phải thanh toán phí cho dịch vụ mà bạn đã thực sự sử dụng. Một số lớp dịch vụ là miễn phí.

Đặc điểm của Amazon SDB

Tính tin cậy SDB được thiết kế để lưu trữ dữ liệu được đánh chỉ số của bạn một cách dư thừa xuyên qua các trung tâm dữ liệu để làm cho chúng sẵn sàng tại mọi thời điểm.

Tốc độ SDB được thiết kế để cung cấp truy xuất dữ liệu nhanh, đặc biệt nếu các yêu cầu của bạn được tạo ra từ một thể hiện EC2 trong môi trường Amazon Web Services.

Tính đơn giản Mô hình lập trình cho việc truy cập và sử dụng SDB rất đơn giản và có thể được sử dụng từ rất nhiều ngôn ngữ lập trình khác nhau.

Bảo mật SDB được thiết kế để cung cấp độ bảo mật cao. Chỉ có những người dùng được chứng thực mới có thể truy cập tới dữ liệu.

Tính mềm dẻo SBD cung cấp khả năng để lưu trữ dữ liệu ngay trong quá trình xử lý mà không cần bất cứ lược đồ được định nghĩa trước nào.

Giá rẻ Phí sử dụng SDB rất kinh tế. Bạn chỉ phải trả cho những gì bạn thực sự dùng.

*** Khái niệm nền tảng của SDB.***

Miền (Domains)

Một miền (domain) là một thùng chứa mà giúp bạn lưu trữ dữ liệu có cấu trúc của bạn và thực hiện các truy vấn trên chúng. Dữ liệu được lưu trữ trong một miền như các phần tử (item). Một cách khái niệm, một miền giống như một bảng làm việc trong một bảng tính; các phần tử là các dòng trong bảng tính. Bạn có thể thực thi các truy vấn trên một miền, nhưng bạn chưa thể truy vấn liên thông giữa các miền với phiên bản hiện tại của SDB. Mỗi miền có những dữ liệu thông tin sau đính kèm với nó:

  • Ngày và giờ mà dữ liệu thông tin được cập nhật lần cuối
  • Số các phần tử trong một miền
  • Số các cặp tên thuộc tính-giá trị (attribute name-value) trong miền
  • Số các tên thuộc tính duy nhất trong miền
  • Tổng kích thước của tất cả các tên phần tử trong miền, theo bytes
  • Tổng kích thước của tất cả các giá trị thuộc tính, theo bytes
  • Tổng kích thước của tất cả các tên thuộc tính duy nhất, theo bytes

Các phần tử

Các phần tử biểu diễn các đối tượng riêng lẻ trong các miền của bạn, và chúng chứa các thuộc tính với các giá trị. Về mặt khái niệm, mỗi phần tử là giống với một dòng trong một bảng tính — một thuộc tính là một cột và các giá trị là các ô. Các thuộc tính có thể có nhiều giá trị chứ không nhất thiết phải là một giá trị đơn. SDB tự động chỉ số hóa các miền của bạn mà không quan tâm đến cấu trúc dữ liệu của bạn. SBD cũng có giới hạn thời gian cho việc thực thi một truy vấn đơn lẻ trên các miền của bạn. Nếu một truy vấn vượt quá 5 giây, SDB sẽ dừng truy vấn và trả lại một lỗi.

Các giới hạn

Phiên bản hiện tại của SDB có các giới hạn mà bạn nên cân nhắc khi thiết kế ứng dụng của bạn. http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDBLimits.html

Tổng kết: Trong bài viết tôi đã tổng hợp lại tất cả các định nghĩa, khái niệm cơ bản nhất để chúng ta có thể hiểu được về Amazon web service là gì. Trong bài viết tiếp theo tôi sẽ đưa ra các ứng dụng ví dụ cụ thể về việc sử dụng các dịch vụ của AWS sử dụng ruby on rails.

Link tham khảo: https://en.wikipedia.org/wiki/Amazon_Web_Services http://www.gimasys.com/aws/vi-0-177.html https://www.ibm.com/developerworks/vn/library/ar-cloudaws1/ https://www.ibm.com/developerworks/vn/library/ar-cloudaws2/ https://www.ibm.com/developerworks/vn/library/ar-cloudaws3/ https://www.ibm.com/developerworks/vn/library/ar-cloudaws4/ https://www.ibm.com/developerworks/vn/library/ar-cloudaws5/