Memcached với Windows và .NET


83

Có ai đã triển khai memcached để sử dụng sản xuất trong môi trường Windows không? Bởi vì nhiều blog mà tôi đã đọc, không nên chạy memcached trong Windows, đặc biệt là để sử dụng trong sản xuất, ví dụ như chạy memcached trên windows .

Và một điều nữa, ứng dụng khách memcached nào tốt để sử dụng với c # và .net 3.5? Tôi đã tìm thấy nhiều nhà cung cấp thay thế như Memcached Providers @ Codeplex , Beitmemcachedmemcached provider @ Sourceforge


6
Bạn đang trỏ đến một bài đăng trên blog năm 2008. Memcached đang trở thành khá thân thiện trên cửa sổ thời gian gần đây: northscale.com
Dustin

1
+1 cho Dustin. Chúng tôi đã và đang sử dụng NorthScale và khá thân thiện với windows, với giao diện người dùng quản trị (web) đẹp mắt
ram

2
@Dustin và @ram - Dustin, hãy tận hưởng +1 của bạn nhưng câu hỏi này đã được hỏi vào năm 2008.
Justin

3
Heh. Đó phải là những gì mà '08 là ở đó. Xin lỗi vì điều đó. :)
Dustin

Câu trả lời:


49

Tại sao bạn cần chạy memcached trên windows? Đó là một việc tốn kém trong môi trường sản xuất.

Nếu mã của bạn cần chạy trong môi trường Windows, hãy lấy một máy khách Windows memcached và nói chuyện với một máy memcached dựa trên * nix.

Trong môi trường sản xuất chạy memcached trên Server 2003 hoặc 2008 có nghĩa là bạn nhận được giấy phép cho tất cả các hộp đó. Linux sẽ cung cấp cho bạn tất cả các lợi ích của PMNM. TCO sẽ tăng tuyến tính với memcached trên Windows

Biên tập:

Đã khoảng 1,5 năm kể từ khi tôi viết câu trả lời này và rất nhiều thứ đã thay đổi kể từ đó. Bạn phải chú ý, đặc biệt là khi ai đó như Dustin nhận xét.
Vì vậy, đây là cách bạn có thể tải memcached trên các cửa sổ đang chạy. Tải xuống memcached cho windows từ Couchbase (trước đây là Northscale) .
Thông thường, nếu bạn định chạy memcached trên cùng một máy sản xuất, bạn muốn khởi động nó trong bộ nhớ hạn chế, tức là xác định bộ nhớ tối đa mà memcached được phép sử dụng.

c: \ Program Files \ memcached> memcached.exe -m 128.

Ở đây memcached chạy với mức sử dụng tối đa 128 MB. Bạn không muốn memcached chiếm hết bộ nhớ trên máy chủ web của mình.

Thời điểm bạn quyết định mở rộng quy mô bản ghi nhớ, bạn sẽ cần xem xét những gì tôi đã nói trước đó. Ngoài ra, hãy nén các giá trị của bạn trong các tổ hợp giá trị khóa. Các máy chủ web thường sử dụng rất ít CPU (2-3%) và việc nén mang lại rất nhiều giá trị cho mạng xuyên suốt so với việc sử dụng CPU. Nếu bạn quá lo lắng về việc nén thông thường, hãy thử LZO


2
Cảm ơn câu trả lời của bạn, đây là những gì tôi đang tìm kiếm.
Funky81 10/12/08

31
Làm thế nào để TCO tăng theo cấp số nhân trên Windows? Chi phí cấp phép tăng tuyến tính với số lượng máy móc. Nhưng khi bạn tính đến chi phí phần cứng, không gian rack & điện, hợp đồng hỗ trợ và tiền lương của nhà điều hành, chi phí cấp phép của Windows là khá thấp.
Greg Beech

23
Chỉ để thêm một phản bác cho lập luận của Cherian. Một yếu tố thúc đẩy việc muốn lưu trữ trong windows có thể là chuyên môn về sysadmin. Ví dụ: các cửa hàng nhỏ hơn không có đủ tài nguyên để thuê quản trị viên * nix chỉ để mang đến một hộp memcached có thể được lợi rất nhiều từ việc lưu trữ trên nền tảng mà công ty đã thành thạo (tức là Windows).
Joel Martinez

