Chương 1
Giới thiệu
Trong quá khứ, mỗi ứng dụng là một chương trình duy nhất chạy trên một máy tính duy nhất với
một CPU duy nhất. Hôm nay, mọi thứ đã thay đổi. Trong thế giới Big Data và Cloud Computing,
các ứng dụng được tạo thành từ nhiều chương trình độc lập chạy trên một luôn thay đổi
thiết lập của máy tính.
Phối hợp hành động của các chương trình này độc lập là khó khăn hơn nhiều so với writ-
ing một chương trình duy nhất để chạy trên một đơn máy tính bàn. Nó rất dễ dàng cho các nhà phát triển để có được sa lầy
trong logic phối hợp và thiếu thời gian để viết logic ứng dụng của họ đúng hay
có lẽ chuyện này, để dành ít thời gian với logic phối hợp và chỉ đơn giản là để viết
một điều phối tổng thể nhanh chóng-và-bẩn mà là mong manh và trở thành một đơn không đáng tin cậy
điểm của sự thất bại.
Zookeeper được thiết kế để có một dịch vụ mạnh mẽ cho phép các nhà phát triển ứng dụng để
tập trung chủ yếu vào logic ứng dụng của họ hơn là phối hợp. Nó cho thấy một đơn giản
API, lấy cảm hứng từ các API hệ thống tập tin, cho phép phát triển để thực hiện đồng phổ biến
nhiệm vụ phối, chẳng hạn như bầu server của chương trình, quản lý các thành viên nhóm, và
quản lý siêu dữ liệu. Zookeeper là một thư viện ứng dụng với hai implemen- chính
tations của API Java và C-và một thành phần dịch vụ thực hiện trong Java mà
chạy trên một tập hợp các máy chủ chuyên dụng. Có một tập hợp các máy chủ cho phép Zoo-
Keeper chịu đựng lỗi lầm và quy mô thông.
Khi thiết kế một ứng dụng với Zookeeper, một lý tưởng tách dữ liệu ứng dụng
từ điều khiển hoặc điều phối dữ liệu. Ví dụ, những người sử dụng một dịch vụ web-mail là
quan tâm đến nội dung hộp thư của họ, nhưng không phải trên máy chủ nào đang xử lý yêu cầu của
một hộp thư riêng. Các nội dung hộp thư là dữ liệu ứng dụng, trong khi các bản đồ của
các hộp thư đến một máy chủ mail cụ thể là một phần của dữ liệu phối hợp (hoặc siêu dữ liệu). Một
bộ quần áo đồng Zookeeper quản lý sau này.
3
www.it-ebooks.info
The Zookeeper Sứ
Đang cố gắng để giải thích những gì Zookeeper làm cho chúng ta cũng giống như cố gắng để giải thích những gì một tuốc nơ vít
có thể làm cho chúng ta. Trong điều kiện rất cơ bản, một tuốc nơ vít cho phép chúng tôi để biến hoặc lái xe vít, nhưng
đặt nó theo cách này không thực sự thể hiện sức mạnh của công cụ. Nó cho phép chúng tôi để lắp ráp
phần của các thiết bị nội thất, điện tử, và trong một số trường hợp treo tranh ảnh trên tường.
Bằng cách đưa ra một số ví dụ như thế này, chúng tôi có thể cung cấp cho một cảm giác của những gì có thể được thực hiện, nhưng nó là
chắc chắn không phải là toàn bộ.
Các đối số cho những gì một hệ thống như Zookeeper có thể làm cho chúng ta là những đường lối cũ:
nó cho phép các nhiệm vụ phối hợp với hệ thống phân phối. Một nhiệm vụ phối hợp là một nhiệm vụ trong-
volving nhiều quy trình. Một nhiệm vụ như vậy có thể cho các mục đích hợp tác hoặc để
điều chỉnh tranh. Hợp tác có nghĩa là quá trình cần phải làm điều gì đó với nhau,
và các quy trình hành động để kích hoạt các quá trình khác để làm cho tiến bộ. Ví dụ, trong
các kiến trúc sư-công nhân điển hình, các nhân viên thông báo cho chủ nó có sẵn
để làm việc. Các bậc thầy do đó giao nhiệm vụ cho người lao động. Ganh đua là khác nhau:
nó đề cập đến tình huống mà trong đó hai quá trình không thể thực hiện tiến bộ đồng thời, do đó, một
phải chờ cho người kia. Sử dụng cùng một ví dụ master-nhân viên, chúng tôi thực sự muốn có
một tổng thể duy nhất, nhưng nhiều quá trình có thể cố gắng để trở thành bậc thầy. Việc nhiều
quá trình do đó cần phải thực hiện loại trừ lẫn nhau. Chúng tôi thực sự có thể nghĩ về
nhiệm vụ mua lại quyền làm chủ như là một trong những có được một khóa: quá trình mà mua
lại. Khóa làm chủ các bài tập vai trò của chủ
Nếu bạn có bất kỳ kinh nghiệm với các chương trình đa luồng, bạn sẽ nhận ra rằng có
rất nhiều tương tự các vấn đề. Trong thực tế, có một số tiến trình đang chạy trong cùng một
máy tính hoặc trên máy tính là khái niệm không khác nhau gì cả. Đồng bộ hóa
nguyên thủy mà hữu ích trong bối cảnh nhiều chủ đề cũng rất hữu ích trong bối cảnh
của các hệ thống phân phối. Một sự khác biệt quan trọng, tuy nhiên, xuất phát từ thực tế là
các máy tính khác nhau không chia sẻ bất cứ điều gì khác hơn so với các mạng trong một sharednothing điển hình
kiến trúc. Trong khi có một số thuật toán thông-qua nhằm cải thiện
nguyên thủy đồng bộ plement, nó thường dễ dàng hơn nhiều để dựa vào một thành phần
cung cấp một cửa hàng chia sẻ với một số tính chất đặt hàng đặc biệt, như Zookeeper không.
Điều phối không luôn luôn đi theo hình thức nguyên thủy đồng bộ như lãnh đạo
cuộc bầu cử hoặc ổ khóa. Siêu dữ liệu cấu hình thường được sử dụng như là một cách cho một quá trình để truyền đạt
những gì người khác cần phải làm. Ví dụ, trong một hệ thống master-công nhân, người lao động cần phải
biết các nhiệm vụ đã được phân công cho họ, và thông tin này phải có sẵn
ngay cả khi treo máy chủ.
Chúng ta hãy xem xét một số ví dụ mà Zookeeper đã được hữu ích để có được một cảm giác tốt hơn của
nơi nó được áp dụng:
4 | Chương 1: Giới thiệu
www.it-ebooks.info
Apache HBase
HBase là một kho dữ liệu thường được sử dụng cùng với Hadoop. Trong HBase, Zookeeper được sử dụng
để bầu ra một tổng thể cụm, để theo dõi các máy chủ có sẵn, và để giữ cho cụm
siêu dữ liệu.
Apache Kafka
Kafka là một hệ thống tin nhắn pub-sub. Nó sử dụng Zookeeper để phát hiện tai nạn, để nâng
plement phát hiện đề tài, và để duy trì sản xuất và nhà nước tiêu thụ cho
các chủ đề.
Apache Solr
Solr là một nền tảng tìm kiếm doanh nghiệp. Trong hình thức phân phối của nó, gọi là SolrCloud, nó
sử dụng Zookeeper để lưu trữ siêu dữ liệu về các cụm và phối hợp các bản cập nhật cho
siêu dữ liệu này.
Yahoo! Đang tìm nạp Service
Một phần của việc thực hiện thu thập thông tin, các dịch vụ tìm nạp nạp các trang web hiệu quả
của bộ nhớ đệm nội dung trong khi đảm bảo rằng các chính sách máy chủ web, chẳng hạn như những người trong
file robots.txt, được bảo quản. Dịch vụ này sử Zookeeper cho các tác vụ như chủ
bầu cử, phát hiện va chạm, và lưu trữ siêu dữ liệu.
Tin nhắn của Facebook
này là một ứng dụng Facebook, tích hợp các kênh thông tin liên lạc: email, tin nhắn SMS,
Facebook Chat, và Facebook Inbox hiện. Nó sử dụng Zookeeper là điều khiển
để thực hiện sharding và chuyển đổi dự phòng, và cũng để phát hiện dịch vụ.
Có rất nhiều ví dụ hơn ra khỏi đó; đây là một mẫu chỉ. Với mẫu này, chúng ta hãy
doanh nghiệp mang lại cho các cuộc thảo luận với một mức độ trừu tượng hơn. Khi lập trình với Zookeeper,
các nhà phát triển thiết kế các ứng dụng của họ như là một tập hợp các khách hàng có thể kết nối đến các máy chủ Zookeeper
và gọi hoạt động trên chúng thông qua client API Zookeeper. Trong số những điểm mạnh
của các API Zookeeper, nó cung cấp:
• tính nhất quán mạnh, bảo đảm trật tự, và độ bền
• Khả năng để thực hiện nguyên thủy đồng bộ hóa điển hình
• Một cách đơn giản để đối phó với nhiều khía cạnh của đồng thời đó thường dẫn đến không chính xác
hành vi trong thực tế phân phối hệ thống
Zookeeper Tuy nhiên, không phải là ma thuật; nó sẽ không giải quyết mọi vấn đề ra khỏi hộp. Nó là
quan trọng để hiểu những gì Zookeeper cung cấp và nhận thức về các khía cạnh phức tạp của nó.
Một trong những mục tiêu của cuốn sách này là để thảo luận về cách đối phó với những vấn đề này. Chúng tôi bao gồm các
vật liệu cơ bản cần thiết để có được người đọc để hiểu những gì thực sự làm cho Zookeeper
The Mission Zookeeper | 5
đang được dịch, vui lòng đợi..