2012-06-11 28 views
10

Phát triển hệ thống điện toán đám mây với khả năng mở rộng có nghĩa là hệ thống được tạo thành các dịch vụ dựa trên REST dọc theo các ranh giới chức năng (usermgmt, ordermgmt, customermgt, v.v ...) với cơ sở dữ liệu riêng của nó và phụ thuộc vào tải trọng. lên nhiều trường hợp nói rằng dịch vụ ordermgmt. Khi dịch vụ ordermgmt xử lý một yêu cầu để thêm một đơn đặt hàng (thay mặt cho một "khách hàng"), nó sẽ thực hiện một cuộc gọi REST đến dịch vụ tùy biến để xác thực khách hàng ...Sở thú có phù hợp với bộ nhớ đệm đối tượng không?

Vì thực thể khách hàng sẽ không thay đổi rất thường xuyên, tôi tự hỏi nếu một cái gì đó như ZooKeeper sẽ là thích hợp để cache một thể hiện của một khách hàng cụ thể mà nhiều trường hợp của một dịch vụ customermgmt có thể thẩm vấn trước khi nhấn cơ sở dữ liệu. Tôi đã xem xét các danh sách khác nhau của việc sử dụng Zookeeper nhưng không thấy bất kỳ ai sử dụng nó cho bộ nhớ đệm đối tượng. Có vẻ như kích thước znode được đề xuất của byte đến khoảng 1K khiến cho nó không thích hợp để lưu trữ một đối tượng bị mất nước. Ngoài ra không có hỗ trợ cho GC hoặc LRU ra khỏi hộp vì vậy tôi sẽ cần phải thêm này là tốt.

Nếu không phải Zookeeper, có đề xuất phù hợp nào khác không? Chúng tôi đang sử dụng Hibernate làm ORM, nhưng chúng tôi không có nhiều kinh nghiệm với nó và trong khi nó hỗ trợ cache cấp 1 và 2, tôi không chắc liệu chúng có hoạt động theo cách phân phối/nhân bản trên nhiều trường hợp dịch vụ hay không .

Cảm ơn Scott

Trả lời

3

Trên thực tế bạn có thể thiết lập nhiều công nghệ khác nhau, phân phối hay không, như bộ nhớ cache L2 của Hibernate.

  • ehcache
  • Memcached
  • JCache
  • Hazelcast
  • Infinispan
  • Terracotta
  • Gigaspaces XAP
  • Gemfire
  • Coherence

Những cái cuối cùng, được gọi là datagrids, thường không miễn phí và tôi không nghĩ rằng bạn cần một toàn bộ dữ liệu chỉ dành cho bộ nhớ cache l2.

Tôi chưa bao giờ sử dụng nó nhưng tôi không nghĩ rằng Zookeeper được tạo ra để được sử dụng như một bộ nhớ đệm được phân phối.

10

Sở thú không phù hợp với bộ nhớ cache đối tượng.

Sở thú giữ toàn bộ cơ sở dữ liệu trong bộ nhớ trong vùng java. Khi heap java vượt quá Gigabyte, bạn sẽ bắt đầu gặp vấn đề với việc tạm dừng gc. Điều này đặc biệt rắc rối với người quản lý vườn thú bởi vì các nút sở thú thường xuyên lắng nghe nhau, và nếu đủ nhịp tim bị bỏ lỡ trong khi một nút bận rộn gc'ing, một cuộc bầu cử lãnh đạo được kích hoạt, đưa cụm xuống một cách bình thường.

Sự cố khác khi sử dụng trình quản lý vườn thú làm bộ nhớ cache là tất cả các nút trong cụm sở thú sẽ có cùng dữ liệu mà bạn thường không cần cho bộ nhớ cache.

Với những giới hạn này, 3 máy chủ của bạn, mỗi máy chủ có 8 hợp đồng ram, quản lý để phục vụ tổng số bộ làm việc ~ 1 Gig. Tốt hơn là sử dụng memcache, hoặc một trong các hệ thống bộ đệm khác của Sebastien.