2
Tôi sẽ DV câu trả lời này vì nó thực sự không giải quyết bất cứ điều gì OP hỏi tuy nhiên anh ấy nói rằng đây cụ thể là những gì anh ấy đang tìm kiếm.
Chris Marisic,

11
Bị phản đối vì nó không giải quyết được câu hỏi thực tế. Nếu nó giải quyết được vấn đề của OP, có lẽ câu hỏi nên được viết lại?
sh-beta

21

Tôi ngạc nhiên là không ai ở đây chưa đề cập đến Redis - nó là một trong những kho dữ liệu giá trị khóa giàu tính năng nhất và nhanh nhất (110.000 SET mỗi giây trên hộp linux cấp nhập cảnh) với hỗ trợ cấu trúc dữ liệu phong phú cho chuỗi tập hợp, danh sách, tập hợp được sắp xếp và băm.

Mặc dù windows không phải là nền tảng được hỗ trợ chính thức, nhưng nó chạy hoàn hảo dưới windows với tất cả các bài kiểm tra đều vượt qua. Tôi có các bản dựng cửa sổ (sử dụng Cygwin) tại đây: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

Nó cũng có các ràng buộc máy khách cho hầu hết mọi ngôn ngữ lập trình đang được sử dụng ngày nay. Tôi duy trì một ứng dụng khách C # Redis Mã nguồn mở phong phú với hỗ trợ API gốc cho bất kỳ loại C # POCO nào, hỗ trợ giao dịch và trình quản lý khách hàng an toàn theo chuỗi sẵn sàng đưa vào bất kỳ IOC nào tại: https://github.com/ServiceStack/ServiceStack. Redis


12

Vì Velocity chưa tồn tại vào thời điểm đó, tôi đã sử dụng một cổng memcached vào Windows cho công ty mà tôi làm việc, Skiviez. Nó chủ yếu chỉ tồn tại để cung cấp một bộ đệm tập trung cho nhiều quy trình công nhân trên cùng một máy. Nó đã hoạt động tốt khoảng 18 tháng nay trên một trang web thương mại điện tử có mức sử dụng khiêm tốn (~ 18.500 lượt truy cập / ngày). Ứng dụng khách mà tôi sử dụng là Enyim được tích hợp làm nhà cung cấp bộ nhớ cache cho iBATIS.NET. Khách hàng đó dường như hoạt động đủ tốt; Các ứng dụng khách memcached cũng không quá phức tạp để bắt đầu.

Nếu phải làm lại, tôi có thể sẽ xem xét Velocity nếu tôi cam kết duy trì trên Windows cho giải pháp bộ nhớ đệm phân tán của mình. Nhưng nó đang hoạt động nên tôi sẽ không đụng đến nó.

(Ngoài ra: Kể từ đó, tôi đã phủ nhận hầu hết nhu cầu về bộ nhớ cache bằng cách thêm một số Cache*cột nhất định vào các bảng chính trong cơ sở dữ liệu được cập nhật bởi một tác vụ đã lên lịch vào mỗi buổi tối. Điều này giúp giảm bớt sự căng thẳng cho tài nguyên xung quanh, ngay từ ban đầu đạt được thời gian CPU bằng cách truy vấn cơ sở dữ liệu đến sự căng thẳng sau đó về tính khả dụng của bộ nhớ bằng cách giữ các kết quả được lưu trong bộ nhớ cache ở trong bộ nhớ cache. Nó cũng làm cho nó rõ ràng hơn nhiều trong mã khi một phiên bản được lưu trong bộ nhớ cache của dữ liệu đang được truy cập so với một tính toán phiên bản bay. Tôi chắc rằng bạn có rất nhiều lý do để sử dụng bộ nhớ cache phân tán, nhưng luôn đáng để bạn lùi lại một bước và đặt câu hỏi liệu bạn có thực sự cần nó hay không!)


Velocity hiện là một phần của AppFainst
Jon

7

Tôi không biết dự án bạn đang làm là gì, nhưng bạn có thể muốn xem qua dự án Microsoft Velocity Từ trang:

"Velocity" là một nền tảng bộ nhớ đệm ứng dụng trong bộ nhớ phân tán để phát triển các ứng dụng có khả năng mở rộng, hiệu suất cao. "Velocity" có thể được sử dụng để lưu vào bộ đệm bất kỳ đối tượng thời gian chạy ngôn ngữ chung (CLR) nào và cung cấp quyền truy cập thông qua các API đơn giản. Các khía cạnh chính của "Vận tốc" là hiệu suất bộ nhớ cache phân tán, khả năng mở rộng và tính khả dụng.

