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

Những kỹ thuật và công nghệ được sử dụng trong sản phẩm Ming

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 (287.57 KB, 12 trang )

Những kỹ thuật và công nghệ được sử dụng trong
sản phẩm Ming
Công nghệ
• Memcached(Đã được sử dụng rộng rãi trong các dự án công ty)
• Redis(Phần I)
Kỹ thuật
• Open Authentication(Phần II)
• SSO(Single Sign On)
• Big4(Facebook, Yahoo, Twitter, Google)
I. Redis
Redis là một cách lưu trữ dữ liệu kiểu key/value, nó thực thi trên server ANSI
C, redis cung cấp nhiều cách làm việc khác nhau để thực hiện một việc đơn giản : lưu
trữ value(“aaa”) tới key(“redis”), trong đó với các keys chỉ hỗ trợ kiểu string thì với
values sẽ hỗ trợ nhiều kiểu định dạng khác nhau như : Strings, Lists, Sets,
Sortedsets(zsets), Hashes. Và mỗi một loại kiểu định dạng khác nhau sẽ có một tập
hợp các command làm việc với nó như: Thêm mới, loại bỏ một phần tử trong
values... khác nhau.
Có thể xem Redis như là một cấu trúc dữ liệu (data structures) cấp cao trên máy
server, khi một người dùng redis chỉ cần cung cấp một interface để “Abstract Data
Types(kiểu dữ liệu trừu tượng)”, từ đó người dùng không phải chạy các data
structures hay các thuật toán trên data structures đó mà có thể thực thi các command
của data type đó.
Redis is free software released under the very liberal BSD license. Written
in C(C
99
standard).
Redis có những đặc điểm giống như Memcached như:
• Lưu Key – value (Key – value store).
• Tất cả data được lưu trên Memory(RAM)
• Key có thể hết hạn(expire) hoặc không
• Nhanh(Fast), nhẹ nhàng(light-weight)



Nhưng Redis có nhiều đặc điểm, chức năng khác mạng lại lợi ích khi sử dụng
và triển khai. Bao gồm:
• Persistence
• Multiple databases
• Queryable keyspace
• Support for interger counters
• Higher level data structures
• Atomic operations
• Ability to paginate lists without mutating them
• Master-slave replication
• Optional VM feature
I.1 So sánh Redis, Memcached, Tokyo Tyrant and MySQL
• Redis
• Memcached
• Tokyo Tyrant / Tokyo Cabinet
• MySQL 5.1.40 (MyISAM)
• MySQL 5.1.40 (with Innodb Plugin 1.0.4), compiled into source of
MySQL
• 2 client boxes
• All clients connecting to the server using Python
• Used Python's threads to create concurrency
• Each thread made 10,000 open-close connections to the server
• The server was
o Intel(R) Pentium(R) D CPU 3.00GHz
o Fedora 10 32bit
o Intel(R) Pentium(R) D CPU 3.00GHz
o 2.6.27.38-170.2.113.fc10.i686 #1 SMP
o 1GB RAM
• Used a md5 as key and a value that was saved

• Created an index on the key column of the table
Team Ming
2

• Each server had SET and GET requests as a different test at same
concurrency
Team Ming
3

I.2. Đăc điểm của Redis
I.2.1. Persistence, higher level data structures
Redis lấy và nạp dữ liệu trên Memory(RAM), nhưng tại một thời điểm thì dữ
liệu có thể được lưu trữ trên disk(Data in memory, but saved on disk).
Có 2 kiểu persistence được supported:
• Semi persistent mode (Snapshotting):
− Thời gian lưu trữ data trên Memory và Disk là không đồng bộ
Team Ming
4

− Sau mỗi N sự thay đổi hoặc N thời gian nào đó thì data mới được
lưu trữ trên disk.
− Do việc lưu trữ data là không đồng bộ nên data có thể bị mất khi
server gặp sự cố(restart or start)
• Fully persistent mode (Append Only File)
− Mỗi sự thay đổi được viết thêm vào một tệp tin. Mô hình này được
gọi là “Append only file”, mỗi command nhận sự thay đổi thì được
viết thêm vào file có định dạng là ASAP.
− Những command này sẽ được chạy lại khi server restart hoặc start để
nạp lại dữ liệu lên memory.
I.2.2. Multiple databases và Data structures

Điểm khác biệt dễ nhận thấy của Redis là: Key là một string nhưng value thì
không giới hạn ở một string mà có thể là List, Sets, Sorted sets, .... Cấu trúc dữ liệu
của Redis gồm :
• Strings
• String-as-integers
• List of Strings
• Set of Strings(unique list)
• Sorted Set of Strings(ZSET)
Redis hỗ trợ “Multiple database” với nhiều commands để tự động remove key
từ một database tới database khác.
Mặc định thì DB 0 sẽ được lựa chọn cho mỗi lần kết nối(connection), nhưng
khi sử dụng lệnh SELECT(SELECT command) thì nó có thể select/create một
database khác.
Thao tác MOVE(MOVE operation) có thể chuyển một item từ một DB tới DB
khác một cách tự động.
Đó là sự khác biệt của Redis với Mysql. Với Mysql, để truy suất data từ nhiều
database khác nhau thì phải tạo ra bấy nhiêu connection tới những database đó.
I.2.3. Atomic Operations
Redis rất nhanh trong các thao tác lấy và nạp dữ liệu do redis hỗ trợ nhiều lệnh
mang tính chất chuyên biệt như:
Team Ming
5

×