2009-02-19 27 views
8

Tôi hiện đang điều tra cách sử dụng tùy chọn phân phối RMI trong ehcache. Tôi đã cấu hình đúng ehcache.xml và sao chép dường như làm việc tốt. Tuy nhiên tôi có 2 câu hỏi:Nhân bản Ehcache/Hibernate và RMI với số lượng lớn các thực thể

-> Có vẻ như ehcache/hibernate tạo 1 bộ nhớ cache cho mỗi Thực thể. Điều này là tốt, tuy nhiên khi nhân rộng tại chỗ nó tạo ra 1 thread/cache để nhân rộng. Đây có phải là hành vi có ý định không? Vì miền của chúng tôi lớn, nó tạo ra khoảng 300 chủ đề, dường như tôi thực sự lớn

-> Một hậu quả khó chịu khác là sự lộn xộn nhịp tim dường như tổng hợp tất cả các tên bộ nhớ cache đó. Từ những gì tôi thấy thông báo phải phù hợp với 1500 byte, mà nó không, dẫn đến thông điệp này trong nhật ký của tôi: Nhịp tim không hoạt động. Định cấu hình bộ nhớ cache ít hơn để nhân rộng. Kích thước là 1747 nhưng không được lớn hơn1500. Bất kỳ ý tưởng về cách này có thể được thay đổi?

Cảm ơn rất nhiều sự giúp đỡ của bạn

Trả lời

3

Chúng tôi đã có một cuộc tấn nơi chúng tôi có bản sao riêng của chúng ta về EhCacheProvider ngủ đông đó sẽ ghi đè buildCache() để tạo các đối tượng của chúng tôi riêng bộ nhớ cache với tên rút ngắn (hash của tên). Điều này đạt được giới hạn 1500. Chúng tôi giữ một hashmap của tên gốc với tên băm để tra cứu ngược lại.

Chúng tôi đã làm điều này một thời gian trước và đã sử dụng nó trong sản xuất.

Chúng tôi cũng xem xét vấn đề khác của bạn để có một chuỗi bản sao duy nhất. Đầu tiên chúng ta đã sao chép RMICacheReplicatorFactory và thay đổi createCacheEventListener() để trả về bản sao của RMIAsynchronousCacheReplicator mà chúng ta đã sửa đổi bằng cách làm cho trường replicationThread tĩnh và sau đó thực hiện các sửa lỗi cần thiết cho điều đó. Chúng tôi đã không kiểm tra kỹ lưỡng hoặc đưa nó vào sản xuất, nhưng nhìn lại nó, đó là cách tôi tìm thấy bài đăng này :)

+0

Giới hạn 1500 được giải quyết với https://jira.terracotta.org/jira/browse/EHC-424 cho Ehcache 1.7.1 sắp tới. –

2

Bạn có coi JBossCache là giải pháp thay thế cho EHcache không? JBossCache có các giao dịch phân tán và được kiểm tra tốt cho các tải cao. Nó có các cơ chế sao chép ở mức độ thấp hơn, cho phép bạn sử dụng bản sao phát đa hướng/phát sóng UDP hoặc TCP.

0

Sao chép jms có phải là tùy chọn không?

(Tôi đã tìm cách sử dụng nó với hành vi không đồng bộ, nó hoạt động tốt đẹp. Tài liệu đã sai nên tôi phải kiểm tra mã nguồn để xem các thuộc tính thực sự cần thiết để định cấu hình đúng cách. bạn có cơ sở hạ tầng đó được thiết lập mà bạn không phải định cấu hình bất kỳ tường lửa nào và cứ để cho nó qua.)

+0

JMS không có nơi gần thời gian thực, bất kỳ phương tiện nào cập nhật bộ nhớ cache phải là thời gian thực. –

+0

Nếu bạn chỉ cần thiết lập một defaultcache, thì nó sẽ được nhân bản để tạo ra từng bộ nhớ cache thực thể cần thiết. AFAIK, bạn sẽ KHÔNG nhận được "một bộ nhớ cache lớn". –

2

Bạn có xem xét EHCache trên đất nung không? Hãy xem Terracotta Hibernate IntegrationTerracotta EHCache Integration

Quan trọng nhất là EHCache phân phối bằng đất nung là mạch lạc - tất cả các nút đều có cùng một chế độ xem bộ nhớ cache. Điều này rất quan trọng đối với một trong những ứng dụng tôi đã làm việc.

Hãy xem. Nó hoạt động như một sự quyến rũ đối với chúng tôi.

/RS

0

Nhân tiện, giới hạn 1500 byte đã được giải quyết cho Ehcache 1.7 .1 giải phóng lõi ehcache. Xem EHC-424.

Các vấn đề liên quan