8

Thiết lập trước đó của tôi là một máy chủ web đơn và một máy chủ cơ sở dữ liệu duy nhất. Tôi đã sử dụng nhibernate 2 cấp bộ nhớ đệm để bộ nhớ cache công cụ để tránh rất nhiều cuộc gọi đi đến cơ sở dữ liệu. Điều này đã làm việc rất lớn như tôi đã sử dụng này lắp rápCác vấn đề/câu hỏi về bộ nhớ đệm cấp 2 khi di chuyển từ một máy chủ web đến môi trường cân bằng tải máy chủ web

nhibernate.caches.syscache 

này và thêm mã này để bật bộ nhớ đệm cấp độ thứ hai (sử dụng các nhà cung cấp syscache thường xuyên):

 return configuration 
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationMap>().Conventions.Add(typeof(Conventions))) 
      .ExposeConfiguration(
       c => { 
        c.SetProperty("proxyfactory.factory_class", proxyFactory); 
        c.SetProperty("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache"); 
        c.SetProperty("cache.use_second_level_cache", "true"); 
        c.SetProperty("cache.use_query_cache", "true"); 
        c.SetProperty("expiration", "86400"); 
       }) 
      .BuildSessionFactory(); 

bây giờ tôi đã di cư qua một môi trường mới có nhiều máy chủ web và tôi đang cố gắng hiểu các tác động của điều này (tôi vẫn có một máy chủ db đơn).

Kể từ bộ nhớ cache đã được lưu trữ trên máy chủ web trước đây, bây giờ nó sẽ có vẻ như tôi có 2 bộ nhớ đệm song song trên mỗi máy chủ web mà mình có thể không được đồng bộ và có thể gây ra các bản cập nhật ngày vv

gì là giải pháp tốt nhất để có được những lợi ích của bộ nhớ đệm tôi đã có trước đây nhưng cũng tận dụng khả năng phục hồi của cân bằng tải máy chủ web được cung cấp với thiết lập mới này?

Trả lời

8

Ayende blogged về mức sử dụng bộ nhớ cache cấp 2 trong NHibernate. Bạn sẽ cần phải sử dụng bộ nhớ cache được phân phối trong một kịch bản trang trại. Ví dụ SysCache2 (dựa trên bộ nhớ cache ASP.NET và có thể được cấu hình để sử dụng một nhà cung cấp phân phối) hoặc MemCache. Dưới đây là an article minh họa cách bạn có thể định cấu hình memcached.

+0

cảm ơn các liên kết vì chúng là các bài viết tuyệt vời. Tôi vẫn còn một vài câu hỏi. 1. Bộ đệm này nên chạy ở đâu (trên một trong các máy chủ web hoặc tôi cần một máy chủ khác cho bộ nhớ đệm này). Nếu nó phải là một máy khác, không phải là điều này sẽ được chậm hơn cho tôi bây giờ cần một hop mạng để đạt được bộ nhớ cache? – leora

+0

@ooo, lý tưởng là một máy khác có nhiều bộ nhớ. Bạn cũng có thể sử dụng máy chủ web của bạn nhưng nói chung nó không được khuyến cáo. –

+0

những gì về điểm về việc có thêm một hop mạng để có được bộ nhớ cache (so với được trên cùng một máy). Ngoài ra, nên rằng máy mới chỉ được dành riêng để trở thành một máy bộ nhớ cache. – leora

1

Vâng tôi đã sử dụng memcached và nó hoạt động như một say mê. Bạn có thể phải tinh chỉnh kích thước của bộ nhớ cache nhưng khác với nó là rắc rối-miễn phí. Thiết lập nút ghi nhớ trên mỗi nút máy chủ web và duy trì cấu hình đó khi bạn thêm các nút