Tôi đã xem một vài bản demo và có vẻ như nó đã tích hợp rất tốt với .net framework.

Vấn đề với API của ứng dụng khách là bạn vẫn phải có một phiên bản memcached đang chạy trên một hộp khác ở đâu đó tốt hơn như bạn đã lưu ý, bằng cách sử dụng ngăn xếp LAMP. Sử dụng tốc độ có nghĩa là bạn sẽ vẫn chạy trên cùng một ngăn xếp và có sự tích hợp chặt chẽ hơn trên nền tảng .net.

Phải nói rằng, nếu bạn muốn sử dụng vận tốc làm bộ nhớ đệm cho các ứng dụng .net khác, bạn có thể thấy mình phải viết API của riêng mình để hiển thị dữ liệu vận tốc để tiêu thụ.


Theo như tôi biết, vận tốc vẫn đang được phát triển, đó là lý do tại sao tôi cố gắng tìm kiếm thay thế khác. Và đó là bản ghi nhớ
Funky81

sau khi tôi đọc một thời gian, lắp đặt vận tốc và bảo trì không phải là dễ dàng như memcached
Funky81

3
Sử dụng LAMP Stack? Ý bạn không phải là "sử dụng Linux" vì bạn không cần Apache, MySQL hoặc PHP để chạy memcached.
GateKiller

6

Velocity tham gia nhiều hơn một chút để quản trị, nhưng nó mạnh hơn rất nhiều so với memcached. Tôi không anti memcached, không phải là ít nhất, nó là tuyệt vời. Nhưng trong tương lai, các dự án mới dựa trên .NET thật điên rồ khi không tận dụng Velocity, ngay cả trong trạng thái chưa phát hành hiện tại của nó.


6

hãy xem SharedCache . mã nguồn mở của nó, dễ sử dụng và rất đáng tin cậy.

hiệu suất cao, hệ thống bộ nhớ đệm đối tượng bộ nhớ phân tán, về bản chất chung, nhưng nhằm tăng tốc web động và / hoặc giành chiến thắng các ứng dụng bằng cách giảm tải cơ sở dữ liệu. Đừng quên ghé thăm chúng tôi tại http://www.sharedcache.com


3

Vấn đề với API của ứng dụng khách là bạn vẫn phải có một phiên bản memcached đang chạy trên một hộp khác ở đâu đó tốt hơn như bạn đã lưu ý, bằng cách sử dụng ngăn xếp LAMP.

Không đúng chút nào. Ngăn xếp LAMP (Linux, Apache, MySQL, PHP) không cần thiết để chạy Memcached. Tôi hiện thích ghi nhớ hơn vận tốc cho đến khi vận tốc vượt ra khỏi CTP. Tôi đã chơi với tốc độ một chút nhưng thấy nó quá khó sử dụng. Tôi làm theo toàn bộ điều KISS đó, bạn biết đấy ... hãy giữ nó đơn giản. Không gì đơn giản hơn bộ nhớ đệm ... Lấy (khóa) ... Đặt (khóa, giá trị) ... Hủy (Khóa).



1

Tôi biết tôi đến bữa tiệc ở đây hơi muộn, và đã có rất nhiều câu trả lời hay.

Chúng tôi đã sử dụng Membase trên Windows Server rất thành công. Nó tương thích 100% với Memcached và có trình cài đặt GUI đẹp mắt và máy chủ cấu hình web xây dựng nó. Nó cực kỳ dễ quản lý.

Ngoài ra còn có các tính năng NoSQL khác được bao gồm, nằm ngoài phạm vi của chủ đề này, nhưng đáng xem xét. Họ có giấy phép miễn phí cho các máy chủ phát triển, thử nghiệm và sản xuất (có giới hạn).

Tải xuống Membase

Cũng trang đó có Cài đặt Windows chỉ dành cho Memcached, nếu bạn không muốn có bất kỳ tính năng bổ sung nào trong Membase.



0

Nếu bạn quan tâm đến việc chạy một ứng dụng khách memcached trên Windows thì có hai máy chủ mã nguồn mở bổ sung có thể thực hiện công việc. Cả hai đều triển khai giao thức máy chủ memcached tiêu chuẩn và được viết bằng Java để chúng chạy trên Windows.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.